Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

Настройка программы dnsmasq для DHCP и сервер имен

30 марта 2014

Условия



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

Другой важной предпосылкой является правильная конфигурация файла /etc/ hosts на компьютере-шлюзе. Я на собственном опыте убедился, что этот файл зачастую не соответствует требованиям dnsmasq. Не забывайте лишний раз взглянуть на этот файл, прежде чем соберетесь изменять локальную конфигурацию сети, заданную на компьютере-шлюзе!

Как минимум, в /etc/hosts должны содержаться две приведенные далее строки. Вторая строка имеет определяющее значение для соотнесения имени локального компьютера (например, mars или mars.sol в данном случае) и IP-адреса в локальной сети (здесь 192.168.0.1)! Часто далее присутствуют и другие строки, описывающие конфигурацию IPv6, но мы не будем рассматривать это.

# /etc/hosts на компьютере-шлюзе 127.0.0.1 localhost 192.168.0.1 mars mars.sol

СОВЕТ



Если возникнут проблемы, проверьте конфигурацию брандмауэра! Сетевой интерфейс локальной сети не должен блокироваться брандмауэром. В зависимости от программы, используемой в качестве брандмауэра, сетевой интерфейс должен быть соотнесен с внутренней (то есть незащищенной) зоной.

Файл dnsmasq.conf



Конфигурация dnsmasq выполняется в файле /etc/dnsmasq.conf. Этот файл, по умолчанию присутствующий в дистрибутиве, также служит техническим документом и содержит около 400 строк комментариев. Немногочисленные важные команды среди этого множества комментариев можно не заметить. Переименуйте файл в dnsmasq.conf.orig или создайте с помощью команды grep новый файл, не содержащий комментариев:

<code>root# cd /etc

root# cp dnsmasq.conf dnsmasq.conf.orig

root# grep -v '*#' /etc/dnsmasq.conf.orig | cat -s > dnsmasq.confO</code>

Для конфигурации dnsmasq очень важен не только файл /etc/dnsmasq.conf, но и / etc/hosts и /etc/resolv.conf.

Запуск/перезапуск

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

root# /etc/init.d/dnsmasq restart

Кроме того, от конкретного дистрибутива зависит, должна ли программа в дальнейшем автоматически запускаться при запуске компьютера. В Fedora, Red Hat и SUSE по умолчанию этого не происходит.

Минимальная конфигурация



Файл dnsmasq.conf достаточно хорошо функционирует уже при показанной ниже минимальной конфигурации. При этом программа играет роль кэша сервера имен для работы в Интернете и предоставляет клиентам IP-адреса из диапазона между 192.168.0.2 и 192.168.0.250. Клиенты сохраняют свои хост-имена.
<code>
# /etc/dnsmasq.conf (минимальная конфигурация) domain-needed

bogus-priv interface=ethl

dhcp-range=192.168.0.2,192.168.0.250,24h</code>


Коротко объясню отдельные ключевые слова: domain-needed и bogus-priv не позволяют dnsmasq передавать хост-имена и IP-адреса локальных компьютеров серверу имен вашего интернет-провайдера (таким образом, управляемый провайдером сервер имен отвечает только за имена и адреса из Интернета, но не из локальных сетей).

Ключевое слово interface указывает, что dnsmasq, выполняющая функцию DHCP-сервера, должна отвечать только на те запросы, которые приходят с интерфейса ethl, который при рассматриваемой топологии отвечает за LAN.

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

Адреса сервера имен и шлюза не требуют дополнительной конфигурации. Программа dnsmasq сама интерпретирует /etc/resolv.conf и обращается к указанному в этом файле серверу имен. Клиентам DHCP передаются адреса сервера имен и шлюза — отдельно на IP-адрес каждого компьютера в локальной сети.

Применение локального сервера имен


При использовании вышеуказанной минимальной конфигурации dnsmasq может разрешать локальные адреса лишь в том случае, если в /etc/hosts содержится необходимая информация. Сервер имен не будет знать адреса, которые были присвоены динамически через DHCP. Чтобы dnsmasq также могла функционировать в качестве сервера имен для клиентов в сети LAN, добавьте в dnsmasq.conf следующие строки и укажите dnsmasq заново считать конфигурационный файл. Доменное имя рассматриваемой сети — sol.

<code># /etc/dnsmasq.conf (Применение в качестве сервера имен для адресов в локальной сети)

local=/sol/

domain=sol

expand-hosts
</code>

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

Слово domain указывает, что dnsmasq должна присвоить DHCP-клиентам заданное доменное имя. Это имя должно быть таким же, как и указанное в local.

Наконец, благодаря использованию expand-hosts запросы сервера имен, в которых не указан домен, автоматически дополняются доменным именем, заданным в domain. Итак, если выполнить команду ping uranus, то dnsmasq возвратит адрес uranus.sol.

Для того чтобы dnsmasq поименно различала своих клиентов, то есть компьютеры, которые запрашивают IP-конфигурацию через DHCP, необходимо, чтобы эти компьютеры сообщили программе свои хост-имена через DHCP. В большинстве дистрибутивов и конфигурационных программ для работы с LAN/WLAN, в том числе в Network Manager, эта настройка действует по умолчанию. Будьте внимательны, применяя на компьютерах-клиентах Fedora, Red Hat или старые версии Debian и Ubuntu. Соответствующие советы о том, как проводить конфигурацию, даются в подразделе «Клиентская конфигурация».

Статические адреса и хост-имена



Команду dnsmasq можно сконфигурировать и так, чтобы она настраивала хост-имена клиентов. Статическое соотнесение хост-имени и IP-адреса осуществляется на основании МАС-адреса клиента. Такая адресация удобна прежде всего при работе с устройствами, настраивать для которых хост-имена достаточно нелегко — это касается, например, сетевых принтеров. Для конфигурации используется ключевое слово dhcp-host. Следующий листинг — это запись о сетевом принтере pluto.

<code># /etc/dnsmasq.conf (Статическое присвоение адреса)

dhcp-host=00:c0:ee:51:39:9f,pluto,192.168.0.254
</code>

Самое сложное при таком варианте конфигурации — определить МАС-адрес (адрес для управления доступом к среде) клиента. Роль такого адреса играет уникальный ID-номер, который имеется у каждого Ethernet-контроллера. В Linux для отображения МАС-адреса используется команда iconfig. В остальном вам потребуется просто подключить устройство к LAN и выполнить динамическую конфигурацию с помощью dnsmasq. Программа протоколирует все динамические IP-адреса вместе с хост-именами и МАС-адресом в файл /var/lib/misc/dnsmasq. leases. Таким образом, МАС-адрес можно узнать и из этого файла.

По умолчанию адреса, динамически присвоенные с помощью DHCP, действительны в течение 24 часов. Но для сетевых принтеров и другой аппаратуры, работающей в режиме с резервированием, такого промежутка времени часто бывает недостаточно. Если принтер не используется в течение более чем 24 часов, команда dnsmasq «считает», что прибор выключен, и как бы «забывает» о нем. Чтобы этого не происходило, можно добавить к данным о сроке действия адреса дополнительную строку, в которой указывается время. Благодаря infinite адрес остается действителен сколь угодно долго.

<code># /etc/dnsmasq.conf (Статическое присвоение адреса без ограничения времени)

dhcp-host=00:c0:ee:51:39:9f.plutO.192.168.0.254,infinite</code>


В man dnsmaq и /etc/dnsmasq.conf.orig описано несколько других вариантов синтаксиса для dhcp-host. Там рассказано, как создать жесткую связь между хост-именем и IP-адресом, полностью заблокировать определенные МАС-адреса и т. д.

DNS для локального компьютера



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

Если на компьютере-шлюзе должны работать другие серверные программы (файловый сервер, Kerberos и т. д.), необходимо, чтобы шлюз знал клиентов «поименно», то есть также использовал dnsmasq как сервер имен. Чтобы этот механизм работал, обратите внимание на следующие моменты.

/etc/resolv.conf должен указывать на dnsmasq (то есть на localhost, адрес 127.0.0.1), а не на внешний сервер имен. Внимание: если вы строите соединение с Интернетом по динамическому принципу (LAN + DHCP или модем + РРР), то файл resolv.conf будет перезаписан при любой архитектуре соединения. Этого необходимо избежать: соединение с ADSL-роутером должно быть статическим. Можете изменить конфигурацию РРР, чтобы в описанном случае resolv.conf оставался без изменений. О Теперь dnsmasq не может интерпретировать resolv.conf, чтобы узнать адрес внешнего сервера имен, поэтому адрес внешнего сервера имен нужно специально указать в dnsmasq.conf с помощью ключевого слова server.

Продемонстрирую это на примере. Допустим, компьютер-шлюз mars с 1Р-адре-сом 192.168.0.1 в LAN подключен к ADSL-роутеру через Ethernet-интерфейс ethO. IP-адрес роутера — 10.0.0.138. Чтобы mars мог обмениваться информацией с ADSL-роутером, интерфейс ethO конфигурируется статически (даже если ADSL-роутер поддерживает работу с DHCP, динамическая конфигурация с применением DHCP недопустима, так как в противном случае при каждом перезапуске компьютера в resolv.conf будут записываться данные DHCP ADSL-роутера!).

<code># в /etc/network/interfaces

# Статическое соединение с ADSL-роутером, то есть с Интернетом auto ethO

iface ethO inet static address 10.0.0.1 netmask 255.255.255.0 gateway 10.0.0.138

В файле /etc/resolv.conf содержится имя локального домена (sol) и IP-адрес локального сервера имен (то есть dnsmasq):

# /etc/resolv.conf search sol nameserver 192.168.0.1</code>


Еще остается настроить конфигурацию dnsmasq: теперь программа уже не может считывать адрес внешнего сервера имен (для обращения к Интернету) из resolv.conf. Наоборот, она должна игнорировать resolv.conf (параметр no-resolv) и связываться с внешним сервером имен, указанным после ключевого слова server:

<code># /etc/dnsmasq.conf

no-resolv server=10.0.0.138
</code>

Все вместе



Если такой подробный рассказ о различных настройках dnsmasq вас немного запутал, вы можете просмотреть окончательный вариант файла dnsmasq.conf:

<code># /etc/dnsmasq.conf

# Интерфейс для LAN interface=ethl

# Локальные хосты не предъявляются вышестоящему серверу имен domain-needed

bogus-priv

# Доменное имя sol в LAN local=/sol/ domain=sol expand-hosts

# dnsmasq для компьютера-шлюза (вышестоящий сервер имен = 10.0.0.138) server=10.0.0.138

no-resolv

# Динамические адреса dhcp-range=192.168.0.2,192.168.0.250,24h

# Статические адреса

dhcp-host=00:c0:ee:51:39:9f.plutO.192.168.0.254,infinite</code>


Журналирование



Программа dnsmasq автоматически заносит все динамически присвоенные IP-адреса в файл /var/lib/misc/dnsmasq.leases. Статические адреса, напротив, не учитываются. В каждой записи этого файла также содержится МАС-адрес и хост-имена клиентов (если они известны). Таким образом, из этого файла очень удобно узнавать МАС-адреса новых клиентов.

Если dnsmasq работает не так, как вы хотели, вставьте в dnsmasq.conf ключевое слово log-queries. Теперь программа будет регистрировать все обращения к серверу имен в /var/log/syslog или /var/log/messages.

Клиентская конфигурация



В принципе сконфигурировать компьютер, который должен получать конфигурацию IP через DHCP, совсем не сложно. Все дистрибутивы Linux и современные версии Windows содержат соответствующий флажок в окне, используемом для конфигурации сети, — я об этом уже говорил. Программа Network Manager, которая все шире используется в Linux, также самостоятельно распознает DHCP-данные LAN- или WLAN-соединения.

Единственный одновременно сложный и важный момент такой конфигурации — работа с хост-именами: как правило, клиент должен иметь фиксированное хост-имя, отправляемое на DHCP-сервер. Большинство клиентских DHCP-ин-струментов делают это по умолчанию. Исключениями являются Fedora и Red Hat, а также устаревшие версии Debian и Ubuntu, где этого не происходит, так как там не применяется Network Manager.

Debian 4, Ubuntu 8.04



Debian до версии 4 включительно и Ubuntu до версии 8.04 по умолчанию не передают хост-имена на DHCP-сервер. Если вам нужно, чтобы этот механизм работал, добавьте в /etc/dhcp3/dhclient.conf показанную ниже строку. Тогда dhclient не будет заменять последовательность символов актуальным хост-именем. По умолчанию эта настройка действует, лишь начиная с Debian и Ubuntu.

# Дополнение в /etc/dhcp3/dhclient.conf send host-name "":

Red Hat, Fedora

Если при работе с Red Hat и Fedora для конфигурации сети применяется не Network Manager, a system-config-network=neat, то настроенное хост-имя не передается обратно на DHCP-сервер! Если вам нужно, чтобы этот механизм работал, потребуется специально настроить те имена, которые должны пересылаться. Для этого откройте в меню Правка окно свойств сетевого интерфейса (например, ethO) и укажите предназначенные для пересылки хост-имена в настройках DHCP.

Как повторно считывать данные DHCP



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

Если вы задаете сетевую конфигурацию, не пользуясь Network Manager, то заново запросите с помощью следующих команд информацию о DHCP:

<code>root# /etc/init.d/network restart (<a class="myClass" href="http://www.modx.cc/linux/zapusk-sistemyi-v-fedora/">Fedora</a>, Red Hat, SUSE) root# /etc/init.d/networking restart (Debian, <a class="myClass" href="http://www.modx.cc/linux/zapusk-sistemyi-ubuntu/">Ubuntu</a>)</code>

Затем убедитесь, что все работает. Для этого выполните команду iconfig и загляните в файл /etc/resolv.conf. Если вы работаете с KDE или Gnome, то после изменения хост-имени или других основополагающих сетевых параметров вам придется выйти из системы и снова в нее войти.

Даже в Windows можно заново считать данные DHCP без перезапуска. Откройте командное окно и выполните в нем следующую команду:

ipconfig /renew (Windows)

Читайте так же:
Программа dhcpd (DHCP-сервер)






Подпишитесь на рассылку! Никакого спама, только обновления!!!

Комментарии (1)

  1. xprograms 17 июня 2015, 12:00 # 0
    wireless-hack.ucoz.ru — Универсальный софт для подбора пароля к Wi-Fi сетям
    На этом сайте вы сможете скачать программу для подбора пароля к Wi-Fi
    Скачать: goo.gl/RvYYLr
    Ознакомиться с видео презентацией работы программы: goo.gl/GxwLdF
    Скачать приватный hack софт бесплатно: goo.gl/oR7rQW
    Услуги по подбору паролей к Wi-Fi, Rar, Zip.: goo.gl/oTKnnE
    www.google.ru/#btnI=rutigunu&q=wireless-hack.ucoz
    Генератор ключей Steam: goo.gl/ah3i6E

    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать