Вопрос или проблема
Мой 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, что говорит о временной утрате корректных настроек.
Применение:
-
Настройка systemd-resolved:
Убедитесь, что systemd-resolved правильно настроен для работы с OpenVPN. Возможно, настройка DNS не сохраняется должным образом. Проверьте файл
/etc/systemd/resolved.conf
и убедитесь, что в нем верно прописан параметрDNSStubListener=no
, если это необходимо. -
Обновление NetworkManager:
Проверьте, какие DNS-серверы назначаются NetworkManager при подключении VPN. Это можно сделать, использовав команду
nmcli device show <ваш-интерфейс>
. Убедитесь, что VPN назначает правильные DNS-серверы. -
Скрипты up/down OpenVPN:
Можно использовать скрипты
up
иdown
, которые автоматически запускаются при установке или разрыве VPN-соединения, чтобы вручную прописывать нужные DNS каждые раз при переподключении. -
Диагностика сбоя:
Чтобы выявить, что именно провоцирует сбой, используйте команды
journalctl -u systemd-resolved
иjournalctl -u NetworkManager
, которые помогут узнать, что именно происходит в момент потери DNS.
Стабильность разрешения DNS через VPN может зависеть от многих факторов, включая версии ПО, настройки сети и индивидуальное окружение. Указанные рекомендации помогут добиться лучшей стабильности и надежности в работе вашего VPN-соединения на Ubuntu 22.04.