Категорії
WRT

Укрощаем dnsmasq

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

Тестовый стенд: LinkSys WRT54GL/160NL,  прошивка OpenWRT kamikadze/backfire

1) Устанавливаем правильные DNS сервера на роутере

Как пример, я столкнулся с тем, что не могу выставить нужные мне DNS-сервера на роутере. Как и многие системные администраторы я привычным образом редактирую /etc/resolv.conf на предмет указания нужных мне DNS-серверов. Все работает.

НО! Только до первой перезагрузки. После ребута роутера файл /etc/resolv.conf очищается и в него добавляется одна единственная запись:

nameserver 127.0.0.1

Это нам не подходит.

Подумал, может не прописаны DNS в настройках сети. Открываю файл /etc/config/network и вижу, что DNS сервера прописаны (это касается зоны wan):

option 'dns' '8.8.8.8'

Почему же тогда параметры не применяются? Ответ на этот вопрос даёт процесс dnsmasq, который входит в конфигурацию по умолчанию и запускается автоматически при старте ОС.

Если убрать из автозапуска процесс dnsmasq (для этого просто удаляем символическую ссылку S60dnsmasq из каталога /etc/rc.d/) то будет прописываться тот DNS сервер, который указан в /etc/config/network. Но при этом сам роутер не будет выступать в качестве DNS и DHCP серверов.

Если же вам нужны эти службы, то можно подправить скрипт запуска dnsmasq. Открываем файл /etc/init.d/dnsmasq и ищем такой блок:

start() {
include /lib/network
scan_interfaces
config_load dhcp
args=""
config_foreach dnsmasq dnsmasq
config_foreach dhcp_host_add host
config_foreach dhcp_boot_add boot
config_foreach dhcp_mac_add mac
config_foreach dhcp_vendorclass_add vendorclass
config_foreach dhcp_userclass_add userclass
config_foreach dhcp_circuitid_add circuitid
config_foreach dhcp_remoteid_add remoteid
config_foreach dhcp_subscrid_add subscrid
config_foreach dhcp_add dhcp
/usr/sbin/dnsmasq $args && {
rm -f /tmp/resolv.conf
DNS_SERVERS="$DNS_SERVERS 127.0.0.1"
for DNS_SERVER in $DNS_SERVERS ; do
echo "nameserver $DNS_SERVER" >> /tmp/resolv.conf
done
}
}

И ищем строку

DNS_SERVERS="$DNS_SERVERS 127.0.0.1"

И меняем на такую

DNS_SERVERS="$DNS_SERVERS 8.8.8.8 8.8.4.4"

Теперь после перезагрузки в /etc/resolv.conf будут прописаны нужные DNS сервера.

2) Выдаём пользователям нужные настройки.

В этом разделе будет показано, как выдать пользователям нужные DNS сервера и шлюз по умолчанию.

Открываем файл /etc/dnsmasq.conf и добавляем такие строки:

– для указания нужного шлюза по умолчанию:

dhcp-option=br-lan,3,10.60.68.17

– для указания нужных DNS серверов

dhcp-option=br-lan,6,50.50.58.57,8.8.8.8

– для указания нужного tftp-сервера

dhcp-option=br-lan,66,10.1.0.60

где br-lan – сетевой интерфейс, на котором работает dnsmasq

Если tftp-сервер находится не на роутере, то эта опция работать не будет. Вместо неё следует применять такую

dhcp-boot=pxelinux.0,tftp-server-name,10.1.0.60

где pxelinux.0 – имя файла для загрузки, tftp-server-name – имя tftp-сервера, 10.1.0.60 – адрес tftp-сервера.

Так же как альтернатива, можно использовать вместо числового указания, мнемоническое:

dhcp-option=option:router,12.18.1.1
dhcp-option=option:dns-server,19.18.1.77,1.1.2.2

Полностью все параметры можно узнать по команде:

#dnsmasq --help dhcp

Понятно, какая опция за что отвечает. Перегружаем dnsmasq и работаем с новыми настройками:

#/etc/init.d/dnsmasq restart

4 коментарі “Укрощаем dnsmasq”

Приветствую!
Не знаю как на OpenWRT, но на DD-WRT v24-sp2 (08/07/10) std build 14896 (D-link DIR-400) проблема с очередностью обращения к DNS серверам решается дополнительными настройками DNSMasq в web-интерфейсе:


strict-order
server=xxx.xxx.2.23
server=xxx.xxx.2.24

При таком подходе, указанные выше сервера опрашиваются прежде тех, которые записаны в resolv.dnsmasq (resolv.conf)

а не подскажешь как можно восстановить загрузку линукса? думаю что причина связана с описаным в этой статье….
после неизвестных мне манипуляций с компом (работала жена) перестала запускаться Ubuntu Studio (((( вроди как идет загрузка, доходит до заставки “Ubuntu 12.10” и тупо зависает ….на компе две операционки, эта и XP….винда загружается без проблем ….
может поможет вот эта запись
dnsmasq: faild to create listening socket for 127.0.0.1: Addres alredy in use
*Starting DNS forwarder and DHCP server dnsmasq [fail]
…….
что может быть? можно как-то исправить с командной строки? спасибо.

Залишити коментар до skeletor Скасувати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff