Меню Рубрики

Установка dnsmasq ubuntu server

Ubuntu Documentation

DNSmasq prov >

  • DNS service
  • DHCP service (including features relating to network boot)

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 prov >

Note that the package «dnsmasq» interferes with Network Manager which can use «dnsmasq-base» to prov >

Setup for dnsmasq

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

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:

The prepend domain-name-servers; is the important part of the configuration. Adding the prepend option ensures that will appear on the top of the list of DNS servers. 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

The file should look something like this,

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:

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:

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

except-interface=eth0 if eth0 is the user’s internet/LAN connected interface.

  • Add DHCP server:

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

Save and exit the file, restart the daemon:

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

The user can add the line: nameserver 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 overr >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 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 (последним исправлял пользователь astrognome 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


Настройка DNS и DHCP на базе dnsmasq

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

Linux vkeiz 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686 GNU/Linux

$ ifconfig eth1 | grep -E «inet|HWaddr» — смотрит в интернет

eth1 Link encap:Ethernet HWaddr 08:00:27:7d:72:07

inet addr: Bcast: Mask:

inet6 addr: fe80::a00:27ff:fe7d:7207/64 Scope:Link

$ ifconfig eth0 | grep -E «inet|HWaddr»

eth0 Link encap:Ethernet HWaddr 08:00:27:c4:6e:2d — смотрит в локальную сеть.

inet addr: Bcast: Mask:

inet6 addr: fe80::a00:27ff:fec4:6e2d/64 Scope:Link

Включаем форвардинг пакетов:

$ sudo sysctl -p — применяем настройки

Настр а и ваем правила брандмауэра :

# iptables -F && iptables -X && iptables -t nat -F && iptables -t mangle -F

# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE root@vkeiz:

# iptables -I FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu

pre-up iptables-restore /etc/ip

Поиск пакета в репозитариях:

dnsmasq-base — A small caching DNS proxy and DHCP/TFTP server

dnsmasq — A small caching DNS proxy and DHCP/TFTP server

Информация по пакету в репозитариях :

Depends: netbase, adduser, dnsmasq-base (>= 2.55-1)

Устанавливаем в систему данный пакет:

$ sudo apt-get install dnsmasq

Reading package lists… Done

Reading state information… Done

The following NEW packages will be installed:

0 upgraded, 1 newly installed, 0 to remove and 384 not upgraded.

Need to get 14.3kB of archives.

After this operation, 123kB of additional disk space will be used.

Get:1 http://ru.archive.ubuntu.com/ubuntu/ maverick/universe dnsmasq all 2.55-1 [14.3kB]

Fetched 14.3kB in 0s (71.5kB/s)

Selecting previously deselected package dnsmasq.

(Reading database … 118561 files and directories currently installed.)

Unpacking dnsmasq (from …/dnsmasq_2.55-1_all.deb) …

Processing triggers for ureadahead …

ureadahead will be reprofiled on next reboot

* Starting DNS forwarder and DHCP server dnsmasq [ OK ]

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

$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup

Переходим к редактированию предварительно обнулив файл:

$ sudo bash -c ‘cat > /etc/dnsmasq.conf’

# Указываем локальный интерфейс, где будет наш сервис. Наружу выставлять не нужно:

# настройка не обязательна, но если указана,

# 1. позволяет DHCP хостам иметь FQDN имена,

# если часть домена совпадает

# 2. устанавливает DHCP опцию «domain» для всех

# систем настраиваемых по DHCP

# 3. устанавливает часть домена для настройки expand-hosts

# разрешить динамическую аренду адресов и срок аренды (7 дней)

# сообщить адрес шлюза клиентским машинам

# по умолчанию шлюзом назначается машина с DHCP сервисом

# расположение файла аренды адресов

# записывать дополнительную отладочную информацию

# Если необходимо, можно задать привязку для выдачи постоянного IP по MAC адресу:

В файле /etc/resolv.conf добавляем первой строчкой следующую запись:

nameserver — эту запись

$ sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf

В файле настроек /etc/dhcp3/dhclient.conf снимаем коментарий с параметра prepend
(prepend domain-name-server, …(дописать можно несколько DNS адресов))

$ sudo nano /etc/dhcp3/dhclient.conf

prepend domain-name-server

Перезагружаем службу dnsmasq:

$ sudo service dnsmasq restart

* Restarting DNS forwarder and DHCP server dnsmasq [ OK ]

Для того чтобы п оказать все выданные DHCP -адреса клиентам с сортировкой по дате выдачи:

$ cat /var/lib/misc/dnsmasq.leases | sort

1356595398 08:00:27:9f:dd:6e test1 01:08:00:27:9f:dd:6e

В итоге, рабочая станция по управлением Windows XP получила адрес –, в роли DNS-сервера выступила система Ubuntu 10.10 с адресом, DHCP-сервер с адресом

И ICMP-запросы идут с локальной станции в интернет, следовательно странички открываются.

Результат достигнут, на системе Ubuntu 10.10 поднят локальный DNS и DHCP, пошаговое руководство написано.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

Карта МКБ: 4432-7300-2472-8059
Yandex-деньги: 41001520055047

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Читайте также:  Установка вакуумного редуктора на инжектор



Блог про 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 подключен к провайдеру, поэтому его крайне нежелательно указывать в качестве интерфейса для работы сервиса.

Интервал выдаваемых адресов и время аренды адресов (в данном случае 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 возвращается адрес

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

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

Читайте также:  Установка защиты на эксель

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

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

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

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

Эта запись подменит адреса из интервала на адреса

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

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

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

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

И еще одна опция, которая может вам пригодиться, если вы хотите использовать свой список 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
или, если вы предпочитаете добавить пакет

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

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

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

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

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

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

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

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

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


Добавить комментарий