Dnsmasq настройка centos 7

Обновлено: 07.07.2024

Сервер протокола динамической конфигурации хоста (DHCP) динамически назначает IP-адреса и другие параметры конфигурации сети каждому устройству в сети. Сервер пересылки DNS в локальной сети пересылает DNS-запросы для нелокальных доменных имен вышестоящим DNS-серверам (за пределами этой сети). Сервер кэширования DNS отвечает на рекурсивные запросы от клиентов, чтобы запрос DNS мог быть решен быстрее, тем самым улучшая скорость поиска DNS для ранее посещенных сайтов.

dnsmasq - это легкий и простой в настройке сервер пересылки DNS, программное обеспечение DHCP-сервера и подсистема объявления маршрутизатора для небольших сетей. Dnsmasq поддерживает Linux, * BSD, Mac OS X, а также Android.

Он имеет подсистему DNS, которая предоставляет локальный DNS-сервер для сети, с пересылкой всех типов запросов на вышестоящие рекурсивные DNS-серверы и кэшированием общих типов записей. Подсистема DHCP поддерживает DHCPv4, DHCPv6, BOOTP, PXE и u200bu200bсервер TFTP. Подсистема объявления маршрутизатора поддерживает базовую автоконфигурацию для хостов IPv6.

В этой статье мы расскажем, как установить и настроить DNS/DHCP-сервер с помощью dnsmasq в дистрибутивах CentOS/RHEL 8/7.

Установка dnsmasq в CentOS и RHEL Linux

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


2. После завершения установки пакета dnsmasq вам необходимо запустить службу dnsmasq и включить ее автоматический запуск при загрузке системы. Кроме того, проверьте его статус, чтобы убедиться, что он запущен и работает, используя следующие команды systemctl.


Настройка сервера dnsmasq в CentOS и RHEL Linux

3. Сервер dnsmasq можно настроить с помощью файла /etc/dnsmasq.conf (который содержит хорошо прокомментированные и объясненные параметры), а пользовательские файлы конфигурации также можно добавить в каталог /etc/dnsmasq.d.

DNS включен по умолчанию, поэтому перед внесением каких-либо изменений обязательно создайте резервную копию файла /etc/dnsmasq.conf.

4. Теперь откройте файл /etc/dnsmasq.conf с помощью вашего любимого текстового редактора и выполните следующие предлагаемые настройки конфигурации.

Параметр listen-address используется для установки IP-адреса, по которому dnsmasq будет прослушивать. Чтобы использовать сервер CentOS/RHEL для прослушивания запросов DHCP и DNS в локальной сети, установите для параметра listen-address его IP-адреса в локальной сети (не забудьте включить 127.0.0.1), как показано. Обратите внимание, что IP-адрес сервера должен быть статическим.

В связи с вышеизложенным вы можете ограничить интерфейс, который dnsmasq прослушивает, используя параметр интерфейса (добавьте больше строк для более чем одного интерфейса).

5. Если вы хотите, чтобы домен (который можно настроить, как показано ниже) автоматически добавлялся к простым именам в файле hosts, раскомментируйте параметр expand-hosts .

6. Чтобы установить домен для dnsmasq, что означает, что клиенты DHCP будут иметь полные доменные имена, пока заданный домен совпадает, и задает параметр DHCP «домен» для всех клиентов.

7. Затем также определите вышестоящий DNS-сервер для нелокальных доменов с помощью опции сервера (в форме server u003d dns_server_ip), как показано.

8. Затем вы можете принудительно настроить локальный домен на IP-адрес (а), используя параметр адреса, как показано.

9. Сохраните файл и проверьте синтаксис файла конфигурации на наличие ошибок, как показано.


10. На этом этапе вам нужно сделать так, чтобы все запросы отправлялись в dnsmasq, добавив адреса localhost в качестве единственных серверов имен в файл /etc/resolv.conf.


11. Файл /etc/resolv.conf обслуживается локальным демоном, особенно командой chattr, как показано.


12. Dnsmasq считывает все DNS-хосты и имена из файла/etc/hosts, поэтому добавьте IP-адреса и пары имен ваших DNS-хостов, как показано.


Важно: локальные DNS-имена также могут быть определены путем импорта имен из подсистемы DHCP или путем настройки широкого диапазона полезных типов записей.

13. Чтобы применить вышеуказанные изменения, перезапустите службу dnsmasq, как показано.

14. Если у вас запущена служба firewalld, вам необходимо открыть службы DNS и DHCP в конфигурации брандмауэра, чтобы разрешить передачу запросов от хостов в вашей локальной сети на сервер dnsmasq.

15. Чтобы проверить, нормально ли работают локальный DNS-сервер или пересылка, вам необходимо использовать такие инструменты, как nslookup для выполнения DNS-запросов. Эти инструменты предоставляются пакетом bind-utils, который может не входить в предустановленный в CentOS/RHEL 8, но вы можете установить его, как показано.

16. После установки вы можете выполнить простой запрос в своем локальном домене, как показано.


17. Вы также можете попытаться запросить полное доменное имя одного из серверов.


18. Чтобы проверить обратный поиск IP, выполните аналогичную команду.


Включение DHCP-сервера с помощью dnsmasq

19. Вы можете включить DHCP-сервер, раскомментировав параметр dhcp-range и указав диапазон адресов, доступных для аренды, и, при необходимости, время аренды, например (повторить для более чем одной сети).

20. Следующая опция определяет, где DHCP-сервер будет хранить свою базу данных аренды, это поможет вам легко проверить IP-адреса, которые он назначил.

21. Чтобы перевести DHCP-сервер в полномочный режим, раскомментируйте параметр.

22. Сохраните файл и перезапустите службу dnsmasq, чтобы применить последние изменения.

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

В данной заметке я хочу рассмотреть простой и быстрый вариант настройки шлюза для организации доступа в интернет из локальной сети на базе CentOS 7. Не будет никакого дополнительного функционала, только самое необходимое для доступа к интернету компьютеров за шлюзом.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Данная статья является частью единого цикла статьей про сервер Debian.

Введение

В нашем распоряжении будет следующий сервер для настройки шлюза:

Использовался образ minimal для установки CentOS 7. Если вы еще не выполнили установку, рекомендую воспользоваться моим материалом на эту тему. На сервере две сетевые карты eth0 и eth1:

  • eth0 подключена к интернету
  • eth1 подключена к локальной сети вместе с компьютерами

В данной статье мы выполним необходимые предварительные настройки на сервере, включим nat, настроим firewall и установим средство мониторинга сетевой активности.

Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера - попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети - clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал о настройке clearos.

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

Любую настройку сервера я рекомендую начинать с обновления:

После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:

Дальше отключаем selinux. Находим файл /etc/sysconfig/selinux и редактируем его:

Приводим строку с соответствующим параметром к следующему виду:

Чтобы применить изменения, перезагружаем сервер:

Более подробно о базовой настройке сервера CentOS 7 читайте отдельно. Мы же двигаемся дальше.

Теперь настроим сеть. Я очень подробно рассмотрел вопрос настройки сети в CentOS 7 в своем отдельном материале. Рекомендую с ним ознакомиться. Здесь же я кратко выполню необходимые команды, без пояснений.

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

Теперь включаем классическую службу сети в CentOS 7:

Настраиваем сетевые интерфейсы:

Перезапускаем службу сети:

Смотрим, что получилось:

Сетевые параметры в CentOS 7

Вы настраивайте сеть в зависимости от своих условий. Если внешний адаптер получает настройки не по dhcp, как у меня, а в статике, то не забудьте настроить шлюз по-умолчанию и dns сервер. Как это сделать написано в моей статье о сетевых параметрах, ссылку на которую я приводил выше.

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

Включаем маршрутизацию, firewall и nat

Чтобы сервер мог маршрутизировать пакеты между сетевыми адаптерами, необходимо выполнить следующую настройку. Находим файл /etc/sysctl.conf и вставляем туда строку:

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

Теперь приступаем к самому главному - настройке фаерволла. Опять же отсылаю вас к своему материалу, где я очень подробно рассмотрел вопрос настройки iptables в CentOS 7. Там же приведен готовый скрипт для iptables. Так что выполняем все необходимые действия без пояснений.

Устанавливаем службы iptables:

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

Помещаем отредактированный скрипт в /etc/iptables.sh и делаем его исполняемым:

Добавляем их в автозагрузку:

Выполняем скрипт с правилами:

Проверяем установленные правила:

активные правила iptables

Если у вас то же самое, значит вы все сделали правильно.

По сути наш шлюз уже готов и может обслуживать клиентов. Но не работает одна важна служба, без которой нормальной работы с интернетом не получится. Нам нужно настроить кэширущий dns сервер для клиентов локальной сети. Можно пойти по простому и очень простому пути. Простой путь это выполнить простейшую настройку dns сервера bind. Как это сделать у меня опять же подробно написано отдельно - настройка Bind 9 в CentOS 7. Рекомендую ознакомиться, там рассмотрены интересные нюансы настройки.

Очень простой путь это установить dnsmasq, который помимо dns сервера включает в себя еще и dhcp сервер, который нам может пригодиться.

Установка и настройка dnsmasq в CentOS 7

С большой долей вероятности dnsmasq у вас уже установлен. Проверить это можно следующей командой:

Если вывод такой же, значит пакет уже стоит. Если нет, то устанавливаем dnsmasq командой:

Редактируем файл конфигурации /etc/dnsmasq.conf и приводим его к очень простому виду:

Либо перезапускаем, если он был у вас запущен:

Добавляем dnsmasq в автозагрузку:

Я редактировал конфиг, когда у меня уже был установлен и запущен dnsmasq. И он то ли завис, то ли просто затупил, но я не мог его перезагрузить или остановить с помощью systemctl. Пришлось перезагрузить сервер. После этого все нормально заработало. Клиент на windows получил сетевые настройки. Информация об этом появилась в логе /var/log/messages. Я проверил на клиенте интернет, все было в порядке, он работал.

На этом настройка завершена, шлюзом под CentOS 7 можно пользоваться.

Анализ сетевой активности на шлюзе в linux

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

Она отсутствует в стандартном репозитории CentOS 7. Для ее установки необходимо подключить репозиторий epel:

Устанавливаем iftop на CentOS 7:

Теперь мы можем смотреть загрузку сети на шлюзе в режиме реального времени. Чтобы увидеть сетевую активность, достаточно запустить iftop:

По-умолчанию она слушает интерфейс eth0. Это внешний интерфейс шлюза, на нем все подключения будут отображены от имени самого шлюза и определить, кто же в сети занимает канал мы не сможем. Чтобы это увидеть, необходимо запустить просмотр сетевой активности на локальном интерфейсе. Сделать это не сложно, достаточно запустить iftop с параметром:

Теперь уже гораздо интереснее. Я еще добавил параметр -P, который отображает порты, по которым проходят соединения. Посмотрим, кто больше всех загружает канал интернета:

Анализ сетевой активности на шлюзе

В моем случае это пользователь с ip 192.168.10.98, на котором я запустил проверку скорости интернета с серверов Яндекса.

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

Заключение

С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.

Давайте разберемся в том, что мы сделали:

  1. Выполнили предварительную настройку сервера, подготовили его к работе.
  2. Включили маршрутизацию.
  3. Настроили firewall.
  4. Включили NAT.
  5. Установили и настроили dnsmasq для организации служб dns и dhcp.
  6. Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.

Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Онлайн курсы по Mikrotik

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

93 комментария

Спасибо за статью, настроил на centos 8, я новичок, шлюз заработал но не сразу, было много ошибок с моей стороны в iptables, название соединения а не устройства, ошибки в переменных, чтение логов прояснило ситуацию.

Здравствуйте, настраивал сервер по вашему сайту еще года 3 назад, спасибо огромное! Но почему пппое соединение медленное? Кабель гигабит и скорость 250 на тарифе, в ноуте и вифи 200-250 дает, но в серваке ни в какую, куда гуглить? Сам понимаю на уровне прочитал, повторил и забыл, спасибо заранее!
Да, с сервером тоже гигабит и самба диск расшаренный обменивается с гигабитной скоростью файлами.

А в ноуте это же pppoe подключение пробовали? Пров точно дает 250 скорость? Может это он не вытягивает?

Да, в ноуте и в роутере, дает 250 без проблем, ноут по локали с файлопомойкой на сервере тоже дает гигабит судя по скоростям, на самом сервере спидтест тоже скорости 60-80 мбит дают

Спасибо, почитал, из того что нашел это добавил в правила $IPT -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu понятия не имею что это и в / etc / sysconfig / network-scripts / ifcfg-ppp0 добавил PLUGIN='/usr/lib64/pppd/2.4.5/rp-pppoe.so' вроде как про это везде, смысл отдаленно что это скоростной. Так же в файле ifcfg-ppp0 есть строка CLAMPMSS=1450 я подумал что это MTU и поменял на рекомендуемый провайдером и многими интернет ресурсами 1492, но тогда ifup ppp0 подниматься не хочет, мои манипуляции ничего не испортили, уже хорошо, но и пользы не принесли.
Да по ifconfig MTU на ppp0 1492 стоит какой бы в ifcfg-ppp0 параметр CLAMPMSS не ставил (меньше 1450 нормально поднимается, пробовал 1412 например)

Блин извиняюсь, все заработало, после того как дал доступ во внутреннюю сеть в фаерволе.

сами попробуйте настроить шлюз придерживаясь чисто своей статьи.

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

все сделал как в статье нифига не заработало

Что именно не заработало? Тут нет никакой магии. Просто настройка iptables, dhcp и dns.

Вообще у кого нибудь заработал шлюз настроенной по этой статье? Отпишитесь.

первая сетевая карта использует тот же днс и интернет на ней работает

Добрый день, сделал все как написано в статье, но в локалке интернета нету. Почему? Можете объяснить?

ens34: flags=4163 mtu 1500
inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe52:9d91 prefixlen 64 scopeid 0x20
ether 00:0c:29:52:9d:91 txqueuelen 1000 (Ethernet)
RX packets 687 bytes 52943 (51.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23 bytes 1550 (1.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 base 0x2000

lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 26 bytes 1798 (1.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26 bytes 1798 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Во-первых, вам необходимо настроить статический IP-адрес на вашем компьютере с CentOS 7. Вы можете сделать это через текстовый пользовательский интерфейс Network Manager nmtui .

Запустите nmtui с помощью следующей команды:


Теперь выберите Отредактируйте соединение и нажмите .


Теперь выберите Автоматически в разделе КОНФИГУРАЦИЯ IPv4 и нажмите .


Теперь выберите Вручную и нажмите .


Теперь перейдите к и нажмите .


Теперь вам нужно добавить IP-адрес, шлюз, адрес DNS-сервера и поисковый домен.


Адрес должен быть IP-адресом вашей машины CentOS 7. Это будет IP-адрес вашего DNS-сервера после настройки dnsmasq.

Используйте IP-адрес, который вы устанавливаете свой компьютер CentOS 7 в качестве основного DNS-сервера. Затем я предпочитаю добавить 8.8.8.8 (общедоступный DNS-сервер Google) в качестве вторичного DNS-сервера.

Домен поиска должен быть вашим собственным доменным именем.

После того, как вы Готово, убедитесь, что отмечены все отмеченные параметры. Вы можете выбрать параметры и нажать , чтобы проверить их, если они еще не отмечены.

Затем перейдите к и нажмите .


Наконец, дважды нажмите и перезагрузите компьютер с помощью следующей команды:


После загрузки компьютера IP-адрес должен быть установлен, как показано на скриншоте ниже.


Установка dnsmasq:

Dnsmasq доступен в официальном репозитории пакетов CentOS 7. Итак , вы можете легко установить его с помощью менеджера пакетов YUM.

Сначала обновите кеш репозитория пакетов YUM с помощью следующей команды:


Теперь выполните следующую команду для установки dnsmasq:


Теперь нажмите y , а затем нажмите , чтобы продолжить.


Нажмите y , а затем нажмите , чтобы также принять ключ GPG репозитория CentOS 7.


dnsmasq должен быть установлен.


Настройка dnsmasq:

Чтобы переименовать файл конфигурации dnsmasq, выполните следующую команду:


Теперь создайте новый файл конфигурации с помощью следующей команды:


Теперь нажмите i , чтобы перейти в режим INSERT. vi и введите следующие строки. Затем нажмите . Наконец, введите : wq! и нажмите , чтобы сохранить файл.


Здесь порт используется для установки порта ( 53 в этой статье), который dnsmasq будет слушать.

Теперь перезапустите службу dnsmasq с помощью следующей команды:


Теперь проверьте, правильно ли работает сервер dnsmasq, с помощью следующей команды:

Это работает правильно.


Добавление новых записей DNS в dnsmasq:

Теперь вы можете очень легко добавлять новые записи DNS в dnsmasq, используя файл /etc/hosts ..

Для этого откройте файл /etc/hosts с помощью vi следующим образом:


Теперь, введите следующие строки в конце файла и сохраните файл.

Здесь у вас есть DNS запись в каждой строке. Каждая строка содержит IP-адрес и имя хоста, разделенные табуляцией или пробелами. Сначала вы вводите IP-адрес, а затем имя хоста.


Теперь перезапустите службу dnsmasq, чтобы изменения вступили в силу.


Тестирование DNS-сервера:

Теперь вы можете использовать dig, чтобы проверить, сервер работает или нет.

ПРИМЕЧАНИЕ. По умолчанию команда dig недоступна в CentOS 7. Команда dig включена в пакет bind-utils . Вы можете установить его следующим образом:


Как видите, IP-адрес DNS имя напечатано. Итак, он работает.


dnsmasq также может действовать как Кеширование DNS-сервера. Чтобы проверить, работает ли кэширование DNS, выполните следующую команду:


Other dnsmasq Параметры:

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

Например, чтобы установить размер кэша на 1000, используйте

Например, чтобы использовать файл /etc/resolv2.conf в качестве dnsmasq resolv-file ,

создайте файл следующим образом:

Теперь добавьте туда свои DNS-серверы в следующем формате. Не забывайте ставить высокоприоритетные выше других.

Затем добавьте следующую строку в файл /etc/dnsmasq.conf .

Есть еще много вариантов dnsmasq. Я рекомендую вам проверить конфигурацию по умолчанию dnsmasq, которую вы ранее переименовали в /etc/dnsmasq.conf.bk , для получения дополнительной информации.

Итак, вот как вы настраиваете DNS-сервер dnsmasq на CentOS 7. Спасибо за чтение этой статьи.

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

Установка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запись типа 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 следующую строку:

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

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

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

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

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

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

Читайте также: