Служба 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 при загрузке компьютера.