# dnsmasq (Русский)

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

## Установка

Dnsmasq находится в репозиториях и может быть установлен так: dnsmasq

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

Вам нужно отредактировать конфигурационные файлы Dnsmasq. Измените `/etc/dnsmasq.conf`:

    # Only listen to router LAN NIC, also opens up tcp/udp port 53 to localhost
    # and udp port 67 to world:
    interface=<LAN-NIC>

    # dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with
    # dynamic interfaces (assigning dynamic ips). Dnsmasq will discard world
    # requests to them, but the paranoid might like to close them and let the
    # kernel handle them:
    bind-interfaces

    # Dynamic range of IPs to make available to LAN pc
    dhcp-range=192.168.111.50,192.168.111.100,12h

    # If you’d like to have a static ip, bind the LAN computer's NIC MAC address:
    dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50

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

    domain ALL : ALLOW

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

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

    listen-address=127.0.0.1

dhcp клиент должен быть переадресован на адрес 127.0.0.1 (localhost) для обработки запросов DNS. После настройки Dnsmasq, вам нужно задать `/etc/resolv.conf` список ваших DNS серверов (если вы, конечно это ранее не сделали). Когда DHCP клиент сконфигурирован, вам нужно перезапустить сеть, чтобы изменения вступили в силу.

    sudo /etc/rc.d/network restart

Или вариант с systemd

    sudo systemctl restart dnsmasq

### dhcpcd

Dhcpcd может сам добавлять или удалять DNS сервера в `/etc/resolv.conf` создавая `/etc/resolv.conf.head` и `/etc/resolv.conf.tail`

    echo "nameserver 127.0.0.1" > /etc/resolv.conf.head

### dhclient

Если вы используете dhclient, добавьте в `/etc/dhcp/dhclient.conf`:

    prepend domain-name-servers 127.0.0.1;

## Запуск

Dnsmasq должен быть запущен как демон:

    /etc/rc.d/dnsmasq start

Для запуска dnsmasq при загрузке системы, добавьте dnsmasq секцию DAEMONS в `/etc/rc.conf`:

    DAEMONS=(network dnsmasq ...)

Для отслеживания ошибок и сообщений сервера вы можете смотреть log-файл `/var/log/messages.log` он отправляет свои сообщения в него.

Вариант с systemd (может потребовать привилегий root`a)

Старт сервера (до перезагрузки):

     systemctl start dnsmasq

Автозагрузка:

    systemctl enable dnsmasq

Выключение автозагрузки:

    systemctl disable dnsmasq

Просмотр состояния:

    systemctl status dnsmasq

Чтение журнала:

    journalctl -u dnsmasq

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

Клиентом из сети, с установленной и запущенной сетью. Установите подключение к машине с запущенным Dnsmasq.

## Тестирование кэширования DNS

Выполните:

    dig archlinux.org | grep "Query time"

(dig это часть dnsutils):

Запустите еще раз и сравните результаты.

## Заметки

Дополнительные трюки с Dnsmasq.

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

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

    server=/www.google.com/<ISP DNS IP> //IP адрес сервера DNS провайдера

Category:

- Networking (Русский)