Нет DNS после установки wireguard + mullvad.

Вопрос или проблема

Я следовал этим инструкциям для установки 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-адресу? Попробуйте следующие тесты.

  1. В терминале попробуйте отправить ping на известный IP-адрес напрямую, например, ping 142.250.80.78 вместо www.google.com
  2. Может ли браузер подключиться к Google, введя 142.250.80.78 в адресной строке?

Если подключение по IP работает, то, вероятно, изменения заблокировали предыдущий DNS-резолвер. Настройте DNS резолвер на другого поставщика, например

или

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-адреса могут быть пингуемыми без проблем.

Существуют несколько сценариев, почему это может происходить:

  1. Неправильные записи DNS: Конфигурация могла перезаписать ранее настроенные DNS, указав в params неверные адреса DNS, или они попросту недоступны.

  2. Блокировка провайдером внешних DNS-серверов: Некоторые интернет-провайдеры запрещают использование сторонних DNS-серверов. Например, если вы пытаетесь использовать DNS Google или Cloudflare, ваш провайдер может этого не позволять.

  3. Ошибочная маршрутизация: При активации туннеля маршруты могли быть настроены неверно, и DNS-запросы направляются в ошибочную сеть.

  4. Конфликт IPv4/IPv6: Иногда активация туннеля по IPv4 может привести к невозможности работы DNS, в то время как подключение по IPv6 работает корректно.

Применение

Чтобы решить проблему, выполните следующие шаги:

  1. Проверка доступности IP: Попробуйте запустить ping на известный IP-адрес (например, 142.250.80.78 для Google). Если это работает, а доступ к доменам по именам нет, вероятно, проблема именно в DNS.

  2. Настройка DNS-серверов: Попробуйте вручную настроить известные работающие DNS-серверы, такие как Google DNS (8.8.8.8) или Cloudflare (1.1.1.1). Для этого вы можете отредактировать файл /etc/resolv.conf, добавив необходимые строчки или используя команду resolvconf.

  3. Изменение протокола соединения: Измените протокол соединения на IPv6 в расширенных настройках Mullvad, если он поддерживается вашим интернет-провайдером и настройками сети.

  4. Проверка и редактирование конфигурационного файла: Убедитесь, что в конфигурационном файле WireGuard правильно указаны DNS-серверы. Конфигурационный параметр DNS должен содержать корректные адреса серверов.

  5. Проверка блокировки DNS провайдером: Если возможно, уточните у провайдера, поддерживают ли они внешние DNS-серверы, или попробуйте использовать провайдерские DNS в конфигурации.

  6. Редакция сетевых правил: Проверьте, нет ли конфликтов в iptables или ip6tables, которые могут блокировать трафик DNS.

  7. Отключение и перезапуск: Если ничего не помогает, временно отключите WireGuard с помощью wg-quick down, убедитесь, что DNS работает без VPN, а затем снова выполните wg-quick up.

Эти шаги в большинстве случаев позволяют разобраться с проблемами DNS при использовании WireGuard и Mullvad. Убедитесь, что все изменения в конфигурациях производятся с учётом специфики вашей сети и провайдера.

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

Капча загружается...