Назад | Перейти на главную страницу

Использование dnsmasq для доступа к нескольким серверам имен, назначенным DHCP

На моем рабочем столе под управлением openSUSE 11.4 у меня есть локальная сеть, которая получает свой адрес, домен (work.site) и информацию о серверах имен (10.100.1.1, 10.100.1.2) через DHCP, которые записываются в /etc/resolv.conf

Я получаю доступ в Интернет, используя рабочую сеть, и эти два сервера имен в конечном итоге возвращают записи для любых поисков публичных доменных имен в Интернете.

У меня также есть частный VPN, к которому я подключаюсь. Сервер имен (10.111.1.1) и домен (private.site) редко меняются для этой сети, но в настоящее время они выталкиваются клиентом openVPN в networkmanager, а также объединяются с существующим /etc/resolv.conf

В конечном итоге мой файл resolv.conf выглядит так:

search private.site work.site
nameserver 127.0.0.1
nameserver 10.111.1.1
nameserver 10.100.1.1

Как вы можете видеть, второй сервер имен в моей рабочей сети был вытеснен из-за ограничений на вход до трех. Это все еще нормально, но будет проблемой, если этот сервер имен отключится из-за обслуживания или чего-то еще.

Итак, я обнаружил, что dnsmasq может мне здесь помочь, и поэтому я настраиваю dnsmasq как локальный преобразователь DNS без какой-либо поддержки DHCP.

Итак, сейчас это мой /etc/dnsmasq.conf:

resolv-file=/etc/resolv.conf
server=/private.site/10.111.1.1
server=/1.111.10.in-addr.arpa/10.111.1.1
listen-address=127.0.0.1
bind-interfaces
log-queries

Я заставил dnsmasq получить список серверов имен из /etc/resolv.conf, поскольку NetworkManager, похоже, правильно обновляет этот список (максимум для 3 серверов имен). Я могу правильно разрешить имена хостов в обеих сетях.

Итак, у меня есть вопросы:

  1. Есть ли способ заставить либо NetworkManager, либо dhclient выписать список серверов имен где-нибудь еще, которые я могу использовать dnsmasq в качестве файла resolv?
  2. Как заставить dnsmasq использовать определенные серверы имен по умолчанию для всех запросов? Прямо сейчас я заметил, что поиск общедоступных доменов в Интернете обычно отправляется на оба сервера имен - на work.site и private.site. Было бы хорошо, если бы я мог ограничить это только work.site.

ОБНОВЛЕНИЕ: Вот решения, которые я нашел: В / etc / sysconfig / network / config измените следующее:

NETCONFIG_DNS_FORWARDER="dnsmasq"
NETCONFIG_DNS_FORWARDER_FALLBACK="no"
NETCONFIG_DNS_STATIC_SEARCHLIST="work.site private.site"

В /etc/dnsmasq.conf добавьте следующие строки:

resolv-file=/var/run/dnsmasq-forwarders.conf

Мне также пришлось изменить свой openVPN server.conf, чтобы не отправлять серверы имен для клиентов, поскольку я уже добавил правило сервера в свой dnsmasq.conf для этого домена.

Если вы установите resolvconf, NetworkManager будет использовать его вместо записи /etc/resolv.conf прямо. DNS-серверы от NM можно найти в /var/run/resolvconf/interface/NetworkManager.

dnsmasq отправляет все запросы на 10.111.1.1, потому что он указан в resolv.conf - вы, вероятно, захотите удалить его из resolv.conf так что он используется только для домена private.site. Серверы имен в resolv.conf по сути, являются значениями по умолчанию.