(РЕШЕНО) Общий доступ к подключению к Интернету пропадает при перезагрузке (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): 12 комментариев

    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

  2. Денис

    Всем привет! Спасибо за подсказочку!
    Снимать вручную и ставить галочку раз месяц тоже решение проблемы:)
    Но так гораздо лучше!

  3. Navi

    Хороший скрипт, спасибо помог. Но как убрать окошко об успешном выполнении скрипта. с кнопкой ок.

  4. Александр

    1. Создать параметр DWORD32 (и для 64 bit) в реестре по пути:
    Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\SharedAccess
    EnableRebootPersistConnection = 1

    2.Службы
    Общий доступ к подключению к Интернету (ICS)
    Обязательно поставить (если не стоит) Тип запуска: АВТОМАТИЧЕСКИ
    3. Перезагрузиться

      1. Francisk_Rae

        Я сегодня настраивал, на самой свежей десятке 20H2, у меня заработало когда сделал как написано здесь:
        https://support.microsoft.com/ru-ru/help/4055559/ics-doesn-t-work-after-computer-or-service-restart-on-windows-10

        Читал об этой проблеме два дня, вообще в шоке как многие с ней столкнувшиеся что оно не работает так же как в семерке, и что завсе эти годы мелкомягкие максимум что пожелали сделать это сообщить какой параметр в реестре надо включить, а могли бы сделать чтоб работало по умолчанию или хотя бы чекбокс для этого параметра в настройках предусмотреть для обычных юзеров.
        А в сети там где обычно ищют решения таких проблем, на всяких киберфорумах ответах мейл ру, и тд до сих пор в тех темах где подымался вопрос — ответа нет либо так же костыль с скриптом и планировщиком заданий… поэтому вношу свой вклад, отпишусь хотя бы здесь 😉 Рас уж без реги можно отписать коммент 😉

  5. Propretor

    А мне вот не помогло! После вывода раздающего интернет компьютера из сна интернета нет втором, хотя службы работает. После перезагрузки раздающего интернет на втором появляется. Как сие победить?

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

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