Как заставить 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 = [/ [
] / [domain /]] [ [#<порт>] [@ Укажите 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 - это синоним сервера, чтобы в этом случае файлы конфигурации были более понятными.
Необязательный второй IP-адрес после символа @ указывает dnsmasq, как установить исходный адрес запросов для этого сервера имен. Это должен быть адрес, принадлежащий машине, на которой работает dnsmasq, в противном случае эта строка сервера будет зарегистрирована, а затем проигнорирована. Флаг порта запроса игнорируется для любых серверов, для которых указан адрес источника, но порт может быть указан непосредственно как часть адреса источника.