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

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

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

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