Не работает vpn клиент wireguard windows 11
У меня есть сервер vpn wireguard который прекрасно работает. Я подключаюсь к нему из ubuntu 20.04 и со своего телефона на android. И там и там нет никаких проблем. Но есть проблема на windows 11. Там при подключении к впн просто пропадает интернет. Я пробовал скармливать те же самые конфиги что и ubuntu клиенту и андроид клиенту. Но оно не работает. Вообще никак. Так же я пробовал создавать нового юзера на сервере и скармливать его конфиг windows клиенту. Тоже не работает. Делаю ctrl+c ctrl+v Этого конфига на линукс и всё запускается с первой попытки. Из этого я сделал два вывода:
- Никаких проблем с сервером нет (иначе почему линукс и андроид клиенту отлично работают?)
- Никаких проблем с конфигом клиента так же нет. Потому что когда я скармливаю тот же самый конфиг линукс и андроид клиента то всё прекрасно работает.
Значит проблема исключительно с моим любимым майкрософтом и его виндой, у которого постоянно какие-то танцы с бубном. Конфиг который я вставляю в клиент:
[Interface]
PrivateKey = <private_key>
Address = 10.0.0.5/32
DNS = 8.8.8.8
[Peer]
PublicKey = <public_key>
AllowedIPs = 0.0.0.0/0
Endpoint = <server_ip>:51830
PersistentKeepalive = 20
Я пробовал отключать брандмауэр винды это никакого профита не принесло. Всё тоже самое. Антивирус только встроенный в винду. Его я тоже пробовал отключать тоже 0 профита. Так же эта проблема не связана с моим роутером. Т.к. линукс установлен на этом же компе и на этом же ssd диске, работает он так же через этот роутер и не имеет никаких проблем. Логи wireguard выглядят так:
2022-06-29 23:46:27.267: [TUN] [myvpn] Sending handshake initiation to peer 1 (<server_ip>:51830)
2022-06-29 23:46:32.428: [TUN] [myvpn] Handshake for peer 1 (<server_ip>:51830) did not complete after 5 seconds, retrying (try 2)
2022-06-29 23:46:32.428: [TUN] [myvpn] Sending handshake initiation to peer 1 (<server_ip>:51830)
2022-06-29 23:46:37.437: [TUN] [myvpn] Sending handshake initiation to peer 1 (<server_ip>:51830)
2022-06-29 23:46:42.515: [TUN] [myvpn] Handshake for peer 1 (<server_ip>:51830) did not complete after 5 seconds, retrying (try 2)
2022-06-29 23:46:42.515: [TUN] [myvpn] Sending handshake initiation to peer 1 (<server_ip>:51830)
При этом сам клиент пишет что всё ок и соединение активно. То что что-то не так становится понятно только по логам и по тому что нет интернета. В логах он жалуется что не получает ответа от сервера. Но я на 99% уверен что запросы клиента даже не доходят до сервера благодаря винде и где-то теряются во всяких брандмауэрах (хотя я его отключил, непонятно что ещё может быть). Так же заметил интересную особенность. После активации тоннеля адаптер создаётся, но там почему-то написано, что у него нет доступа к интернету.
Не знаю должно ли так быть в винде. Но это странно, ведь весь трафик после активации через этот адаптер отправляется. А как он отправится если у него нет доступа к инету?
route print выводит это (при включенном тоннеле):
C:\Windows\system32>route print
===========================================================================
Список интерфейсов
18...........................WireGuard Tunnel
10...40 b0 76 0d a7 4d ......Realtek PCIe GbE Family Controller
1...........................Software Loopback Interface 1
===========================================================================
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.69 35
0.0.0.0 128.0.0.0 On-link 10.0.0.5 5
10.0.0.5 255.255.255.255 On-link 10.0.0.5 261
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 10.0.0.5 261
128.0.0.0 128.0.0.0 On-link 10.0.0.5 5
192.168.0.0 255.255.255.0 On-link 192.168.0.69 291
192.168.0.69 255.255.255.255 On-link 192.168.0.69 291
192.168.0.255 255.255.255.255 On-link 192.168.0.69 291
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.0.69 291
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.0.69 291
===========================================================================
Постоянные маршруты:
Отсутствует
Ответы (7 шт):
Вам нужно отключить и остановить службу win Маршрутизация и удаленный доступ. Мне помогло
Идем на сайт создателя приложения и скачиваем msi инсталер на выбор есть три варианта, ARM, x86 и x64 скачиваем ту версию которую поддерживает ваш процессор. Мне помог x64 так как у меня обычный современный пк. ARM архитектура обычно есть только на мобильных процессорах телефоны итп.
Я также столкнулся с аналогичной проблемой и решение оказалось довольно простым. Создайте новый пир для компа. Если вы уже используете один пир на телефоне, то он не хочет работать на винде.
Мне помогла смена DNS серверов в конфиге. Поставил от cloudflare 1.1.1.1 и 1.0.0.1
Если вопрос еще актуальный, то необходимо сделать следующее.
Проблема на стороне Windows, на котором установлен Wireguard в качестве сервера.
Вот отличная полная инструкция для настройки: https://www.henrychang.ca/how-to-setup-wireguard-vpn-server-on-windows/
Отмечу лишь суть данной проблемы:
- По умолчанию, когда включен общий доступ к Интернету (NAT), Windows изменит IP-адрес адаптера на что-то другое (во избежание конфликтов). Однако мы уже знаем, какой IP-адрес мы хотим использовать для Wireguard Server (заданный в блоке [interface] в нашей конфигурации wireguard). Чтобы изменить IP-адрес по умолчанию, на который переключится Windows, мы можем просто изменить настройку в реестре. Откройте редактор реестра и перейдите по следующему пути:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SharedAccess\Parameters
Затем просто измените ScopeAddress и StandaloneDHCPAddress на нужный нам IP-адрес (Который прописан в [interface] Wireguard-Сервера).
- После того, как прописан IP в реестре, запустите снова Общий доступ к интернету. В PowerShell с правами администратора выполните
Set-NetConnectionSharing "wg_server" $true
где "wg_server" - Наименование Вашего Wireguard-сервера.
Еще обратите внимание, что после перезагрузки, все это может слетать. В инструкции по ссылке, есть от этого средство.
Спустя время я переустановил windows. Пробовал на 10 и на 11 винде, оно не работало. Но вдруг несколько раз включив и выключив туннель на клиенте при очередном включении произошло рукопожатие... Теперь оно работает и рукопожатие происходит всегда, даже после перезагрузки windows. Я так и не понял в чём была проблема. Подозреваю что клиент wireguard на windows всё-таки имеет какие-то проблемы и баги
мне помогло в AllowedIps разделить подсеть 0.0.0.0/0 на две: 0.0.0.0/1 и 128.0.0.0/1
