Я часто подключаюсь к нескольким сетям одновременно. Каждая из этих сетей обеспечивает настройку сервера имен через dhcp. Например, сеть 1: (eth0):
domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254
Сеть 2 (tun0):
domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51
# Имена изменены
При одновременном подключении к обеим сетям:
# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Разрешение service.company2.corp не работает, так как первый сервер имен знает только имена company1.corp.
Вдохновленный этой статьей , я настроил openresolv (реализацию resolvconf), настраивая локальную службу dnsmasq в моей установке Arch linux.
Если я настраиваю серверы имен вручную, используя resolvconf:
# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0
Затем я могу разрешить имена как из company1.corp, так и company2.corp (это обрабатывает локальный сервер dnsmasq.)
Обратите внимание, что после ручной настройки, resolconf -l показывает 2 конфигурации отдельно:
~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
Однако, когда сетевой менеджер разрешает выполнять настройку, две конфигурации не являются отдельными, как если бы сетевой менеджер писал в /etc/resolve.conf
~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Мой вопрос заключается в том, как заставить сетевой менеджер правильно вызывать resolconf, чтобы серверы имен для каждого интерфейса регистрировались отдельно. (К сожалению, поиск в Google для этого бесполезен, потому что Google считает, что "resolconf" == "resol.conf")
источник
"resolvconf"
с кавычками. Всегда помещайте кавычки вокруг собственных имен в Google.Ответы:
NetworkManager обладает функциональностью для управления встроенным локальным сервером dnsmasq. Для этого не нужно использовать resolvconf / openresolv.
Чтобы включить это:
dns=dnsmasq
в/etc/NetworkManager/NetworkManager.conf
.Как только вы это сделаете, вы увидите, что NetworkManager запустил процесс dnsmasq:
/etc/resolve.conf
должен указывать на локальный экземпляр dnsmasq:и мы можем увидеть, какие серверы использует dnsmasq:
источник
ubound
поэтому DNSSEC работает, см. Fedoraproject.org/wiki/Networking/NameResolution/DNSSECПохоже, что NetworkManager просто перезаписывает
/etc/resolv.conf
и не использует openresolv. Согласно FS № 24635 , NetworkManager действительно поддерживает openreslov, но изначально он не был включен в сборку. Какую версию Arch Linux вы используете и какая версия пакета networkmanager?источник
Делай, как ответил Гари ван дер Мерве, но в
/etc/NetworkManager/NetworkManager.conf
Я должен был добавить
в файл. Не просто
dns=dnsmasq
Это потому, что все настройки в этом файле должны быть в разделе, а мой дистрибутив manjaro (archlinux) версии пакета NetworkManager не заполняет файл конфигурации. (Я предполагаю, что дистрибутив Гари работает, так как его предложенная линия работала для него других)
Еще одно примечание, любая конфигурация dnsmasq должна идти в файле конфигурации в этом
/etc/NetworkManager/dnsmasq.d/
каталог. Это может быть другой каталог на вашем компьютере. Я узнал об используемом каталоге, посмотрев на строку, которую NetworkManager использует для запуска демона dnsmasq. Вы можете увидеть эту строку, запустив
ps aux|grep dnsmasq
. Вы должны подождать, чтобы запустить это, пока не измените конфигурацию NetworkManager и не перезапустите его службу.источник