Примечание. Мой вопрос заключается не в том, как остановить обновление nm /etc/resolv.conf. Не как сделать работу openconnect. Вместо этого я просто хочу понять некоторые подробности о настройке resolv.conf в ubuntu. Почему есть два способа его настройки (/etc/resolv.conf является символической ссылкой на /run/resolvconf/resolv.conf или /var/run/NetworkManager/resolv.conf), почему я получаю разные конфигурации и почему иногда у меня работает DNS-сервер на 127.0.1.1, а иногда и нет.
Я использую версию xubuntu 17.04. И мне нужно подключиться к VPN (5.3r1 сейчас). Ранее этот продукт VPN назывался Junos Pulse от Juniper Networks. Теперь у меня есть несколько вариантов подключения к этому VPN:
Pulse Secure 5.3r1 - который предоставляется нашим поставщиком услуг. И содержит 32-битный GUI, который требует много 32-битных библиотек. Использование openconnect - juniper Создание VPN-подключения через Network Manager (тип подключения Juniper / Pulse Network Connect). Поддержка Juniper была добавлена в Network Manager недавно и предоставляется пакетом network-manager-openconnect-gnome.Но у меня есть некоторые проблемы с настройкой DNS при подключении к VPN. Я ничего не изменил и кажется, что теперь используется systemd-resolve. Согласно документации systemd-resolve, он управляет /etc/resolv.conf как ссылку на файл /run/resolvconf/resolv.conf, и этот файл должен содержать «nameserver 127.0.0.53». В этот файл могут быть добавлены новые серверы имен и доменные имена по умолчанию, и в этом случае используются все серверы имен. В этом случае все работает.
Но после перезагрузки иногда я вижу, что /etc/resolv.conf указывает на /var/run/NetworkManager/resolv.conf и содержит строки «# Generated by NetworkManager» и «nameserver 127.0.1.1" . В этом случае разрешение имен для моей VPN не работает.
Итак, вопрос в том, что такое DNS-сервер 127.0.1.1, почему у меня есть два DNS-сервера вместо одного. На самом деле мне не нужен локальный DNS-сервер, но в любом случае. Почему ссылка /etc/resolv.conf установлена в /var/run/NetworkManager/resolv.conf с помощью Network Manager.
Я только что проверил netstat -utlp:
Proto Local Address Program name
tcp 0.0.0.0:5355 (hostmon) systemd-resolved
udp 127.0.0.53:53(domain) systemd-resolved
udp 0.0.0.0:5353 (mdns) chrome
udp 0.0.0.0:5353 (mdns) avahi-daemon
udp 0.0.0.0:5355 (hostmon) systemd-resolved
Я проверил systemd-resolve --status:
Global
DNS Servers: 127.0.1.1
...
Я проверил сетевую конфигурацию /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
И у меня нет dnsmasq.
PS : похоже, Network Manager устанавливает эту ссылку от имени resolvconf. Нужно проверить. Но все же не понимаю, почему это так, если установлено systemd-resolve. Почему systemd-resolve не используется для этого.
PSS: Просто найдено, что в ubuntu есть две отдельные службы: resolvconf.service (из пакета resolvconf), описанные в /lib/systemd/system/resolvconf.service. И systemd-resolved.service (из пакета systemd), описанный в /lib/systemd/system/systemd-resolved.service. Быстрый googling не дал мне ответа, почему есть две службы, которые выполняют ту же работу и являются частью основного ubuntu и не могут даже быть удалены.