Вопрос или проблема
Я следовал этим инструкциям для установки wireguard https://mullvad.net/en/help/easy-wireguard-mullvad-setup-linux
Я загрузил конфигурационные файлы и поместил их в /etc/wireguard/config
. Я выполнил команду
wg-quick up config_file_name
в каталоге /etc/wireguard/config
от имени root.
Мои выходные данные:
[#] ip link add ca-mtr-wg-004 type wireguard
[#] wg setconf ca-mtr-wg-004 /dev/fd/63
[#] ip -4 address add 10.70.65.136/32 dev ca-mtr-wg-004
[#] ip -6 address add fc00:bbbb:bbbb:bb01::7:4187/128 dev ca-mtr-wg-004
[#] ip link set mtu 1420 up dev ca-mtr-wg-004
[#] resolvconf -a ca-mtr-wg-004 -m 0 -x
[#] wg set ca-mtr-wg-004 fwmark 51820
[#] ip -6 route add ::/0 dev ca-mtr-wg-004 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev ca-mtr-wg-004 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n
Теперь я не могу получить доступ к интернету.
ping google.com
завершился ошибкой (сбой в разрешении имени).
При использовании веб-браузера я получаю ошибку DNS.
Команда рукопожатия wg
работает
interface: ca-mtr-wg-004
public key: <hidden by me>
private key: (hidden)
listening port: 48800
fwmark: 0xca6c
peer: <hidden by me>
endpoint: <hidden by me>
allowed ips: 0.0.0.0/0, ::/0
latest handshake: 4 seconds ago
transfer: 92 B received, 324 B sent
Но подключение к mullvad завершилось ошибкой:
root@pi:/etc/wireguard# curl https://am.i.mullvad.net/connected
curl: (6) Could not resolve host: am.i.mullvad.net
Что здесь может происходить?
Редактировать: также wg-quick down <...>
заставляет систему зависать
root@pi:/etc/wireguard# wg-quick down ca-mtr-wg-001
[#] ip -4 rule delete table 51821
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -4 rule delete table main suppress_prefixlength 0
Проблема в том, что разрешение DNS не работает, но вы можете подключиться по IP-адресу? Попробуйте следующие тесты.
- В терминале попробуйте отправить ping на известный IP-адрес напрямую, например,
ping 142.250.80.78
вместо www.google.com - Может ли браузер подключиться к Google, введя
142.250.80.78
в адресной строке?
Если подключение по IP работает, то, вероятно, изменения заблокировали предыдущий DNS-резолвер. Настройте DNS резолвер на другого поставщика, например
- Cloudflare (1.1.1.1)
или
- Google Public DNS (8.8.8.8)
N.B.
Некоторые интернет-провайдеры блокируют внешние DNS-резолверы. В местной публичной библиотеке мне пришлось настроить Автоматическое разрешение DNS, чтобы использовать интернет там.
Немного поздно к этому подключился, но добавлю свое решение на случай, если это может кому-то помочь: Изменение “Протокол подключения к серверу” на IPv6 в расширенных настройках на странице конфигурации Mullvad wireguard решило эту проблему для меня. Импортированный сгенерированный файл конфигурации из Network Manager работает отлично.
С IPv4 я никак не мог заставить разрешение DNS работать, будь то с использованием командной строки, Network Manager или их приложения для Linux ¯_(ツ)_/¯
.
Ответ или решение
Проблема, с которой вы столкнулись после установки WireGuard в связке с Mullvad, часто связана с неправильной настройкой DNS. DNS (Domain Name System) отвечает за преобразование доменных имен в IP-адреса, и если он не настроен должным образом, вы не сможете получить доступ к интернету через доменные имена, даже если туннель VPN функционирует корректно.
Теория
Основная задача WireGuard заключается в обеспечении защищенного туннелирования через интернет. Однако после подключения туннеля, маршрутизация трафика и разрешение DNS могут быть изменены, особенно если используются сторонние VPN, такие как Mullvad.
Ваша ситуация, в которой "ping google.com" не работает, но "wg" команда указывает на успешное рукопожатие, свидетельствует о том, что проблема связана именно с DNS. Если в конфигурационном файле WireGuard указаны не те DNS-серверы или они просто недоступны, это может препятствовать разрешению доменных имен.
Пример
Вы установили WireGuard и использовали конфигурации, предоставленные Mullvad. Команда wg-quick up
была выполнена успешно, и как мы видим из вывода, туннельное соединение установлено. Однако попытка пинга google.com заканчивается неудачей из-за невозможности разрешить доменное имя, в то время как IP-адреса могут быть пингуемыми без проблем.
Существуют несколько сценариев, почему это может происходить:
-
Неправильные записи DNS: Конфигурация могла перезаписать ранее настроенные DNS, указав в params неверные адреса DNS, или они попросту недоступны.
-
Блокировка провайдером внешних DNS-серверов: Некоторые интернет-провайдеры запрещают использование сторонних DNS-серверов. Например, если вы пытаетесь использовать DNS Google или Cloudflare, ваш провайдер может этого не позволять.
-
Ошибочная маршрутизация: При активации туннеля маршруты могли быть настроены неверно, и DNS-запросы направляются в ошибочную сеть.
-
Конфликт IPv4/IPv6: Иногда активация туннеля по IPv4 может привести к невозможности работы DNS, в то время как подключение по IPv6 работает корректно.
Применение
Чтобы решить проблему, выполните следующие шаги:
-
Проверка доступности IP: Попробуйте запустить
ping
на известный IP-адрес (например, 142.250.80.78 для Google). Если это работает, а доступ к доменам по именам нет, вероятно, проблема именно в DNS. -
Настройка DNS-серверов: Попробуйте вручную настроить известные работающие DNS-серверы, такие как Google DNS (8.8.8.8) или Cloudflare (1.1.1.1). Для этого вы можете отредактировать файл
/etc/resolv.conf
, добавив необходимые строчки или используя командуresolvconf
. -
Изменение протокола соединения: Измените протокол соединения на IPv6 в расширенных настройках Mullvad, если он поддерживается вашим интернет-провайдером и настройками сети.
-
Проверка и редактирование конфигурационного файла: Убедитесь, что в конфигурационном файле WireGuard правильно указаны DNS-серверы. Конфигурационный параметр
DNS
должен содержать корректные адреса серверов. -
Проверка блокировки DNS провайдером: Если возможно, уточните у провайдера, поддерживают ли они внешние DNS-серверы, или попробуйте использовать провайдерские DNS в конфигурации.
-
Редакция сетевых правил: Проверьте, нет ли конфликтов в iptables или ip6tables, которые могут блокировать трафик DNS.
-
Отключение и перезапуск: Если ничего не помогает, временно отключите WireGuard с помощью
wg-quick down
, убедитесь, что DNS работает без VPN, а затем снова выполнитеwg-quick up
.
Эти шаги в большинстве случаев позволяют разобраться с проблемами DNS при использовании WireGuard и Mullvad. Убедитесь, что все изменения в конфигурациях производятся с учётом специфики вашей сети и провайдера.