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.
options {
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 - внутренний вид, используемый для нашей локальной сети.
view "internal" {
match-clients { ВАША_ЛОКАЛЬНАЯ_СЕТЬ; localhost; };
recursion yes;
zone "ВАШ_ДОМЕН" {
type master;
file "pri/ВАШ_ДОМЕН.internal";
allow-transfer { any; };
};
};
Третья часть named.conf - внешний вид, используемый для разрешения наших доменных имен для остального мира, и разрешения всех остальных доменных имен для нас (и всех, кто захочет использовать наш DNS сервер).
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 это политика логов.
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-адреса из примера сети, показанного ниже. Заметьте, что почти все (но не все) доменные имена оканчиваются на "." (точку).
$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).
$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 на всех машинах вашей локальной сети.
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.