DNS-серверы не удаляются после отключения VPN – 24.04.1 LTS

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

Я использую клиент VPN GlobalProtect на своем Ubuntu, и все работало нормально, пока я не обновил свою версию Ubuntu до 24.04.1 LTS. Теперь я заметил, что при подключении к VPN новые DNS-серверы добавляются дважды в /run/systemd/resolve/resolv.conf.

В конце /run/systemd/resolve/resolv.conf у меня есть (IP-адреса 1.1.1.x являются DNS-серверами из VPN):

nameserver 1.1.1.1

nameserver 1.1.1.2

nameserver 192.168.100.1

Слишком много настроенных DNS-серверов, следующие записи могут быть проигнорированы.

nameserver 192.168.68.1

nameserver 1.1.1.1

nameserver 1.1.1.2

search dommain.com

Когда я отключаюсь от VPN, только два DNS-сервера удаляются, и мой /run/systemd/resolve/resolv.conf выглядит следующим образом:

nameserver 1.1.1.1

nameserver 1.1.1.2

nameserver 192.168.100.1

Слишком много настроенных DNS-серверов, следующие записи могут быть проигнорированы.

nameserver 192.168.68.1

search dommain.com

Таким образом, похоже, что одни и те же серверы добавляются дважды в /run/systemd/resolve/resolv.conf, и после отключения от VPN два DNS и домен поиска не удаляются.

Когда я перезапускаю службу systemd-resolved после отключения от VPN (sudo systemctl restart systemd-resolved), в /run/systemd/resolve/resolv.conf я вижу, что дублирующиеся DNS-серверы исчезают, и /run/systemd/resolve/resolv.conf выглядит, как ожидалось:

nameserver 192.168.100.1

nameserver 192.168.68.1

search .

Я также заметил, что вижу два добавленных интерфейса, когда подключен к VPN: Global и gpd0:

me@ubuntu:~$ resolvectl

Global

Протоколы: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Режим resolv.conf: foreign

Текущий DNS-сервер: 1.1.1.1

   DNS Servers: 1.1.1.1 1.1.1.2

    DNS Domain: dommain.com

Link 3 (wwan0)

Текущие области: нет

     Протоколы: -DefaultRoute -LLMNR -mDNS -DNSOverTLS

DNSSEC=no/unsupported

Link 4 (wlp0s20f3)

Текущие области: DNS

Протоколы: +DefaultRoute -LLMNR -mDNS -DNSOverTLS

DNSSEC=no/unsupported

Текущий DNS-сервер: 192.168.68.1

   DNS Servers: 192.168.100.1 192.168.68.1

Link 5 (gpd0)

Текущие области: DNS

     Протоколы: +DefaultRoute -LLMNR -mDNS -DNSOverTLS 

DNSSEC=no/unsupported

Текущий DNS-сервер: 1.1.1.1

   DNS Servers: 1.1.1.1 1.1.1.2

    DNS Domain: ~.dommain.com

me@ubuntu:~$

Когда я отключаюсь от VPN, только gpd0 удаляется – Global все еще присутствует с DNS-серверами из VPN. После перезапуска службы systemd-resolved она удаляет эти DNS-серверы и изменяет режим resolv.conf на stub.

Global

Протоколы: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Режим resolv.conf: stub

Может кто-то посоветовать, что может быть причиной этого странного поведения и как решить эту проблему навсегда? Спасибо.

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

Здравствуйте, Томаш!

Проблема, с которой вы столкнулись, связана с тем, как система управления DNS (systemd-resolved) обрабатывает изменения в конфигурации DNS-серверов при подключении и отключении VPN-клиента. Ниже приведены несколько рекомендаций, которые помогут вам решить эту проблему.

1. Проверьте конфигурацию VPN-клиента

Убедитесь, что ваш VPN-клиент правильно настроен для управления DNS-серверами. Некоторые клиенты могут иметь параметры, отвечающие за добавление или удаление DNS-серверов при подключении или отключении. Вы можете проверить документацию вашего VPN-клиента GlobalProtect на наличие таких опций.

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

Попробуйте изменить конфигурацию systemd-resolved, чтобы предотвратить сохранение лишних DNS-серверов после отключения от VPN. Для этого сделайте следующее:

  1. Откройте файл конфигурации systemd-resolved:

    sudo nano /etc/systemd/resolved.conf
  2. Убедитесь, что у вас есть следующие строки (добавьте или измените их):

    [Resolve]
    DNSStubListener=yes
  3. Сохраните изменения и закройте редактор.

3. Сброс DNS после отключения от VPN

Поскольку вы уже нашли обходной путь с помощью перезапуска systemd-resolved, вы можете автоматизировать этот процесс. Создайте служебный скрипт, который будет выполняться при отключении от VPN:

  1. Создайте скрипт, например, в /usr/local/bin/vpn-disconnect.sh:

    sudo nano /usr/local/bin/vpn-disconnect.sh
  2. Вставьте следующий код:

    #!/bin/bash
    # Сброс DNS после отключения от VPN
    sudo systemctl restart systemd-resolved
  3. Сделайте скрипт исполняемым:

    sudo chmod +x /usr/local/bin/vpn-disconnect.sh
  4. Настройте ваш VPN-клиент так, чтобы он вызывал этот скрипт при отключении от VPN. Это может быть неочевидно и зависит от конкретного клиента, поэтому обратитесь к его документации на предмет опций для запуска пользовательских скриптов.

4. Мониторинг и тестирование

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

Если проблема не исчезнет, вам может потребоваться обратиться в службу поддержки вашей VPN или изучить форумы для вашей конкретной версии Ubuntu и GlobalProtect на предмет аналогичных проблем.

Надеюсь, эти рекомендации помогут вам решить проблему. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

С уважением,
[Ваше Имя]

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

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