BIND/Руководство

From Gentoo Wiki
< BIND
Jump to:navigation Jump to:search
This page is a translated version of the page BIND/Guide and the translation is 100% complete.

Данное руководство описывает установку и конфигурацию BIND для домена и локальной сети.

Введение

BIND — самый часто используемый DNS-сервер в Интернете. Данное руководство объяснит, как настроить BIND для домена, используя различные конфигурации, одну для локальной сети, и одну для остального мира. Для этого будут использованы два вида (views):

  1. Вид для внутренней зоны (локальная сеть).
  2. Вид для внешней зоны (остальной мир).

Данные, которые будут использоваться в примерах

Ключевое слово Объяснение Пример
ВАШ_ДОМЕН Имя вашего домена 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Раздел options
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 - внутренний вид, используемый для нашей локальной сети.

ФАЙЛ /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
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.