(РЕШЕНО) Общий доступ к подключению к Интернету пропадает при перезагрузке (Windows 10)

Допустим есть онлайн касса, которая подключается по 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. А в этом случае ошибки нет.

А тут я описал как этот скрипт можно запускать при включении компьютера.

Это костыль, однако вариантов решения проблем с созданием бриджа и пропаданием интернета я пока не нашёл.

(РЕШЕНО) Общий доступ к подключению к Интернету пропадает при перезагрузке (Windows 10): 3 комментария

    1. Андрей

      есть еще вариант, мне помог вот этот:
      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 тоже влияет на общий доступ к кассе.

  1. Алексей

    создать параметр DWORD32 в реестре по пути:
    Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedAccess

    EnableRebootPersistConnection = 1

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *