Служба 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 -NoProfile -ExecutionPolicy Bypass -File «C:\Example.ps1»
у меня подобная конструкция сработала, но ещё принудительно менял: > Set-ExecutionPolicy Bypass -Scope Process
запуск должен быть такой:
PowerShell.exe -ExecutionPolicy Bypass «путь\скрипт»
Почему то теперь после добавления ключа EnableRebootPersistConnection типа DWORD в ветке HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess со значением 1 и установлением автоматического запуска для службы Internet Connection Sharing ( SharedAccess ) стало когда с удалённого компа через другой интерфейс (Ethernet RJ-45), который не расшаренный, подключаешься через RemoteDesktop и подключаешь расшаренный интерфейс ( WiFi) к точке доступа WiFi , то отваливается Удалённый рабочий стол, но при этом c удалённого компа пинги проходят в интернет и порт 3389 открыт на интерфейсе (Ethernet RJ-45).
(Radmin также стал отваливаться).
Но если убрать общедоступность на интерфейсе ( WiFi), то на интерфейсе (Ethernet RJ-45) IP-адрес меняется на Автонастройка IPv4-адреса . . . . : 169.254.161.213 и если также на удалённом компе обновить ipconfig /renew на Autoconfiguration IP Address. . . : 169.254.167.175, то снова можно соединиться через RemoteDesktop и пользоваться интернетом через интерфейс ( WiFi) .
Однако, при такой конфигурации уже с c удалённого компа пинги не проходят в интернет . То есть Служба ICS при этом перестаёт выполнять функцию трансляции сетевых адресов (NAT) .
В итоге получилось, что теперь вообще ни при каком раскладе одновременно не работает доступ в интернет и RemoteDesktop на клиентском компьютере удалённого рабочего стола .
Хотя раньше этого можно было добиться, если снять и повторно включить галку общего доступа в свойствах расшаренного интерфейса ( WiFi).
Подскажите пожалуйста в чём проблема
Попробуйте для Ethernet интерфейса задать статический IP адрес. Это возможно?
Ну во первых когда расшариваешь другой интерфейс, в моём случае WiFi, то на другом, в моём случае Ethernet ip конфигурация и так автоматом становится статическая такого вида: 192.168.137.1 с маской 255.255.255.0.
Ну и во вторых, если после автоматического частного адреса 169.254.167.175 на Ethernet интерфейсе, который автоматом становится после снятия галочки общедоступности на интерфейсе WiFi , после перезагрузки на интерфейсе Ethernet автоматом становится опять конфигурация статическая такого вида: 192.168.137.1 с маской 255.255.255.0.
Таким образом возможно пользоваться что с частным адресом, что и с 192.168.137.1 через RemoteDesktop как бы на шлюзовом компе с клиентского компа, но на самом клиентском прямого пинга в инет не будет.
А если опять расшарить на щлюзе WiFi, то на клиентском появится прямой пинг в инет и пинг на шлюз будет естественно, но возможность пользоваться RemoteDesktop c клиентского на шлюз пропадёт.
Вот такая альтернативная байда.
Либо так, либо этак. Но одновремено не в какую теперь, причём даже после удаления ключа реестра EnableRebootPersistConnection не удаётся вернуть в исходное состояние, когда можно было раньше после перезагрузки шлюза снимая и ставя галочку расшаривания на WiFi интерфейсе добиться одновременного использования на клиентском компе и доступа в инет и по RemoteDesktop заходить на шлюз
Доброго времени суток!
Удалось решить проблему?
У меня проблема такая. Когда ставлю галочку общего доступа к инету, то на компе, который раздаёт инет, этот инет перестаёт работать, хотя сайты пингуются. На другом компе, который подключается через первый, инет есть. Не могу понять в чем проблема?
Странно.. тут нужна диагностическая информация командами:
nslookup site.ru
ping site.ru
tracert site.ru
может что видно будет
Проблему решил удалив обновление KB5014699.
Извините уважаемый, но при запуске скрипта выходит постоянно ошибка:
e:\>PowerShell.exe -ExecutionPolicy Bypass ReStart.ps1
ReStart.ps1 : Имя «ReStart.ps1» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ ReStart.ps1
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (ReStart.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Что я делаю не так? Прошу подсказать
Запускайте так:
powershell.exe -ExecutionPolicy Bypass -File C:\ReStart.ps1
Запускаю командой PowerShell.exe -ExecutionPolicy Bypass -File %CD%\ReStart.ps1
Теперь исполнение проходит, но возникает новая — скрипт не работает!
Ну точнее по-барабану, ничего не происходит на моем компьютере. Галочка как стояла, так и стоит, а шаринга интернета нет.
Меня почему эта тема вообще заинтересовала:
1.Мост с Wi-Fi адаптерами не работает из-за ограничения стандарта 802.11 (Wi-Fi) по сравнению со стандартом проводного эвернета.
2.ICS вроде бы как должен работать, и более того, скриптом:
@ECHO OFF
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\SharedAccess" /v EnableRebootPersistConnection /t REG_DWORD /d 1 /f > NUL
SC CONFIG SharedAccess start= Auto > NUL
SC START SharedAccess > NUL
я добился того, что служба ICS работает при перезагрузке и выходе из спящего режима, НО! Работать то она работает, но интернет не раздает. Простая перезагрузка — и интернет раздается. Вот и нужен мне какой то переключетель-освежитель мозгов, чтобы не перезагружая первый комп, на втором при выводе из сна обоих, интернет был на втором.
Сначала убедитесь, что скрипт работае корректно и подключение восстанвливается, когда запускаете руками из консоли POwerShell ISE. После этого копайте авматотизацию.
Этот скрипт не в PowerShell запускается, это стандартный командный BAT-файл.
И я уже подробно описал, что скрипт работает и команды выполняются успешно, ICS нет после выхода из спящего режима.
Если выполнить скрипт из статьи руками при выходе из сна, ICS начинает работать? Если — да можно привязать его к событию выхода из сна и запускать автоматом.
Нет, не работает, уже писал об этом.
Добрый день, спасибо, помогло, прописал в реестре параметр и выставил службу на автоматический запуск. Перезапуск показал активность раздачи, работает. На сайте Microsoft предложено такое же решение : «ICS doesn’t work after computer or service restarts in Windows 10»
Большое спасибо Вам! Данные в ОФД стали уходить (по средствам RNDIS).
Благодарю, статья помогла.
Параметр EnableRebootPersistConnection и настройка автозапуска службы.
Правда есть особенность/глюк W10, что он адрес карты второй сети ставит всегда 192.168.137.1
Пришлось ставить сторонний HDCP сервер, чтобы остальные пк получали верный адрес.
Автор, у тебя английская винда. Надо было бы написать название службы на русском.