Допустим есть онлайн касса, которая подключается по USB к компьютеру и работает в режиме RNDIS, т.е. должна подключаться к интернету через виртуальный сетевой адаптер. Для этого нужно или объединить адаптеры в бридж, или открыть общий доступ к подключению к интернету в свойствах основного подключения на компьютере. Первый способ после обновления 10-ки до версии 1803 работать перестал — при создании бриджа на компьютере пропадает интернет (если кто-то знает решение — прошу отписаться).
Рассмотрим второй способ. Заходим в свойства основного физического адаптера на компьютере, вкладка Доступ, ставим галочку «Разрешить другим пользователям сети …».
Затем нажимаем «Настройка», и добавляем службу, которая должна быть доступна на нашей онлайн-кассе например если к ней нужно обращаться с сервера. В нашем случае это порт 7778, внутренний IP кассы мы установили заранее через драйвер самой кассы — это адрес 192.168.137.111.
В свойствах виртуального сетевого адаптера нужно установить ip-адрес 192.168.137.1 (если он автоматически не установится при открытии общего доступа).
Прописываем всё это, закрываем — вроде всё работает, телнетом можем проверить подключение с сервера к кассе на порт 7778 через IP адрес компьютера:
telnet 192.168.215.158 7778
где 192.168.215.158 — ip компьютера в локальной сети.
Однако при перезагрузке общий доступ пропадает, и если зайти в сетевые подключения, на виртуальном адаптере видим «Неопознанная сеть». Помогает снятие и установка галочки доступа, которую мы ставили на первом шаге при настройке. Делать это вручную при каждой перезагрузке совсем неудобно, поэтому можно создать powershell скрипт для автоматического запуска.
Вот текст скрипта:
# Register the HNetCfg library (once) regsvr32 hnetcfg.dll $m = New-Object -ComObject HNetCfg.HNetShare $m.EnumEveryConnection |% { $m.NetConnectionProps.Invoke($_) } $c1 = $m.EnumEveryConnection |? { $m.NetConnectionProps.Invoke($_).Name -eq "Ethernet" } $c2 = $m.EnumEveryConnection |? { $m.NetConnectionProps.Invoke($_).Name -eq "Ethernet 2" } $config1 = $m.INetSharingConfigurationForINetConnection.Invoke($c1) $config2 = $m.INetSharingConfigurationForINetConnection.Invoke($c2) $config1.DisableSharing() $config2.DisableSharing() # argument: 0 - public, 1 - private $config1.EnableSharing(0) $config2.EnableSharing(1)
Здесь Ethernet — название основного физического адаптера, Ethernet 2 — виртуальный адаптер, который должен получить доступ в интернет через компьютер.
В последних строчках скрипта запрещается и снова разрешается общий доступ для обоих адаптеров. Если это сделать только для одного (основного), то у меня возникала ошибка 0x80040201. А в этом случае ошибки нет.
А тут я описал как этот скрипт можно запускать при включении компьютера.
Это костыль, однако вариантов решения проблем с созданием бриджа и пропаданием интернета я пока не нашёл.
неужели нету более нормального варианта ?
есть еще вариант, мне помог вот этот:
https://support.microsoft.com/ru-ru/help/4055559/ics-doesn-t-work-after-computer-or-service-restart-on-windows-10
в реестре по этому пути
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess
создать DWORD параметр EnableRebootPersistConnection с значением 1
перед этим еще дополнительно проверил что не только перезагрузка компьютера но и перезагрузка службы ICS тоже влияет на общий доступ к кассе.
создать параметр DWORD32 в реестре по пути:
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedAccess
EnableRebootPersistConnection = 1
Всем привет! Спасибо за подсказочку!
Снимать вручную и ставить галочку раз месяц тоже решение проблемы:)
Но так гораздо лучше!
Хороший скрипт, спасибо помог. Но как убрать окошко об успешном выполнении скрипта. с кнопкой ок.
1. Создать параметр DWORD32 (и для 64 bit) в реестре по пути:
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\SharedAccess
EnableRebootPersistConnection = 1
2.Службы
Общий доступ к подключению к Интернету (ICS)
Обязательно поставить (если не стоит) Тип запуска: АВТОМАТИЧЕСКИ
3. Перезагрузиться
не работает на свежей десятке
Я сегодня настраивал, на самой свежей десятке 20H2, у меня заработало когда сделал как написано здесь:
https://support.microsoft.com/ru-ru/help/4055559/ics-doesn-t-work-after-computer-or-service-restart-on-windows-10
Читал об этой проблеме два дня, вообще в шоке как многие с ней столкнувшиеся что оно не работает так же как в семерке, и что завсе эти годы мелкомягкие максимум что пожелали сделать это сообщить какой параметр в реестре надо включить, а могли бы сделать чтоб работало по умолчанию или хотя бы чекбокс для этого параметра в настройках предусмотреть для обычных юзеров.
А в сети там где обычно ищют решения таких проблем, на всяких киберфорумах ответах мейл ру, и тд до сих пор в тех темах где подымался вопрос — ответа нет либо так же костыль с скриптом и планировщиком заданий… поэтому вношу свой вклад, отпишусь хотя бы здесь 😉 Рас уж без реги можно отписать коммент 😉
Большущее спасибо!!!! Помогло!
Тоже помогло.
спасибо.
Скрипт помог, спасибо.
А мне вот не помогло! После вывода раздающего интернет компьютера из сна интернета нет втором, хотя службы работает. После перезагрузки раздающего интернет на втором появляется. Как сие победить?