Как заставить dnsmasq использовать вышестоящий DNS-сервер только для некоторых указанных доменных имен?

Как заставить dnsmasq использовать вышестоящий DNS-сервер только для некоторых указанных доменных имен?

Сейчас у меня есть следующая строка в dnsmasq.conf, которая хорошо обрабатывает все запросы ( /#/соответствует любому домену; это обязательно):

address=/#/127.0.0.1

Однако существуют некоторые домены, для которых требуется разрешение на IP-адреса, отличные от 127.0.0.1.

В качестве временного решения они были добавлены в /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

К сожалению, это временное решение: оно перестанет работать, как только изменится IP-адрес любого целевого домена.

У меня такой вопрос: как заставить dnsmasq использовать вышестоящий DNS-сервер для разрешения IP-адресов некоторых (указанных) доменных имен?

решение1

Вы можете сделать это, используя server=директиву, например:

server=/ajax.googleapis.com/8.8.8.8

запросит публичный DNS-сервер Google для домена ajax.googleapis.com, аналогично

server=/amazonaws.com/209.244.0.3

запросит у публичного DNS-сервера Level3 домен amazonaws.com.

Вы можете объединить несколько доменов вместе

server=/co.uk/com/8.8.4.4

Домены .co.uk и .com будут отправлены на DNS-сервер по адресу 8.8.4.4

Вы также можете иметь несколько server=директив.

−S, --server=[/[<домен>]/[домен/]][<ipaddr>[#<порт>][@<источник>[#<порт>]]]

Укажите IP-адреса вышестоящих серверов напрямую. Установка этого флага не подавляет чтение /etc/resolv.conf, используйте -R для этого. Если указан один или несколько дополнительных доменов, этот сервер используется только для этих доменов, и они запрашиваются только с использованием указанного сервера. Это предназначено для частных серверов имен: если в вашей сети есть сервер имен, который обрабатывает имена вида xxx.internal.thekelleys.org.uk по адресу 192.168.1.1, то указание флага -S /internal.thekelleys.org.uk/192.168.1.1 отправит все запросы для внутренних машин на этот сервер имен, все остальное будет отправлено на серверы в /etc/resolv.conf. Пустая спецификация домена, // имеет особое значение «только неквалифицированные имена», т. е. имена без точек в них. Нестандартный порт может быть указан как часть IP-адреса с помощью символа #. Допускается использование более одного флага -S с повторением частей домена или ipaddr по мере необходимости.

Также разрешен флаг -S, который указывает домен, но не IP-адрес; это сообщает dnsmasq, что домен является локальным и может отвечать на запросы из /etc/hosts или DHCP, но никогда не должен пересылать запросы в этом домене на какие-либо вышестоящие серверы. local — это синоним server, что делает файлы конфигурации более понятными в этом случае.

Необязательный второй IP-адрес после символа @ сообщает dnsmasq, как задать исходный адрес запросов к этому серверу имен. Это должен быть адрес, принадлежащий машине, на которой запущен dnsmasq, в противном случае эта строка сервера будет зарегистрирована и проигнорирована. Флаг query-port игнорируется для любых серверов, у которых указан исходный адрес, но порт может быть указан непосредственно как часть исходного адреса.

Связанный контент