Dnsmasq - лёгкая замена Bind и ISC DHCP
Программа Dnsmasq создана для замены «старушки» BIND (Berkeley Internet Name Domain), созданной Кевин Дунлар (Kevin Dunlap) почти 30 лет назад для UNIX-систем. Собственно, DNS (Domain Name Service) и BIND одновременно росли и вырастали, концепция DNS развивалась вместе BIND сервером. Даже понятия DNS и BIND считались неразделимыми. Но по мере развития Интернета BIND преподносил всё больше уязвимостей. Примерная схема работы заключалась в следующем. Ведь по сути DNS применяется в разрешениях имён сервисов для IP-адресов. При обращении к сервису, к примеру, yandex.ru, через браузер отправляется запрос к каком-то DNS-серверу, от которого браузер получает нужный IP-адрес, через который происходит соединение программы и сервиса.
Немного о DNS-серверах
Все зарегистрированные зоны (ru, ua и пр.) имеют собственные DNS-сервера, которым запрос происходит напрямую. Список DNS-серверов находится по адресу www.root-servers.org . При получении DNS-запроса система сверяется в своих настройках прежде чем отправить ответ пользователю. Напомним, что в файле /etc/resolv.conf заносятся все DNS-сервера с IP-адресами, причём провайдеровский сервер ставится первым, т.к. к нему идёт запрос быстрее.
nameserver 000.00.000.000
Дополнительными атрибутами файла /etc/resolv.conf являются search, domain. В search записывают домены, а в domain – полное имя. При ADSL файл принимает вид /etc/ppp/resolv.conf. Адреса и имена сохраняются в файле/etc/hosts.
127.0.0.1 localhost
Указание по работе с этим списком в файле /etc/host.conf.
order host bind
Dnsmasq экономит время
Соответствие между DNS и IP-адресами важно, кроме пользователя, другим про-граммам, поэтому использование конфигурируемого DNS-сервера значительно снизит время соединения с сервисами в Интернете или локальной сети. Применение Dnsmasq вполне оправдано, тем более этот сервер, спроектирован для выдачи до-менных имен (DHCP и TFTP) в малых и домашних сетях. Dnsmasq обеспечит имена для локальных машин, у которых нет DNS-записей в Интернете. DHCP сервер встроен в DNS сервер, что позволяет рабочим станциям с IP-адресом своё доменное имя, прописанное в файле конфигурации. Dnsmasq сохраняет привязку IP-адреса к ПК или автоматически выбирает IP-адрес из диапазона, а также служит BOOTP для загрузки бездисковых ПК в сеть. Dnsmasq применяют в Linux, BSD и Mac OS X. Настройки Dnsmasq
При пуске dnsmasq обращается к hosts, информация берётся как для DNS службы, так и службы DHCP. Для DHCP, программа dnsmasq может информацию о получив-ших IP-адрес машинах, автоматически писать в hosts. Сервер DHCP работает в стати-ческом и динамическом режиме выдачи IP-адресов, а также одновременную работу в нескольких сетях. Чтобы заработала функция кэширования DNS нужно в файл /etc/dnsmasq.conf, добавить:
listen-address=127.0.0.1
Чтобы все машины локальной сети могли пользоваться сервером, добавляем:
listen-address=192.168.1.1 # локальный IP-адрес сервера
Диапазон DNS прописывается в файле resolv.conf. Для этого записывают localhost в первую строку файла /etc/resolv.conf:
nameserver 127.0.0.1 nameserver 000.00.000.000
и т.д. После этого обращения DNS будут уходить к dnsmasq. Другие сервера получат за-прос при неудаче dnsmasq. Для защиты resolv.conf от переписывания вносим запись:
# chattr +i /etc/resolv.conf
Пример конфигурации
#не читаем resolv.conf, так как есть свои данные в конфиге ниже no-resolv # localmx #внешние сервера DNS, гугловские и т.д. server=8.8.8.8#53 server=8.8.4.4#53 server=156.154.70.1#53 server=156.154.71.1#53 server=208.67.222.222#53 server=208.67.220.220#53 server=198.153.192.1#53 server=198.153.194.1#53 #на какой интерфейс смотреть. Раздавать адреса нужно было только по Wi-Fi. Вообще ограничения стоит вводить просто ради секурности interface=wlan0 listen-address=10.0.0.1 bind-interfaces #раздаём адреса (диапазон с 10 по 200) dhcp-range=10.0.0.10,10.0.0.200 #прописываем некоторых статично на основе [MAC](/) dhcp-host=00:1E:58:9A:E9:E8,COMPUTERNAME,10.0.0.2 dhcp-host=7c:61:93:93:5f:93,COMPUTERNAME2,10.0.0.3 #включаем загрузку по сети (большенству это не нужно, если вы не используете бездисковые станции) dhcp-option=6,10.0.0.1,10.0.0.254 dhcp-option=4,10.0.0.1 dhcp-boot=pxelinux.0 enable-tftp tftp-root=/ #размер кеша cache-size=650 #логирование log-queries log-dhcp log-facility=/var/log/dnsmasq.log log-async=25 stop-dns-rebind rebind-localhost-ok #интересная опция, запрашиваем все сервера DNS сразу. Зачем - чтобы ответ был быстрее. Порождает лишний трафик. all-servers local-ttl=7200 neg-ttl=14400 max-ttl=86400 dhcp-lease-max=604800 #блокируем некоторые домены и рекламы address=/.doubleclick/127.0.0.1 address=/.biz/127.0.0.1 address=/.cn/127.0.0.1 #прописываем то, что можно было бы внести в hosts, но для всех компьютеров в сети. Например, retracker.local address=/retracker.local/10.0.0.1 # Не пересылать адреса из не маршрутизируемых сетей (192.168.0.0/16, 10.0.0.0/8 и т.п.) bogus-priv # Определить точный адрес для прослушивания #listen-address= # Не принимать DHCP запросы с интерфейса #no-dhcp-interface= # Не кэшировать негативные ответы от серверов #no-negcache # Установка хоста по умолчанию для записей MX при использовании опции localmx #mx-target=wikiadmin.net # Возвращает запись MX с хостом mx-target для всех локальных машин #localmx # Возвращает в записи MX себя для всех локальных машин selfmx
Как посмотреть, кому какие данные были выданы
Очень просто, отдаём команду
cat /var/lib/misc/dnsmasq.leases
и видим что-то такое:
1425999738 00:e0:7c:00:53:1c 10.0.0.24 PMP3670B * 1425998353 ec:55:f9:07:f8:1f 10.0.0.37 notebook 01:ec:55:f9:07:f8:1f 1425999899 48:5b:39:be:35:ff 10.0.0.20 PC 01:52:41:53:20:48:5b:39:be:35:ff:00:00:00:00:00:00 1426000125 cc:07:ab:98:d7:28 10.0.0.47 android-42af211bc30decb5 01:cc:07:ab:98:d7:28