What is dnsmasq linux

Установка и примеры настройки Dnsmasq

Обновлено

Обновлено: 28.10.2022 Опубликовано: 03.09.2021

Используемые термины: Dnsmasq, DNS, Linux. Данная инструкция будет состоять из двух основных частей — установка программного обеспечения и примеры по его настройки под различные задачи. Мы рассмотрим примеры работы на системах Linux Ubuntu и Rocky Linux (CentOS).

Установка, настройка системы и запуск

1. Установка выполняется немного, по-разному, в зависимости от выбранного дистрибутива Linux. Рассмотрим примеры систем на базе Deb и RPM. а) Для Debian / Ubuntu (Deb):

Как правило, она связана с тем, что на компьютере работает сервис systemd-resolved, который занял порт 53. Чтобы это исправить, отключаем его:

3. Настраиваем брандмауэр. Нам необходимо открыть UDP порт 53. Как правило, используется 2 системы управления netfilter — iptables и firewalld. Рассмотрим обе. а) При использовании iptables (как правило, для систем на базе Deb):

4. Проверяем работоспособность сервиса. На любом из компьютеров в сети делаем запрос при помощи nslookup:

* где 192.168.0.15 — адрес в сети нашего сервера, куда мы установили dnsmasq. Мы должны получить ответ на подобие:

Server: 192.168.0.15
Address: 192.168.0.15#53

Non-authoritative answer:
Name: dmosk.ru
Address: 92.53.96.18

Примеры настройки dnsmasq

Переходим к основной части инструкции. Приведем примеры использования и соответствующей настройки dnsmasq.

1. Перевод запросов на другой DNS-сервер для определенного домена

Предположим, у нас есть задача — переводить все запросы для имен с доменом consul на другой DNS-сервер, который находится в нашей сети. Также, данный сервер слушает не на стандартном для NS-сервера порту (53), а на порту 8600. Кстати, это реальный пример работы при настройке кластера consul. Создаем конфигурационный файл:

* в данном примере мы будем переводить все запросы для домена consul на сервер 127.0.0.1 (в этом примере локальный сервер, но может быть любой) и порт 8600.

Если мы работаем в системе с включенным SELinux и переводим запросы на нестандартный порт, то необходимо добавить правило:

2. Настройка кэширования

По умолчанию, dnsmasq работает как кэширующий сервер. Мы же подредактируем настройки. Создаем конфигурационный файл:

  • cache-size — размер кэша (количество хостов).
  • all-servers — задает поведение, при котором наш сервер будет отправлять запрос всем доступным ему серверам DNS и принимать ответ от того, кто первый ему ответит.
  • no-negcache — не кэшировать негативные ответы.

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

systemctl restart dnsmasq

3. Подмена IP-адресов

Есть несколько вариантов подмены IP-адресов в dnsmasq. Для настройки создадим файл:

В зависимости от ситуации, применяем один из вариантов, описанных ниже.

Читайте также:  How to undo linux

* в данном примере если наш сервер получит ответ 1.1.1.1, он его заменит на 2.2.2.2.

б) Подмена адресов в подсети:

* в данном примере все адреса из подсети 1.1.1.0/24 будут заменены на соответствующие адреса подсети 2.2.2.2/24.

* в данном примере адреса в диапазоне от 1.1.1.100 до 1.1.1.200 будут переопределены в адреса в диапазоне от 192.168.0.100 до 192.168.0.200.

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

systemctl restart dnsmasq

4. Произвольный адрес

Мы можем быстро добавить любой адрес и привязать его к доменному имени. Делается это с помощью директивы address:

address=/dmosk.local/127.0.0.1
address=/dmosk.local/192.168.0.15
address=/mail.dmosk.local/192.168.0.16

* в нашем примере dnsmasq будет знать о двух записях — dmosk.local и mail.dmosk.local. Первая будет разрешаться в два адреса.

systemctl restart dnsmasq

5. Форвард запросов на другой сервер

С помощью опции server мы можем указать серверы, на которые нужно передавать запрос DNS.

* в данном примере мы передадим запросы на серверы Google.

systemctl restart dnsmasq

6. Файл hosts

В зависимости от ситуации, нам может потребоваться разрешать некоторые имена с помощью файла /etc/hosts. Или наоборот — настройки из данного файла могут нам мешать.

В dnsmasq предусмотрена директива hosts, с помощью которой мы можем манипулировать результатами с использованием файла hosts.

а) Если мы хотим, чтобы данные из файла учитывались:

б) Если нам не нужны данные из файла:

systemctl restart dnsmasq

Это, далеко, не все возможности dnsmasq. По мере необходимости, они будут дополняться в данной инструкции.

Диагностика и решение проблем

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

* где опция log-queries разрешает логи запросов; log-facility позволяет задать путь до файла с логами.

Создаем каталог для хранения лога:

Перезапускаем dnsmasq, чтобы применить изменения:

systemctl restart dnsmasq

Прочитать лог можно командой (непрерывное чтение):

tail -f /var/log/dnsmasq/dnsmasq.log

Смотрите также

Возможно, также будет интересны инструкции:

Источник

Dnsmasq

A local DNS cache can speed up internet browsing because the user’s browser will not need to access a domain name server when it looks up a domain name the computer has visited before.

DHCP allows the user’s computer to allocate network addresses to other computers on the wired or wireless network. A computer needs a unique network address in order to do access the internet.

DNSmasq is not designed for so-called «Internet Connection Sharing,» however, it does provide a lot of the services needed in the background. With DNSmasq set up, only two additional commands can set up internet connection sharing (ref?).

Note that the package «dnsmasq» interferes with Network Manager which can use «dnsmasq-base» to provide DHCP services when sharing an internet connection. Therefore, if you use network manager (fine in simple set-ups only), then install dnsmasq-base, but not dnsmasq. If you have a more complicated set-up, uninstall network manager, use dnsmasq, or similar software (bind9, dhcpd, etc), and configure things by hand.

Читайте также:  Основами администрирования linux ubuntu

Setup for dnsmasq

Like much of the Ubuntu packages, dnsmasq is in universe. Make sure its enabled, then run these commands

$ sudo apt-get install dnsmasq

dnsmasq can be configured by editing the file

Local DNS Cache

A DNS server resolves human readable domain names into IP addresses. For example, when one requests ubuntu.com, the DNS server finds the IP address for ubuntu.com . One can run a DNS cache on a computer via the steps below. This will shorten the time required to look up domain names when browsing. The difference in time is on the order of hundreds of milliseconds.

After dnsmasq has been installed, use the text editor of choice, such as gedit, nano or vim to edit:

Note: in order to save modifications, the editor must be run with administrator permissions, e.g. sudo gedit /etc/dnsmasq.conf . Change the line that looks like (should be around line 90):

Make sure that around line 20 looks like the following:

#supersede domain-name "fugue.com home.vix.com"; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, netbios-name-servers, netbios-scope;

The prepend domain-name-servers 127.0.0.1; is the important part of the configuration. Adding the prepend option ensures that 127.0.0.1 will appear on the top of the list of DNS servers. 127.0.0.1 refers to the user’s own computer. Whenever the user’s computer needs to resolve a domain name, it will forward that request to dnsmasq (which is running at 127.0.0.1).

The file should look something like this,

search yourisp.com nameserver 192.168.0.1 nameserver 205.171.3.25 nameserver 205.171.3.26

Don’t worry if the above listed nameserver numbers are not the same as what appear in the text editor. But be sure to add the user’s computer as a nameserver at the top of the list:

search yourisp.com nameserver 127.0.0.1 nameserver 192.168.0.1 nameserver 205.171.3.25 nameserver 205.171.3.26

All that is left is to restart dnsmasq so that the changes we made to the configuration file come into effect. We do that via the command:

$ sudo /etc/init.d/dnsmasq restart

Now there is a DNS cache set up on the user’s computer. To see the difference in speed, we can make use of the dig command twice on our test website:

The first time this happens, the output will look like:

The second time will look like:

Special Cases

  • If you are on a large LAN (e.g. business or university) it might not be desirable to provide name service or DHCP for a thousand colleagues, so add the line:

dhcp-range=192.168.0.20,192.168.0.254,255.255.255.0 This range must not clash with your LAN IP address.

Читайте также:  Linux размер папок с сортировкой

Save and exit the file, restart the daemon:

sudo invoke-rc.d dnsmasq restart

DNSmasq is now listening on some interfaces for DNS lookups and/or DHCP requests. One can verify this by running:

ss -ltp # -l = listen, -t = tcp, -p = show program name

The user can add the line: nameserver 127.0.0.1 to the top of your /etc/resolv.conf file to use the local DNS cache first.

Alternatively, the package resolvconf sorts all this out automatically.

Note: If you have the resolvconf package installed, you cannot use the «resolv-file=» option in your /etc/dnsmasq.conf configuration file as this value will be overridden by the init.d script when dnsmasq is started up. You should specify your upstream DNS servers using a dns-nameservers line (and optionally a dns-search line and other dns- options) for each interface in /etc/network/interfaces. The resolvconf scripts will automatically create a special file located at /var/run/dnsmasq/resolv.conf with your upstream servers and put 127.0.0.1 in /etc/resolv.conf to ensure DNS queries on your local machine use dnsmasq. For more information, see the resolvconf(8) man page.

Unlike the ISC DHCP server which «. in some configurations bypasses the kernel firewall rules entirely» — http://thekelleys.org.uk/dnsmasq/docs/FAQ

— for dnsmasq to work, iptables mustn’t block the DHCP port

^ This command will cause UFW to open the DHCP port, called bootps in /etc/services

Dnsmasq (последним исправлял пользователь ics131-233 2011-12-15 22:40:34)

The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details

Источник

Dnsmasq

For extra compactness, unused features may be omitted at compile time.

Get code.

Download dnsmasq here. The tarball includes this documentation, source, and manpage. There is also a CHANGELOG and a FAQ. Dnsmasq has a git repository which contains the complete release history of version 2 and development history from 2.60. You can browse the repo, or get a copy using git protocol with the command

git clone git://thekelleys.org.uk/dnsmasq.git 
git clone http://thekelleys.org.uk/git/dnsmasq.git 

License.

Dnsmasq is distributed under the GPL, version 2 or version 3 at your discretion. See the files COPYING and COPYING-v3 in the distribution for details.

Contact.

There is a dnsmasq mailing list at http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss which should be the first location for queries, bugreports, suggestions etc. The list is mirrored, with a search facility, at https://www.mail-archive.com/dnsmasq-discuss@lists.thekelleys.org.uk/. You can contact me at simon@thekelleys.org.uk.

Donations.

Dnsmasq is mainly written and maintained by Simon Kelley. For most of its life, dnsmasq has been a spare-time project. These days I’m working on it as my main activity. I don’t have an employer or anyone who pays me regularly to work on dnsmasq. If you’d like to make a contribution towards my expenses, please use the donation button below.

Источник

Оцените статью
Adblock
detector