Меню

Dnsmasq for dns настройка



dnsmasq (Русский)

dnsmasq это DHCP и DNS сервера в одной программе. Она может быть использована для создания подключения к интернету с возможностью автоматической выдачи IP адреса и одновременным кэшированием соответствия доменов их IP адресам (DNS-кэширование). Это кэширование дает отличный прирост скорости работы с интернетом, т.к. не нужно постоянно обращаться за IP адресом к DNS-серверу — он держит эти параметры у себя в кэше. Dnsmasq легковесное приложение, разработанное для персонального использования, или как DHCP сервер для сети, в которой не более 50 компьютеров. Оно также отлично подойдет для развертывания PXE сервера.

Contents

Установка

Настройка кэша DNS

Когда вы запускаете Dnsmasq как DHCP сервер, он также начинает прослушивать локальный интерфейс (localhost) на запросы DNS. Для запуска функции кэширования DNS отредактируйте /etc/dnsmasq.conf , добавив в него:

Чтобы другие компьютеры локальной сети могли использовать этот сервер, можно позволить слушать локальный IP адрес:

В этом случае рекомендуется использовать статический IP адрес для локальной сети.

Файл адресов DNS

This article or section is a candidate for merging with resolv.conf.

После конфигурирования dnsmasq DHCP клиенту нужно будет дописать локальный адрес в вершину списка известных DNS адресов /etc/resolv.conf . Это обеспечит отправку всех запросов на dnsmasq прежде попыток разрешить их на внешнем DNS. После конфигурирования DHCP клиента сетевые демоны должны быть перезапущены чтобы изменения вступили в силу.

resolv.conf

Одним из вариантов может быть использование конфигурации resolv.conf . Для этого просто укажите localhost первой строчкой в /etc/resolv.conf :

Теперь все запросы DNS будут перенаправляться на обработку к dnsmasq. Внешние сервера будут использоваться только тогда, когда dnsmasq не удастся выполнить запрос. dhcpcd может переписать стандартный /etc/resolv.conf . Если используется DHCP, то хорошей практикой будет защита /etc/resolv.conf . Для этого добавьте nohook resolv.conf в конфигурационный файл dhcpcd:

Кроме того, можно защитить resolv.conf, запретив любую его модификацию:

Больше трех серверов DNS

В Linux имеется ограничение способности самостоятельной обрабатки DNS запросов, при котором можно использовать не более трех серверов DNS в resolv.conf . В качестве обходного пути можно указать только localhost в resolv.conf , а затем создать отдельный resolv-file для используемых внешних серверов DNS. Сначала создайте новый resolv файл для dnsmasq:

Затем отредактируйте /etc/dnsmasq.conf для использования нового resolv файла:

dhcpcd

dhcpcd может сам добавлять или удалять DNS сервера в /etc/resolv.conf создавая или изменяя /etc/resolv.conf.head и /etc/resolv.conf.tail файлы соответственно:

dhclient

Для dhclient добавьте или раскомментируйте в /etc/dhcp/dhclient.conf :

NetworkManager

NetworkManager можно сконфигурировать так, чтобы он запускал dnsmasq. Добавьте опцию dns=dnsmasq в секцию [main] файла NetworkManager.conf , затем выключите dnsmasq.service :

Собственные настройки dnsmasq желательно хранить в /etc/NetworkManager/dnsmasq.d/ . Например, чтобы изменить размер кэша DNS (который хранится в RAM):

Когда dnsmasq запускается NetworkManager , настройки в этом каталоге приоритетней стандартного файла конфигурации.

Enabling dnsmasq in NetworkManager may break IPv6-only DNS lookups (i.e. dig -6 [hostname] ) which would otherwise work. In order to resolve this, creating the following file will configure dnsmasq to also listen to the IPv6 loopback:

In addition, dnsmasq also does not prioritize upstream IPv6 DNS. Unfortunately NetworkManager does not do this (Ubuntu Bug). A workaround would be to disable IPv4 DNS in the NetworkManager config, assuming one exists

Другие методы

Другим вариантом является использование NetworkManager, настроенного вручную. Доступ к настройкам зависит от используемого фронтэнда; как правило, вызываемые по нажатию правой кнопки мыши апплета, редактирование (или создание) профиля, затем выбрав ‘DHCP Автоматический’ (указать адрес). Адреса DNS серверов должны быть введены так:

Читайте также:  Методы настройки на выполнение сложных и неприятных задач

Установка сервера DHCP

По умолчанию функционал DHCP сервера деактивирован. Чтобы его задействовать, измените ( /etc/dnsmasq.conf ). Наиболее важные параметры:

If you choose not to bind interfaces the domain port will need to be allowed in /etc/hosts.allow :

Запуск в качестве службы

Для старта dnsmasq включите и запустите службу

# systemctl enable dnsmasq.service

# systemctl start dnsmasq.service

Чтобы убедиться, что dnsmasq корректно запустился, проверьте системный журнал:

Сеть также следует перезапустить, чтобы клиенты DHCP могли получить новый /etc/resolv.conf .

Тестирование

Кэширования DNS

Чтобы протестировать скорость ответа на запрос ресурса, к которому ещё не обращались через Dnsmasq (dig— утилита из пакета bind-tools [ссылка недействительна: replaced by bind ] ):

При повторном запуске команды будет использоваться кэшированный DNS IP , что значительно ускорит обработку запроса, если Dnsmasq настроен правильно:

DHCP сервер

Проверить можно на клиенте, находящимся в том же сегменте сети, в котором развернут сервер Dnsmasq.

Советы и рекомендации

Предотвращение перенаправления OpenDNS запросов Google

Чтобы предотвратить перенаправление OpenDNS запросов Google через Ваш сервер, добавте в /etc/dnsmasq.conf :

Просмотр хостов-арендаторов

Добавление пользовательского домена

Можно добавить пользовательский домен к узлам в вашей (локальной) сети:

что позволит пинговать хост/устройство (например указанное в вашем файле hosts ) как hostname.home.lan .

Раскомментируйте expand-hosts для авто-дополнения имен хостов, в которых не указан домен:

Если эту функцию не использовать,то придется добавлять доменное имя к записям в /etc/hosts.

Источник

MNorin.com

Блог про Linux, Bash и другие информационные технологии

Настройка dnsmasq: DHCP и DNS

Dnsmasq — это программа, поддерживающая работу сразу двух сетевых сервисов, DNS и DHCP. Dnsmasq как сервис имеет ряд преимуществ по сравнению с другими сервисами DNS и DHCP. Во-первых, настройка dnsmasq проста, во-вторых, он нетребователен к ресурсам, в-третьих, он реализует сразу два сервиса, в-четвертых, он гибок и позволяет, например, реализовать обращение по именам к компьютерам в локальной сети, причем сделать это просто и быстро. Именно поэтому он используется как на серверах, так и в embeded-системах, например, в роутерах, и отлично подходит для обеспечения работы небольших сетей.

Установка

Обычно dnsmasq устанавливается на машину, выполняющую роль сетевого шлюза, в небольших сетях обычно именно на нем работают сервисы DHCP и DNS. Поскольку dnsmasq присутствует в репозиториях многих дистрибутивов, его можно установить при помощи менеджера пакетов:

После этого можно приступать к настройке.

Настройка dnsmasq как DHCP

DHCP — это один из базовых сервисов в локальных сетях, благодаря которому отпадает необходимость конфигурировать настройки сети вручную. Он позволяет выдавать автоматически такие настройки как IP-адрес, адрес DNS-сервера и шлюза по-умолчанию, а также резервировать IP-адреса по MAC-адресам.

Для того, чтобы dnsmasq работал как DHCP-сервер, в конфигурационном файле /etc/dnsmasq.conf должны присутствовать следующие строки (они могут уже присутствовать в конфиге, их надо только раскомментировать и исправить):

Эта строка не обязательна, она нужна в том случае, если вы хотите, чтобы хосты, получающие адреса по DHCP, имели FQDN-имя, то есть полное имя, включающее имя домена.

Сетевой интерфейс, на котором будет работать сервис. Обычно основной интерфейс eth0 подключен к провайдеру, поэтому его крайне нежелательно указывать в качестве интерфейса для работы сервиса.

Читайте также:  Настройки winsock очищены что это

Интервал выдаваемых адресов и время аренды адресов (в данном случае 24 часа).

Резервация IP-адреса по MAC-адресу, чтобы устройство с указанным MAC-адресом всегда получало указанный IP-адрес.

Задать значение опции DHCP с номером 1. Опция с номером 1 — это маска подсети (netmask).

Задать значение опции DHCP с номером 3. Опция с номером 3 — это шлюз по умолчанию (default gateway).

Этих опций в небольшой офисной или домашней сети обычно достаточно.

Список всех опций DHCP можно посмотреть на странице IANA (Internet Assigned Numbers Authority).

После задания настроек надо рестартовать сервис:

Теперь можно задавать настройки на компьютерах в сети на автоматическое получение адресов по DHCP.

Настройка dnsmasq как DNS

DNS — это второй базовый сервис, без которого в локальных сетях не обойтись, если, конечно, вы не планируете обращаться к компьютерам в локальной сети и Интернете по IP-адресам, в чем я сильно сомневаюсь. Dnsmasq работает как кэширующий DNS-сервер. У него есть одна полезная особенность. Он умеет использовать файл /etc/hosts как источник информации для DNS, что может быть очень полезно. Например, если есть какой-то локальный сервис, с которым работают пользователи в локальной сети, они могут к нему обращаться по имени, а не по адресу, адрес будет запрашиваться у DNS-сервера, который будет возвращать IP-адрес, к которому необходимо обращаться.

Настройка dnsmasq как DNS по сути не отличается от настройки как DHCP, поскольку все настройки хранятся в том же файле — /etc/dnsmasq.conf

Самое первое, что необходимо, — это название домена

Для определенной подсети можно указать отдельное имя домена:

И точно так же можно указать имя домена для интервала адресов:

Основная функция DNS-сервера — это преобразование доменных имен в IP-адреса и наоборот, но DNS-серверов даже в локальной сети может быть несколько. Поэтому может потребоваться указать для определенных доменов адреса DNS-серверов, на которые должны отравляться запросы:

Аналогично указывается сервер для обратной зоны:

В конфигурационном файле также можно указать соответствие имени IP-адресу.

Запись типа A в прямой зоне DNS (сопоставляющей IP-адрес запрошенному имени):

На любое имя хоста *.extdomain.net возвращается адрес 127.0.0.1.

Запись типа CNAME:

Эта запись создает алиас для локального имени sambaserver, чтобы к нему можно было обращаться по более короткому имени smb.

По умолчанию dnsmasq использует файл /etc/hosts для сопоставления имен хостов IP-адресам, но это тоже можно изменить. Если вы не хотите использовать /etc/hosts, вы можете указать это при помощи опции

Если же вы хотите использовать совместно с /etc/hosts еще один файл аналогичной структуры, для этого есть опция

Кроме задания собственных записей DNS можно изменять информацию, получаемую от внешних DNS-серверов путем подмены полученного IP-адреса. Для замены одного адреса:

Если при запросе доменного имени от внешнего DNS-сервера мы получим IP-адрес 1.2.3.4, то мы подменим его на адрес 5.6.7.8. Можно осуществлять подмену целыми подсетями:

Такая запись подменит любой адрес из подсети 1.2.3.0/24 на адрес из подсети 5.6.7.0/24. Если же вам необходимо подменять определенный интервал адресов, то такая возможность тоже есть:

Эта запись подменит адреса из интервала 10.0.0.10-10.0.0.40 на адреса 192.168.0.10-192.168.0.40

Для того, чтобы обращения к DNS шли именно на dnsmasq на том же сервере, где он сам работает, необходимо указать первой записью в /etc/resolv.conf следующую строку:

Читайте также:  Mikrotik hap lite настройка с нуля

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

Во многих системах /etc/resolv.conf генерируется автоматически при получении адреса от провайдера по DHCP, поэтому если просто записать эту строчку руками, при переподключении основного сетевого интерфейса файл будет перезаписан и эта строка исчезнет. Этого можно избежать, если раскомментировать в файле /etc/dhcp/dhclient.conf (или /etc/dhcp3/dhclient.conf, в зависимости от системы) строчку

Тогда даже при получении списка DNS-серверов по DHCP первой строчкой в /etc/resolv.conf будет строчка «nameserver 127.0.0.1».

И еще одна опция, которая может вам пригодиться, если вы хотите использовать свой список DNS-серверов:

Файл, который указывается в этой опции, должен иметь такую же структуру, как и /etc/resolv.conf. При наличии этой опции будет использован указанный файл вместо /etc/resolv.conf. И таких записей может быть больше одной.

А если необходимо просто указать несколько DNS-серверов, на которые будут форвардиться запросы, это можно сделать при помощи записи нескольких строчек с опцией server:

Вот, в общем, и всё. И не забывайте после изменения настроек рестартовать dnsmasq командой

Источник

Блог программиста-электронщика

“Стремись не к тому, чтобы добиться успеха,
а к тому, чтобы твоя жизнь имела смысл”
Альберт Энштейн

воскресенье, 8 января 2012 г.

Установка и настройка dnsmasq (DNS, DHCP, BOOTP/PXE, TFTP сервер)

Общую информацию о dnsmasq можно найти перейдя по этой ссылке.

1. Установка dnsmasq происходит достаточно легко (немного сложнее, если устанавливать из исходного кода)

основанные на Debian дистрибутивы, такие как Ubuntu
$ sudo apt-get install dnsmasq

основанные на Fedora дистрибутивы и Cent OS
$ su
# yum install dnsmasq

семейство *BSD, если установлена Ports коллекция
$ cd /usr/ports/dns/dnsmasq/
$ su
# make install clean
или, если вы предпочитаете добавить пакет

$ ipkg install dnsmasq

dnsmasq скрипт устанавливается в /opt/etc/init.d



2. Настройка dnsmasq также не представляет особых сложностей

Настройки можно изменять двумя путями, либо передать их через командную строку,
либо установить их в файле dnsmasq.conf. Наименование настроек(в не сокращенном варианте) передаваемых через командную строку и указываемых в файле dnsmasq.conf совпадают. Как правило выбирают второй вариант, поскольку он наиболее наглядный и позволяет добавлять комментарии к каждой настройке с помощью символа ‘#’.
Основные варианты расположения файла dnsmasq.conf
в зависимости от платформы, следующие:
/etc/dnsmasq.conf
/usr/local/etc/dnsmasq.conf
/opt/etc/dnsmasq.conf

В случае малого количества настраиваемых параметров их можно разместить в одном файле, либо передать через командную строку, но если будет использоваться множество настроек, то для лучшей структуризации можно разделить их по группам в разные файлы, это можно выполнить используя следующие опции:

# добавить файл конфигурации myfile.conf
# к настройкам (строк может быть >1)
# если указать вместо имени файла «-» ,
# то настройки будут получены из устройства stdin
conf-file=/etc/dnsmasq/myfile.conf

# добавить настройки из всех файлов,
# находящихся по умолчанию в папке /etc/dnsmasq/conf.d,
# кроме файлов .bak, а также заканчивающихся символом

,
# либо начинающиеся с «.», либо начинающиеся и
# заканчивающиеся символом «#» пропускаются всегда!
# общая форма: conf-dir= [, . ]
conf-dir=/etc/dnsmasq/conf.d,bak

Общие настройки сервиса лучше начать со следующих строк

# чтобы изменить идентификаторы пользователя UID, GID
# для процесса dnsmasq укажите следующие опции
user=dnsmasq
group=dnsmasq

Источник

Adblock
detector