Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> OpenBSD
|
|
Запускаем dhcpd(8) на внутреннем интерфейсе и проверяем его работоспособность.
Листинг 1.2. Запуск dhcpd(8) на интерфейсе rl1
# dhcpd rl1 |
Если все проверки прошли успешно, добавляем автоматический запуск.
Листинг 1.3. Старт dhcpd(8) вместе с системой
# echo dhcpd_flags="rl1" >> /etc/rc.conf.local |
Осталось настроить узлы внутри сети на автоматическое получение настроек через DHCP.
2. Более тонкая настройка DNS-сервера
Основные задачи, которые решались при доведении стандартного конфига:
1. использование только IPv4 (отключить IPv6);
2. управление сервером только локально;
3. выполнение запросов только из локальной (внутренней) сети;
4. разрешение всех имен через корневые сервера (рекурсивные запросы);
5. разрешение имен из зоны провайдера через DNS-сервера провайдера;
6. поддержка зоны internal.lan и обратной зоны 0.168.192.in-addr.arpa - локальная сеть.
Некоторые комментарии относительно каждого пункта:
1. IPv6 не используется в моей сети, а лишние сервисы - это дыра в системе безопасности;
2. управлять DNS-сервером буду только со шлюза - еще один элемент безопасности;
3. без комментариев;
4. защита от проблем с сервером провайдера (если его скомпрометируют);
5. сохранение возможности работать с внутренними ресурсами провайдера, если с внешними будут проблемы.
6. поддерживать внутреннюю зону - полезно;
Эти комментарии даны для того, что бы вы могли определить ненужные вам настройки и не использовать их.
Здесь и далее предполагается, что локальный DNS-сервер запущен (см. Часть 1). Пойдем по порядку и выполним первые четыре пункта. В результате получили следующий конфигурационный файл.
Листинг 2.1. Первая версия named.conf(5)
|
Проверяем правильность конфигурационного файла.
Листинг 2.2. Проверка правильности named.conf(5)
# named-checkconf /var/named/etc/named.conf |
Если синтаксических ошибок не обнаружено, перезагружаем конфигурационный файл и проверяем работоспособность DNS-сервера.
Листинг 2.3. Перезагрузка конфигурации named(8)
# rndc reload server reload successful |
Далее, во исполнении пункта первого, отредактируем rc.conf.local, что бы named(8) запускался с поддержкой только IPv4.
Листинг 2.4. Запуск named(8) с поддержкой только IPv4
# grep "named_flags" /etc/rc.conf.local named_flags=-4 |
Теперь, вручную, перезапустим named(8) с новыми параметрами.
Листинг 2.5. Перезапуск named(8) с новыми параметрами
# rndc stop # named -4 |
Теперь настроим разрешение имен сети провайдера, в первую очередь, через DNS-сервера провайдера, для этого добавим дополнительную зону в named.conf(5). Тип зоны установим "forward" и разрешим выполнять рекурсивный запрос, если DNS сервер провайдера упадет.
Листинг 2.6. Разрешение имен через DNS-сервер провайдера
|
<isp-domain> - зона (домен) провайдера;
<isp-dns-1>, <isp-dns-2> - DNS-сервера провайдера.
Результирующий конфигурационный файл представлен в листинге 2.7, изменения заключаются только в добавлении новой зоны.
Листинг 2.7. Полный конфигурационный файл named.conf(5) c поддержкой DNS провайдера
|
Далее проверяем синтаксис и применяем новые настройки (листинг 2.2, листинг 2.3). Теперь самая интересная часть, добавим поддержку DNS для локальной сети. Перед добавлением зон в named.conf(5), напишем сами зоны и сохраним в /var/named/master.
Написание зоны задача непростая, но данный процесс хорошо описан в [5], а подглядывание в [4] сделает задачу элементарной.
Листинг 2.8. Описание зоны "internal.lan"
|
Листинг 2.9. Описание зоны "0.168.192.in-addr.arpa"
|
Имена файлов могут быть любыми, они не несут конфигурационной нагрузки. Теперь проверяем правильность конфигурации зон.
В качестве параметров утилите передаются имя зоны и файл с её описанием.
Листинг 2.10. Проверка конфигурации зон
# named-checkzone internal.lan /var/named/master/internal.lan zone internal.lan/IN: loaded serial 2010022201 OK # named-checkzone 0.168.192.in-addr.arpa \ /var/named/master/0.168.192.in-addr.arpa zone 0.168.192.in-addr.arpa/IN: loaded serial 2010022201 OK |
Если проверка прошла успешно, переходим к добавлению зон в named.conf(5). Потребуется добавить две зоны, для которых данный сервер будет мастером. Итоговая конфигурация представлена в листинге 2.11.
Листинг 2.11. Конфигурация с поддержкой внутренних зон (прямой и обратной)
|
Проверяем синтаксис и применяем новую конфигурацию (листинг 2.2, листинг 2.3). Теперь можно проверить работоспособность данной конфигурации.
Листинг 2.12. Проверка работоспособности конфигурации
# nslookup gate.internal.lan Server: 127.0.0.1 Address: 127.0.0.1#53 Name: gate.internal.lan Address: 192.168.0.254 # nslookup 192.168.0.254 Server: 127.0.0.1 Address: 127.0.0.1#53 254.0.168.192.in-addr.arpa name = gate.internal.lan. |
Теперь необходимо проверить работу с одного из узлов локальной сети. После завершения проверок файлы зон можно дополнить описанием новых узлов в сети, по примеру "gate.internal.lan" (одна A запись в прямой зоне и одна PTR запись в обратной зоне).
Для проверки зон, которые поддерживает named(8), подойдет следующая последовательность действий.
Листинг 2.13. Просмотр поддерживаемых зон
# rndc dumpdb -zones # cat /var/named/tmp/named_dump.db |
3. Динамическое обновление DNS-записей для локальной сети
В начале необходимо поставить DHCP-сервер из коллекции пакетов, т.к. входящий в базовую поставку сервер не поддерживает динамического обновления.
Листинг 3.1. Установка DHCP-сервера из пакета
# pkg_add -i -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/isc-dhcp-server |
Сервер будет установлен в /usr/local. Теперь необходимо решить вопрос с его автоматическим запуском и при этом избежать конфликта с уже установленным DHCP-сервером. Автор [1] предлагает заменить бинарные файлы старого сервера на новые. Но можно пойти другим путем: дописать команды запуска в rc.local и использовать конфигурационный файл с другим именем, например - dhcpd-isc.conf. Но все по порядку. Начнем с того, что создадим конфигурационный файл для нового сервера. Для этого скопируем старый файл (см. разд. 1.) и после глобальных параметров добавим строку "ddns-update-style none;". В результате должен получиться конфигурационный файл следующего содержания.
Листинг 3.2. Конфигурационный файл для нового DHCP-сервера
|
Проверим работоспособность сервера, перед этим остановив встроенный.
Листинг 3.3. Остановка старого и запуск нового DHCP-сервера
# kill `ps axc | grep 'dhcpd' | sed -e 's/^ *\([0-9]*\).*$/\1/'` # cp /var/db/dhcpd.leases /var/db/dhcpd-isc.leases # /usr/local/sbin/dhcpd -cf /etc/dhcpd-isc.conf -lf /var/db/dhcpd-isc.leases -f -d rl1 Internet Systems Consortium DHCP Server V3.1.1 Copyright 2004-2008 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ WARNING: Host declarations are global. They are not limited to the scope you declared them in. Wrote 0 deleted host decls to leases file. Wrote 0 new dynamic host decls to leases file. Wrote 0 leases to leases file. Listening on BPF/rl1/01:23:45:67:89:ab/192.168.0/24 Sending on BPF/rl1/01:23:45:67:89:ab/192.168.0/24 Sending on Socket/fallback/fallback-net ^C |
Теперь, добавим следующие строки в /etc/rc.local после строки "# Add your local startup actions here.".
Листинг 3.4. Код автозапуска нового DHCP-сервера
|
Данный код позволяет запускать новый сервер не конфликтуя со старым, единственный минус в том, что параметр dhcpd_isc_flags должен быть равен "NO" или должен отсутствовать файл /etc/dhcpd-isc.conf для того, что бы сервер не запустился. Т.е. для прекращения его автоматического запуска придется приложить некоторые усилия (простым удалением строки не обойтись), но новый сервер ставят и прописывают на автозапуск не для того, что бы держать выключенным.
После этого удаляем строку "dhcpd_flags" из rc.conf.local (для избежания конфликтов) и добавляем параметр dhcpd_isc_flags с указанием интерфейса для автоматического запуска.
Листинг 3.5. Заменяем DHCP-сервер при запуске
# grep -v "dhcpd" /etc/rc.conf.local > /tmp/rc.conf.local # cat /tmp/rc.conf.local > /etc/rc.conf.local # echo dhcpd_isc_flags="rl1" >> /etc/rc.conf.local |
Единственным способом проверить работоспособность конфигурации - перезагрузить систему. Если все прошло нормально и сервер успешно раздает адреса, то переходим к связыванию DHCP- и DNS-серверов. В начале создадим новый ключ для взаимодействия dhcpd и named.
Листинг 3.6. Создание нового ключа
# rndc-confgen > /tmp/new.key # grep "secret" /tmp/new.key secret "cqzKK8sQDKMkhog4EWC1sA=="; # secret "cqzKK8sQDKMkhog4EWC1sA=="; |
Создадим новый файл в /var/named/etc, который будет содержать сгенерированный ключ, следующего содержания.
Листинг 3.7. Новый ключ для named(8)
|
Не забываем о владельце и правах доступа.
Листинг 3.8. Права доступа к dhcp.key
# chown root:named /var/named/etc/dhcp.key # chmod 640 /var/named/etc/dhcp.key |
Перед разрешением обновления зон необходимо установить корректные права доступа [1,3].
Листинг 3.9. Установка прав доступа
# chown -R named:named /var/named/master/ |
Далее необходимо подключить новый ключ к named.conf(5) и разрешить обновление зон "internal.lan" и "0.168.192.in-addr.arpa".
Листинг 3.10. Измененный named.conf(5)
|
Проверяем синтаксис и применяем новую конфигурацию.
Листинг 3.11. Применение новой конфигурации named(8)
# named-checkconf -t /var/named/ /etc/named.conf # rndc reload |
Теперь скопируем ключ dhcp.key в директорию /etc (не забывая о правах).
Листинг 3.12 Копирование ключа dhcp.key
# cp /var/named/etc/dhcp.key /etc/ # chmod 600 /etc/dhcp.key |
Далее, необходимо внести некоторые изменения в конфигурационный файл DHCP-сервера:
объявить сервер авторитетным;
зафиксировать временные интервалы;
подключить ключ;
разрешить обновлять записи;
указать зоны и DNS-сервера, за них ответственные.
В результате получим следующий конфигурационный файл.
Листинг 3.13. Конфигурационный файл DHCP-сервера с поддержкой обновления DNS-записей
|
Перезапускаем DHCP-сервер и проверяем, обновляются ли данные при выделении адреса узлу.
Внимание: записи для узлов со статически указанным IP-адресом обновляться не будут. Такие записи необходимо вручную внести в файлы зон.
4. Список литературы
1. Dynamic DNS & DHCP // http://www.bsdguides.org/guides/openbsd/networking/dynamic_dns_dhcp.php
2. Как правильно настроить DNS // http://www.nbsp.ru/articles/2005/12/14/kak_pravilno_nastroit_dns_chast1.html
3. The Arda.Homeunix.Net DNS & DHCP Setup // http://www.arda.homeunix.net/dnssetup.html
4. BIND9 Administrator Reference Manual // https://www.isc.org/files/Bv9.4ARM.pdf
5. Лукас М. FreeBSD. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ-Плюс, 2009. - 864 с., ил. // ISBN-10: 5-93286-126-6, ISBN-13: 978-5-93286-126-4, ISBN-13: 978-1-59327-151-0 (англ)
6. Firewalling with OpenBSD's PF packet filter: Before we start // http://home.nuug.no/~peter/pf/en/preface.html
размещено: 2010-03-01,
последнее обновление: 2010-10-15,
автор: BlackCat
konstantine, 2010-10-15 в 4:45:02
Листинг 2.6. Разрешение имен через DNS-сервер провайдера
#
# ISP zones
#
zone "<isp-domain>" {
type forward;
forward first;
forwarders { <isp-dns-1>; <isp-dns-2>; };
};
Зачем это вообще надо ???
BlackCat, 2010-10-15 в 8:01:10
В статье это описано, но повторюсь: "сохранение возможности работать с внутренними ресурсами провайдера, если с внешними будут проблемы". Если требуется более подробный ответ - добро пожаловать на форум (ссылка на обсуждение в конце статьи).
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [2 шт.]