Система “забывает” DNS через некоторое время во время использования VPN.

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

Мой OpenVPN настроен через Network Manager на Ubuntu 22.04 Desktop для использования локального DNS. После подключения к VPN, nslookup для доменных имен локальной сети работает нормально. Но спустя случайное время начинают возникать сбои.

Server: 127.0.0.53 Address: 127.0.0.53#53

** server can’t find <local.domain>: NXDOMAIN

Переподключение к VPN решает проблему, но раздражает во время активных SSH-сессий.

Server: 127.0.0.53

Address: 127.0.0.53#53

Non-authoritative answer:

Name: <local.domain>

Address: < ip address>

$ cat /run/systemd/resolve/stub-resolv.conf/etc/resolv.conf)
всегда отображает 127.0.0.53, но $ cat /run/systemd/resolve/resolv.conf отображает пользовательский DNS.

Что может быть причиной того, что система забывает/перезаписывает настройки DNS?

Ответ или решение

Ваша проблема связана с настройками DNS в контексте использования OpenVPN на Ubuntu 22.04. Давайте разбираться.

Теория:

Вы столкнулись с ситуацией, когда после успешного подключения к VPN в течение какого-то времени разрешение DNS работает корректно. Однако спустя случайное количество времени происходит так называемое "забывание" DNS, и вы получаете ошибку NXDOMAIN при попытке обратиться к локальным доменам. Проблема, скорее всего, кроется в работе systemd-resolved — сервиса, отвечающего за разрешение имен в Ubuntu.

Когда вы подключаетесь через OpenVPN, система настраивает резолвер для использования определенных DNS-серверов, необходимых для доступа к ресурсам в вашей локальной сети. Однако, иногда может возникать ситуация, когда сеть испытывает кратковременные сбои или изменения, которые заставляют systemd-resolved "забывать" эти настройки и возвращаться к другим DNS-серверам, например, тем, которые используются по умолчанию.

Пример:

Ваши файлы конфигурации указывают на использование 127.0.0.53 как адреса DNS-сервера. Это указывает на использование systemd-resolved, который работает как локальный кэширующий DNS сервер. Однако, когда вы проверяете файл /run/systemd/resolve/resolv.conf, вы видите, что в нем прописан другой DNS-сервер, отличный от 127.0.0.53, что говорит о временной утрате корректных настроек.

Применение:

  1. Настройка systemd-resolved:

    Убедитесь, что systemd-resolved правильно настроен для работы с OpenVPN. Возможно, настройка DNS не сохраняется должным образом. Проверьте файл /etc/systemd/resolved.conf и убедитесь, что в нем верно прописан параметр DNSStubListener=no, если это необходимо.

  2. Обновление NetworkManager:

    Проверьте, какие DNS-серверы назначаются NetworkManager при подключении VPN. Это можно сделать, использовав команду nmcli device show <ваш-интерфейс>. Убедитесь, что VPN назначает правильные DNS-серверы.

  3. Скрипты up/down OpenVPN:

    Можно использовать скрипты up и down, которые автоматически запускаются при установке или разрыве VPN-соединения, чтобы вручную прописывать нужные DNS каждые раз при переподключении.

  4. Диагностика сбоя:

    Чтобы выявить, что именно провоцирует сбой, используйте команды journalctl -u systemd-resolved и journalctl -u NetworkManager, которые помогут узнать, что именно происходит в момент потери DNS.

Стабильность разрешения DNS через VPN может зависеть от многих факторов, включая версии ПО, настройки сети и индивидуальное окружение. Указанные рекомендации помогут добиться лучшей стабильности и надежности в работе вашего VPN-соединения на Ubuntu 22.04.

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

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