This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
BIND/Руководство
Данная статья научит читателя, как установить и настроить BIND для домена и локальной сети.
Введение
Данный руководство покажет вам, как установить и настроить BIND, самый частоиспользуемый DNS-сервер в Интернет. Мы настроим BIND для домена, используя различные конфигурации, одну для локальной сети, и одну для остального мира. Для этого будут использованы два вида (views):
- Вид для внутренней зоны (ваша локальная сеть).
- Вид для внешней зоны (остальной мир).
Данные, которые будут использоваться в примерах
Ключевое слово | Объяснение | Пример |
---|---|---|
ВАШ_ДОМЕН | Имя вашего домена | gentoo.org |
ВАШ_ПУБЛИЧНЫЙ_IP | Публичный IP, который вам дал ваш провайдер | 204.74.99.100 |
ВАШ_ЛОКАЛЬНЫЙ_IP | Локальный IP адрес | 192.168.1.5 |
ВАША_ЛОКАЛЬНАЯ_СЕТЬ | Локальная сеть | 192.168.1.0/24 |
ПОДЧИНЕННЫЙ_DNS_СЕРВЕР | IP адрес подчиненного DNS сервера для вашего домена. | 209.177.148.228 |
АДМИНИСТРАТОР | Имя администратора DNS сервера. | root |
ИЗМЕНЕНИЕ | Время изменения файла зоны с добавленным числом | 2009062901 |
Конфигурация BIND
Установка
Сначала, установите net-dns/bind.
root #
emerge --ask net-dns/bind
Настройка /etc/bind/named.conf
Сначала нужно сконфигурировать /etc/bind/named.conf. Первым шагом будет указание корневого каталога bind, порт, который будет прослушиваться, PID-файл и строка для протокола IPv6.
/etc/bind/named.conf
Раздел optionsoptions { directory "/var/bind"; listen-on-v6 { none; }; listen-on port 53 { 127.0.0.1; ВАШ_ЛОКАЛЬНЫЙ_IP; }; pid-file "/var/run/named/named.pid"; };
Вторая часть named.conf - внутренний вид, используемый для нашей локальной сети.
/etc/bind/named.conf
Вид для внутренней сети (internal view)view "internal" { match-clients { ВАША_ЛОКАЛЬНАЯ_СЕТЬ; localhost; }; recursion yes; zone "ВАШ_ДОМЕН" { type master; file "pri/ВАШ_ДОМЕН.internal"; allow-transfer { any; }; }; };
Третья часть named.conf - внешний вид, используемый для разрешения наших доменных имен для остального мира, и разрешения всех остальных доменных имен для нас (и всех, кто захочет использовать наш DNS сервер).
/etc/bind/named.conf
Вид для внешней сети (external view)view "external" { match-clients { any; }; recursion no; zone "." IN { type hint; file "named.ca"; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; zone "ВАШ_ДОМЕН" { type master; file "pri/ВАШ_ДОМЕН.external"; allow-query { any; }; allow-transfer { ПОДЧИНЕННЫЙ_DNS_СЕРВЕР; }; }; };
Последняя часть named.conf это политика логов.
/etc/bind/named.conf
Политика логовlogging { channel default_syslog { file "/var/log/named/named.log" versions 3 size 5m; severity debug; print-time yes; print-severity yes; print-category yes; }; category default { default_syslog; }; };
Каталог /var/log/named/ должен существовать и принадлежать named
:
root #
mkdir -p /var/log/named/
root #
chmod 770 /var/log/named/
root #
touch /var/log/named/named.log
root #
chmod 660 /var/log/named/named.log
root #
chown -R named /var/log/named/
root #
chgrp -R named /var/log/named/
Создание файла внутренней зоны
Мы используем имена хостов и IP-адреса из примера сети, показанного ниже. Заметьте, что почти все (но не все) доменные имена оканчиваются на "." (точку).
/var/bind/pri/ВАШ_ДОМЕН.internal
$TTL 2d @ IN SOA ns.ВАШ_ДОМЕН. АДМИНИСТРАТОР.ВАШ_ДОМЕН. ( ИЗМЕНЕНИЕ ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum ВАШ_ДОМЕН. IN MX 0 mail.ВАШ_ДОМЕН. ВАШ_ДОМЕН. IN TXT "v=spf1 ip4:ВАШ_ПУБЛИЧНЫЙ_IP/32 mx ptr mx:mail.ВАШ_ДОМЕН ~all" ВАШ_ДОМЕН. IN NS ns.ВАШ_ДОМЕН. ВАШ_ДОМЕН. IN NS ПОДЧИНЕННЫЙ_DNS_СЕРВЕР www.ВАШ_ДОМЕН. IN A 192.168.1.3 ns.ВАШ_ДОМЕН. IN A 192.168.1.5 mail.ВАШ_ДОМЕН. IN A 192.168.1.3 router.ВАШ_ДОМЕН. IN A 192.168.1.1 hell.ВАШ_ДОМЕН. IN A 192.168.1.3 heaven.ВАШ_ДОМЕН. IN A 192.168.1.5 desktop.ВАШ_ДОМЕН. IN A 192.168.1.4
Создание файла внешней зоны
Здесь у нас только поддомены, информацию о которых мы хотим отдавать для внешних клиентов (www, mail и ns).
/var/bind/pri/ВАШ_ДОМЕН.external
$TTL 2d @ IN SOA ns.ВАШ_ДОМЕН. АДМИНИСТРАТОР.ВАШ_ДОМЕН. ( ИЗМЕНЕНИЕ ;serial 3h ;refresh 1h ;retry 1w ;expiry 1d ) ;minimum ВАШ_ДОМЕН. IN MX 0 mail.ВАШ_ДОМЕН. ВАШ_ДОМЕН. IN TXT "v=spf1 ip4:ВАШ_ПУБЛИЧНЫЙ_IP/32 mx ptr mx:mail.ВАШ_ДОМЕН ~all" ВАШ_ДОМЕН. IN NS ns.ВАШ_ДОМЕН. ВАШ_ДОМЕН. IN NS ПОДЧИНЕННЫЙ_DNS_СЕРВЕР www.ВАШ_ДОМЕН. IN A ВАШ_ПУБЛИЧНЫЙ_IP ns.ВАШ_ДОМЕН. IN A ВАШ_ПУБЛИЧНЫЙ_IP mail.ВАШ_ДОМЕН. IN A ВАШ_ПУБЛИЧНЫЙ_IP
Окончательная конфигурация
Вам нужно добавить named
к уровню доступ по умолчанию:
root #
rc-update add named default
Конфигурация клиентов
Теперь вы можете использовать свой DNS сервер для всех машин в вашей локальной сети для разрешения доменных имен. Измените файл /etc/resolv.conf на всех машинах вашей локальной сети.
/etc/resolv.conf
search ВАШ_ДОМЕН nameserver IP_ВАШЕГО_СЕРВЕРА_DNS
Заметьте, что IP_ВАШЕГО_СЕРВЕРА_DNS тот же, что и ВАШ_ЛОКАЛЬНЫЙ_IP, который мы использовали в данном документе. В примере он был 192.168.1.5.
Тестирование
Мы можем протестировать наш новый сервер DNS. Сначала нам нужно запустить сервис.
root #
/etc/init.d/named start
Теперь мы собираемся выполнить некоторые host
-команды к некоторым доменам. Для этого теста мы можем использовать любой компьютер в нашей локальной сети. Если у вас нет пакета net-dns/host
, вы можете вместо него использовать ping
. В противном случае сначала запустите emerge host
.
user $
host www.gentoo.org
www.gentoo.org has address 209.177.148.228 www.gentoo.org has address 209.177.148.229
user $
host hell
hell.ВАШ_ДОМЕН has address 192.168.1.3
user $
host router
router.ВАШ ДОМЕН has address 192.168.1.1
Защищаем сервер программой iptables
Во время использования DNS-сервиса, для дополнительной защиты, можно настроить iptables такими правилами:
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Vicente Olivert Riera, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.