Как заставить networkmanager настраивать доменные серверы имен с помощью openresolv + dnsmasq

Я часто подключаюсь к нескольким сетям одновременно. Каждая из этих сетей обеспечивает конфигурацию сервера имен через 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 обрабатывает это.)

Обратите внимание, что после ручной конфигурации, resolveconf -l показывает две конфигурации отдельно:

 ~ # 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 

Однако, если сетевой диспетчер выполняет конфигурацию, 2 конфигурации не являются отдельными, так как это было бы, если бы сетевой менеджер писал в /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 

Мой вопрос: как я могу заставить диспетчера сети правильно вызвать resolveconf, чтобы серверы имен для каждого интерфейса регистрировались отдельно. (К сожалению, googling для этого бесполезен, поскольку Google считает, что «resolveconf» == «resolve.conf»)

2 Solutions collect form web for “Как заставить networkmanager настраивать доменные серверы имен с помощью openresolv + dnsmasq”

NetworkManager имеет функции управления локальным сервером dnsmasq, встроенным. Для этого нет необходимости использовать resolvconf / openresolv.

Чтобы включить это:

  • Отключите конфигурацию resolvconf / openresolv dnsmasq, если она была ранее включена, и убедитесь, что нет экземпляров запуска dnsmasq.
  • Убедитесь, что dnsmasq установлен
  • Добавьте dns=dnsmasq в /etc/NetworkManager/NetworkManager.conf .
  • Перезапустить NetworkManager

Как только вы это сделаете, вы увидите, что NetworkManager запустил процесс dnsmasq:

 $ pgrep dnsmasq -fl 1697 /usr/bin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/nm-dns-dnsmasq.pid --listen-address=127.0.0.1 --conf-file=/var/run/nm-dns-dnsmasq.conf --cache-size=400 --proxy-dnssec 

/etc/resolve.conf должен указывать на локальный экземпляр dnsmasq:

 $ cat /etc/resolv.conf # Generated by NetworkManager domain company1.corp search company1.corp nameserver 127.0.0.1 

и мы можем видеть, какие серверы использует dnsmasq:

 # cat /var/run/nm-dns-dnsmasq.conf server=/company2.corp/10.102.208.51 server=/10.in-addr.arpa/10.102.208.51 server=192.168.1.244 server=192.168.1.239 

Похоже, NetworkManager просто перезаписывает /etc/resolv.conf и не использует openresolv. Согласно FS # 24635 , NetworkManager имеет поддержку openreslov, но он не был первоначально включен в сборке. Какую версию Arch Linux вы используете и какова версия пакета networkmanager?

  • Почему я не могу подключиться к скрытому SSID в Edubuntu?
  • Debian не может подключиться к университету Wi-Fi через невольный портал
  • как подключить устройства к соединениям с помощью nmcli?
  • Запуск сценария при запуске и после переключения сети
  • Импортировать файлы конфигурации VPN в NetworkManager из командной строки
  • Элементарная ОС показывает WiFi-сети, но не будет подключаться
  • Мышь Bluetooth перестает работать через несколько секунд (проблема NetworkManager)
  • Изменение режима встроенной горячей точки Fedora на 5 ГГц
  • Перезапуск всей сети в Ubuntu после спящего режима
  • сетевое соединение на кали
  • Какова цель UUID для сетевых адаптеров?
  • Interesting Posts

    Запретить включение Bluetooth при выключенном режиме

    Установите urxvt для работы с 256 цветами

    Каков наилучший способ проверить, изменился ли файл в Bash и сохранить 15 последних копий?

    Прямой кеш записи / записи Linux USB Flash

    Сплит PDF в документы с несколькими страницами каждый

    Скрипт не работает, но команда работает вне сценария

    Есть ли способ найти все ресурсы X, которые использует приложение?

    не удалось изменить каталог на «/ home / corey / scripts»: разрешение отклонено

    Есть ли исходные репозитории APT для Debian Lenny?

    Почему переменные non-environment передаются в подсхлу, вызванную заменой команды?

    сервис запущен при загрузке, ведь все остальное?

    Как рекурсивно распаковывать gz-файлы на удаленном хосте с ограниченными командами?

    Как ссылаться на несколько файлов из каталога на одну команду

    Сделать пакет rpm из дерева, совместимого с cpan?

    Объединение папок с одним и тем же именем, но с другим корпусом

    Linux и Unix - лучшая ОС в мире.