Служба Internet Connection Sharing (ICS) в Windows позволяет предоставить общий доступ к интернет подключению на вашем компьютере другим компьютерам в локальной сети (через Wi-Fi или Ethernet). Благодаря этому все компьютеры в локальной сети могут выходить в Интернет через интернет подключение на одном компьютере (компьютер может быть подключен к интернету: через 4G/LTE модем, прямое кабельное подключение через второй сетевой адаптер, спутниковое подключение, PPPoE, VPN подключение и т.д.). В этом случае данный компьютер Windows с двумя сетевыми интерфейсами, подключенными к разным сетям, будет выступать в качестве шлюза для доступа в Интернет других компьютеров. Служба ICS при этом выполняет функции трансляции адресов (NAT) и DHCP сервера.
Общий доступ к сетевому подключению в Windows включается в свойствах сетевого адаптера на вкладке Доступ -> Общий доступ к подключению к Интернету -> Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера (Allow other network users to connect through this computer’s Internet connection).
В современных билдах Windows 10 есть один неприятный недостаток – после перезагрузки компьютера с общим сетевым подключением, у других компьютеров в локальной LAN/Wi-Fi сети пропадает доступ в Интернет.
Дело в том, что в современных билдах Windows 10, если через общее сетевое подключение не идет трафик, то служба Internet Connection Sharing отключается через 4 минуты, и не перезапускается автоматически.Чтобы восстановить общий доступ к Интернету, нужно снять и еще повторно включить галку общего доступа в свойства сетевого адаптера, через который Windows подключена к Интернету.
Чтобы служба общего доступа к интернету автоматически включалась после перезагрузки Windows 10, нужно включить специальный параметр реестра EnableRebootPersistConnection типа DWORD в ветке HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess и значением 1.
Проще всего создать параметр реестра следующей командой PowerShell:
New-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\SharedAccess -Name EnableRebootPersistConnection -Value 1 -PropertyType dword
Затем нужно установить автоматический запуск для службы Internet Connection Sharing (
SharedAccess
). Можно изменить тип запуска службы с Manual на Automatic через консоль services.msc или с помощью PowerShell:
Set-Service SharedAccess –startuptype automatic –passthru
Запустите службу:
Start-Service SharedAccess
Также вы можете использовать следующий PowerShell скрипт, который находит на компьютере все сетевые подключения с включенным общим доступом, отключает для них общий доступ и через секунду включает его.
$NetShareObject = New-Object -ComObject HNetCfg.HNetShare
$list = New-Object System.Collections.Generic.List[System.Object]
foreach( $connection in $NetShareObject.EnumEveryConnection ){
$config = $NetShareObject.INetSharingConfigurationForINetConnection( $connection )
if( $config.SharingEnabled -eq 1 ){
$type = $config.SharingConnectionType
$list.Add( @($type,$config) )
$config.DisableSharing( )
}
}
Start-Sleep 1
foreach( $array in $list ){
$array[1].EnableSharing($array[0])
}
Этот PowerShell скрипт можно запускать автоматически через задание планировщика Windows при загрузке компьютера.
Интересно. Спасибо за EnableRebootPersistConnection
Может пригодиться.
Больше одного интерфейса еще не пробовал расшарить.
Взял Ваш PowerShell скрипт, который находит на компьютере все сетевые подключения с включенным общим доступом, отключает для них общий доступ и через секунду включает его. Отлично работает, но только при условии запуска вручную от имени администратора. Если добавляю его в планировщик задач — выполняется без ошибок, но не срабатывает. Доменная сеть, Windows 10. Пытался выставлять запуск от имени Администратора домена и от имени Системы — не срабатывает. UAC отключал. Направьте, в каком направлении копать?
запуск должен быть такой:
PowerShell.exe -ExecutionPolicy Bypass «путь\скрипт»