- Вопрос или проблема
- Ответ или решение
- Решение проблемы с DNS на Ubuntu 22.04 при использовании OpenVPN через NetworkManager
- Введение
- Проблема
- Признаки проблемы:
- Решение
- Установка resolvconf
- Изменение настроек NetworkManager
- Отключение systemd-resolved
- Настройка OpenVPN
- Проверка конфигурации
- Дополнительные рекомендации
- Заключение
Вопрос или проблема
Я использую Ubuntu 22.04. У меня есть OpenVPN для подключения к компании через NetworkManager в gnome.
Большинство внутренних систем работает, но, например, portal.azure.com имеет 2 DNS записи: публичную и частную зону. И когда я подключен к VPN, он должен использовать частную зону, в противном случае я блокируюсь брандмауэром и не могу ничего увидеть.
Я удалил символьную ссылку /etc/resolve.conf, чтобы вернуться к поведению по умолчанию, и когда я подключаюсь, я вижу, что серверы имен компании добавлены внизу:
nameserver 89.xxx.xxx.xxx
nameserver 89.xxx.xxx.xxx
# Слишком много настроенных DNS серверов, следующие записи могут быть проигнорированы.
search home company.xx
nameserver 10.xx.xx.xx
nameserver 10.xx.xx.xx
Это не дает мне доступа к частным данным на portal.azure.com.
Когда я меняю местами серверы имен, тогда это работает:
search home company.xx
nameserver 10.xx.xx.xx
nameserver 10.xx.xx.xx
nameserver 89.xxx.xxx.xxx
nameserver 89.xxx.xxx.xxx
Что я могу сделать, чтобы это работало автоматически или через systemd-resolved?
Если я открою /run/NetworkManager/no-stub-resolv.conf
, то я вижу правильный файл для /etc/resolv.conf:
# Сгенерировано NetworkManager
search company.xx home
nameserver 10.xx.xx.xx
nameserver 10.xx.xx.xx
nameserver 89.xx.xx.xx
# ЗАМЕТКА: резолвер libc может не поддерживать более 3 серверов имен.
# Серверы имен, перечисленные ниже, могут быть не распознаны.
nameserver 89.xx.xx.xx
Я мог бы заменить /etc/resolv.conf на версию от NetworkManager, но кажется, что это должно делать автоматически. Как я могу это исправить?
У меня заработало просто после установки resolvconf
на Ubuntu 22.04:
apt install resolvconf
Перезагрузка (не уверен, что это нужно) и DNS работает с использованием OpenVPN + Networkmanager.
Я сделал новую установку Ubuntu 22.04. На 16.04 все работало прекрасно.
Порядок DNS сейчас исправлен, я полагаю. На моей новой системе (xubuntu 22.04) кажется, что OpenVPN делает что-то странное.
В настройках маршрутизации OpenVPN я настраивал последнюю опцию:
Настройки маршрутизации OpenVPN
После установления соединения я могу использовать локальный поиск с помощью nslookup. При первой попытке все проходит нормально. Если я сделаю второй запрос, я получу ответ от публичного DNS сервера:
markus@Host:~$ nslookup localaddr
Сервер: 127.0.0.53
Адрес: 127.0.0.53#53
Неавторитетный ответ:
Имя: localaddr.fqdn.com
Адрес: 10.0.0.xxx
localaddr.fqdn каноническое имя = xxx.public.net.
markus@Host:~$ nslookup localaddr
Сервер: 127.0.0.53
Адрес: 127.0.0.53#53
Неавторитетный ответ:
localaddr.fqdn каноническое имя = xxx.public.net.
Имя: xxx.public.net
Адрес: 145.xx.xxx.xx
Я полагаю, это зависит от опции безопасного DNS или поведения кэша, которое нарушает это. После истечения времени TTL или с помощью sudo resolvectl flush-caches
я снова получу тот же ответ, что и выше.
Если у кого-то есть идея, дайте мне знать.
Попробуйте не использовать systemd и полагаться на NetworkManager:
$ sudo mv /etc/resolv.conf /etc/resolv.conf.systemd
$ sudo ln -s /run/NetworkManager/no-stub-resolv.conf /etc/resolv.conf
Проверьте это:
ls -la /etc/resolv*
lrwxrwxrwx 1 root root 39 дек 10 08:45 /etc/resolv.conf -> /run/NetworkManager/no-stub-resolv.conf
lrwxrwxrwx 1 root root 32 ноя 21 16:14 /etc/resolv.conf.systemd -> /run/systemd/resolve/resolv.conf
Ответ или решение
Решение проблемы с DNS на Ubuntu 22.04 при использовании OpenVPN через NetworkManager
Введение
Проблемы с разрешением DNS при использовании OpenVPN через NetworkManager на Ubuntu 22.04 могут значительно затруднить доступ к внутренним ресурсам компании, особенно когда на сервере DNS есть как публичные, так и частные зоны. В данной статье мы разберем, как решить проблему с автоматической настройкой DNS, чтобы система всегда использовала правильные DNS-серверы, предоставляемые OpenVPN.
Проблема
Как было указано в опыте пользователя, после подключения к VPN машина использует неправильные DNS-серверы, что приводит к невозможности доступа к таким ресурсам, как портал Azure. В результате, для корректной работы необходимо вручную изменять порядок серверов в /etc/resolv.conf
или заменять его содержимое.
Признаки проблемы:
- Имя сервера возвращает неверные значения после повторных запросов.
- Смена порядка DNS-серверов решает проблему, но требует ручного вмешательства.
Решение
Установка resolvconf
Пользователь, описавший свою проблему, упомянул, что установка пакета resolvconf
помогла ему автоматически настраивать DNS. Это простой, но эффективный шаг.
sudo apt install resolvconf
Перезагрузка системы может быть не обязательной, но рекомендуется:
sudo reboot
Изменение настроек NetworkManager
В некоторых случаях может потребоваться вручную настроить NetworkManager, чтобы он правильно взаимодействовал с systemd-resolved
или отключал его.
Отключение systemd-resolved
Если вы хотите обойти использование systemd-resolved
, выполните следующее:
sudo mv /etc/resolv.conf /etc/resolv.conf.systemd
sudo ln -s /run/NetworkManager/no-stub-resolv.conf /etc/resolv.conf
Это создаст символическую ссылку на файл, который NetworkManager генерирует автоматически.
Настройка OpenVPN
Настройки OpenVPN также могут повлиять на порядок резолвинга DNS. Обратите внимание на опцию Routing при установлении соединения:
- В настройках OpenVPN найдите раздел, отвечающий за маршрутизацию.
- Убедитесь, что включена опция, позволяющая вашему VPN управлять DNS-запросами (например,
dhcp-option
).
Проверка конфигурации
После внесения изменений проверьте файл /etc/resolv.conf
:
cat /etc/resolv.conf
Убедитесь, что DNS-серверы вашего VPN стоят первыми в списке.
Дополнительные рекомендации
-
Очистка кэша DNS: Если вы заметили кэшированные ответы из публичных DNS, используйте команду для сброса кэша:
sudo resolvectl flush-caches
-
Мониторинг DNS-запросов: Используйте инструменты, такие как
tcpdump
илиdig
, чтобы анализировать DNS-запросы и видеть, какие серверы используются. -
Логи NetworkManager: Проверяйте логи NetworkManager для выявления проблем.
journalctl -u NetworkManager
Заключение
Правильная настройка DNS в Ubuntu 22.04 с использованием OpenVPN через NetworkManager требует некоторых шагов, которые могут варьироваться в зависимости от конкретной конфигурации сети и требований вашего VPN. Установка resolvconf
, правильные настройки NetworkManager и OpenVPN, а также регулярный мониторинг состояния системы помогут обеспечить доступ к необходимым внутренним ресурсам вашей компании.