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

Как заставить 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-адресов некоторых (указанных) доменных имен?

Вы можете сделать это, используя 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, в противном случае эта строка сервера будет записана в журнал и затем проигнорирована. Флаг порта запроса игнорируется для любых серверов, для которых указан адрес источника, но порт может быть указан непосредственно как часть адреса источника.