Ubuntu 22.04: при подключении с помощью NetworkManager OpenVPN DNS не использует DNS-сервер VPN

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

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

Признаки проблемы:

  1. Имя сервера возвращает неверные значения после повторных запросов.
  2. Смена порядка 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 при установлении соединения:

  1. В настройках OpenVPN найдите раздел, отвечающий за маршрутизацию.
  2. Убедитесь, что включена опция, позволяющая вашему VPN управлять DNS-запросами (например, dhcp-option).

Проверка конфигурации

После внесения изменений проверьте файл /etc/resolv.conf:

cat /etc/resolv.conf

Убедитесь, что DNS-серверы вашего VPN стоят первыми в списке.

Дополнительные рекомендации

  1. Очистка кэша DNS: Если вы заметили кэшированные ответы из публичных DNS, используйте команду для сброса кэша:

    sudo resolvectl flush-caches
  2. Мониторинг DNS-запросов: Используйте инструменты, такие как tcpdump или dig, чтобы анализировать DNS-запросы и видеть, какие серверы используются.

  3. Логи NetworkManager: Проверяйте логи NetworkManager для выявления проблем.

    journalctl -u NetworkManager

Заключение

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

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

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