В данной статье я расскажу о том, как настроить стандартный DNS сервер (BIND) в системе FreeBSD версии 8.1. На DNS сервер (BIND) будут возложены следующие функции: кеширование DNS запросов и обслуживание доменных зон. Все необходимые для работы сервера файлы содержатся в директории /etc/namedb. В данной директории содержится:
- dynamic - директория, в которой хранятся динамические зоны.
- master - директория, в которой хранятся зоны, которые обслуживает данный сервер.
- slave - директория, в которой хранятся зоны, для которых этот DNS сервер является вторичным.
- working - директория, в которой работает сервер после chroot,а.
- named.conf - главный конфигурационный файл.
- rndc.key - ключ, необходимый для работы утилиты rndc
- named.root - список корневых серверов.
Как было сказано ранее, главный конфигурационный файл имеет имя named.conf. Его-то нам и предстоит отредактировать. Итак, поехали:
// В файле хранится ключ, который используется утилитой rndc
// для получения доступа к DNS серверу.
include "/etc/namedb/rndc.key";
// ACL,ка, которая описывает внутренние подсети
acl internal_net { localhost; 192.168.1.0/24; 192.168.7.0/24; };
// Определяем с каких хостов и каким ключом разрешено управлять сервером.
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};
// Настройка ведения логов
logging {
channel default_flog {
file "log/default.log" versions 3 size 512K;
severity notice;
print-category yes;
print-time yes;
};
channel config_flog {
file "log/config.log" versions 1 size 512K;
severity notice;
print-category yes;
print-time yes;
};
channel queries_flog {
file "log/queries.log" versions 3 size 512K;
severity notice;
print-category yes;
print-time yes;
};
channel qerror_flog {
file "log/qerror.log" versions 3 size 256K;
severity notice;
print-category yes;
print-time yes;
};
category default { default_flog; };
category config { config_flog; };
category queries { queries_flog; };
category query-errors { qerror_flog; };
};
options {
// Все пути воспринимаются как относительные директории chroot,
// поэтому везде нужно указывать полный путь.
directory "/etc/namedb/working";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
// На каких интерфейсах (адресах) обслуживать запросы.
listen-on { any; };
// Пустые зоны.
disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
// Разрешать передачу зоны только клиентам из внутренней сети.
allow-transfer { internal_net; };
// Разрешить всем запросы к серверу.
allow-query { any; };
// Разрешить рекурсивные запросы клиентам из внутренней сети.
allow-recursion { internal_net; };
// Будет выдаваться при запросе о версии.
version "Domain nameserver";
max-ncache-ttl 3600;
};
// DNS сервер скачает зоны с корневых серверов, что позволит
// производить поиск необходимых серверов быстрее. То есть
// не придется обращаться к корневым серверам каждый раз,
// когда запрашивается домен, которого нет в кеше.
zone "." {
type slave;
file "/etc/namedb/slave/root.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
zone "arpa" {
type slave;
file "/etc/namedb/slave/arpa.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
/*
Обслуживание следующих зон локально позволит быстрее обрабатывать
запросы и не нагружать сеть лишним трафиком.
*/
// RFC 1912 (and BCP 32 for localhost)
zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// RFC 1912-style zone for IPv6 localhost address
zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
// "This" Network (RFCs 1912 and 3330)
zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// Private Use Networks (RFC 1918)
zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// Link-local/APIPA (RFCs 3330 and 3927)
zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// TEST-NET-[1-3] for Documentation (RFC 5737)
zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Range for Documentation (RFC 3849)
zone "0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// Domain Names for Documentation and Testing (BCP 32)
zone "test" { type master; file "/etc/namedb/master/empty.db"; };
zone "example" { type master; file "/etc/namedb/master/empty.db"; };
zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };
// Router Benchmark Testing (RFC 3330)
zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IANA Reserved - Old Class E Space
zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Unassigned Addresses (RFC 4291)
zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 ULA (RFC 4193)
zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Link Local (RFC 4291)
zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Deprecated Site-Local Addresses (RFC 3879)
zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IP6.INT is Deprecated (RFC 4159)
zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; };
// Настройка собственной зоны
zone "info-x.org" IN {
type master;
file "/etc/namedb/master/info-x.org.db";
};
Описание зоны у меня выглядит так:
$TTL 10800 ; 3 hours
info-x.org. IN SOA ns0.info-x.org. webmaster.info-x.org. (
2012041800 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
3600 ; minimum (1 day)
)
$ORIGIN info-x.org.
@ IN NS ns0.info-x.org.
@ IN A 212.220.113.125
mx IN A 212.220.113.125
ns0 IN A 212.220.113.125
* IN A 212.220.113.125
@ MX 10 mx.info-x.org.
@ IN TXT "v=spf1 +a +mx ~all"
После подготовки всех конфигурационных файлов можно добавлять BIND в автозагрузку и собственно запускать его.
# echo 'named_enable="YES"' >> /etc/rc.conf
# /etc/rc.d/named start
Проверим, запустился ли он:
# sockstat -4 -l | grep named
bind named 1053 21 tcp4 127.0.0.1:53 *:*
bind named 1053 23 tcp4 127.0.0.1:953 *:*
bind named 1053 26 tcp4 212.220.113.125:53 *:*
bind named 1053 513 udp4 127.0.0.1:53 *:*
bind named 1053 517 udp4 212.220.113.125:53 *:*
Если демон named не стартовал, то проверяйте конфиг, смотрите логи и ищите ошибку. Проверим, корректно ли обслуживает нашу зону DNS сервер.
# nslookup info-x.org 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: info-x.org
Address: 212.220.113.125
Как видно все работает. Полезно знать про утилиту rndc, которая позволяет управлять DNS сервером. С помощью нее, например, можно перечитать конфигурационный файл без перезапуска демона named, сбросить кеш, посмотреть статистику и т.д. За подробностями идем в ман. Также стоит отметить полезные утилиты, которые помогают в повседневной жизни при работе с DNS: nslookup, dig, host.
Добавить комментарий