BIND — DNS-сервер.

Оглавление
Темы
Настройка DNS-сервера
Обновление списка корневых DNS-серверов
Ошибки
Дополнительные материалы
Dnsmasq — DNS-, DHCP- и TFTP-сервер
DIG — Диагностика DNS-серверов
ISC DHCP — DHCP-сервер
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
OpenVPN: Открытая виртуальная частная сеть
WireGuard - VPN нового поколения
ISCSI — Транспортный протокол для SCSI
QUAGGA — Протоколы динамической маршрутизации
Dnscrypt — Проксирование dns-трафика
Настройка DNS-сервера
На сервере поддерживаются несколько зон (для внешней и внутренней сети), а так же для внутренней сети есть зона дубликат с кириллическими именами. Сам сервер разрешает имена во всех зонах, а внутренним и внешним клиентам доступны только соответствующие зоны. Смысл решения подобной задачи чтобы разложить требуемые наборы зон по контейнерам view. Клиент может просматривать только одну view. Все зоны должны принадлежать какому-либо view.
Файл конфигурации named.conf
Зона free-adm.ru.zone
Зона buch.ru.zone
Кириллическая зона бух.ру.zone
Обратная зона 1.168.192.zone
Обратная зона 1.0.195.zone
Создание заготовки файла зоны
Преобразование кириллических имён
Преобразование адреса в формат обратной зоны
Для преобразования адреса в формат обратной зоны можно воспользоваться утилитой ipcalc с опцией --reverse-dns
Если вместо IPv4 адреса поставить IPv6, то преобразование будет выполнено для адреса IPv6.
Затем нужно отделить хостовую часть адреса от сетевой, полученный результат будет именем обратной зоны
Логирование событий
Если требуется запретить использование IPv6 для DNS-сервера, то необходимо внести строку следующего содержания в конец файла /etc/sysconfig/named
Темы
Настройка DNS-сервера
Обновление списка корневых DNS-серверов
Ошибки
Дополнительные материалы
Dnsmasq — DNS-, DHCP- и TFTP-сервер
DIG — Диагностика DNS-серверов
ISC DHCP — DHCP-сервер
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
OpenVPN: Открытая виртуальная частная сеть
WireGuard - VPN нового поколения
ISCSI — Транспортный протокол для SCSI
QUAGGA — Протоколы динамической маршрутизации
Dnscrypt — Проксирование dns-трафика
Настройка DNS-сервера
На сервере поддерживаются несколько зон (для внешней и внутренней сети), а так же для внутренней сети есть зона дубликат с кириллическими именами. Сам сервер разрешает имена во всех зонах, а внутренним и внешним клиентам доступны только соответствующие зоны. Смысл решения подобной задачи чтобы разложить требуемые наборы зон по контейнерам view. Клиент может просматривать только одну view. Все зоны должны принадлежать какому-либо view.
Файл конфигурации named.conf
- Код: выделить все
# Список доверенных серверов для передачи зон
acl "trusted-dns" { 195.0.1.1; 195.0.1.8; };
acl "def-client" { 127.0.0.0/8; localhost; };
acl "int-client" { 192.168.1/24; 10/8; };
options {
listen-on port 53 { 127.0.0.1; 195.0.1.15; 192.168.1.254; };
listen-on-v6 port 53 { none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 127/8; 195.0.1/24; 192.168.1/24; 10/8; };
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
version "Bind DNS Server";
session-keyfile "/run/named/session.key";
forwarders { 212.1.224.6; 212.1.244.6; };
};
logging { channel default_debug { file "data/named.run"; severity dynamic; }; };
include "/etc/named.root.key";
# вид для localhost. Просмотр всех зон
view "default" {
# 127/8; localhost; - Для разрешения имён этим хостом
match-clients { def-client; };
match-destinations { 127.0.0.1; };
# Наш сервер может обрабатывать рекурсивные запросы для localhost
allow-recursion { def-client; };
include "/etc/named.rfc1912.zones";
zone "buch.ru" IN { type master; file "master/buch.ru.zone"; };
zone "1.168.192.IN-ADDR.ARPA" IN { type master; file "master/1.168.192.zone"; };
zone "free-adm.ru" IN { type master; file "master/free-adm.ru.zone"; };
zone "1.0.195.IN-ADDR.ARPA" IN { type master; file "master/1.0.195.zone"; };
zone "xn--90a0bg.xn--p1ag" IN { type master; file "master/бух.ру.zone"; };
};
# вид для внутренних зон
view "internal" {
match-clients { int-client; };
# 127/8; localhost; - Для разрешения имён этим хостом
# match-destinations - параметр, который является IP-адресом данного view
# и используется в качестве адреса для этого сервера имен.
match-destinations { 192.168.1.254; };
#Наш сервер может обрабатывать рекурсивные запросы для внутренних клиентов
allow-recursion { int-client; };
zone "." IN { type hint; file "named.ca"; };
zone "buch.ru" IN { type master; file "master/buch.ru.zone"; };
zone "1.168.192.IN-ADDR.ARPA" IN { type master; file "master/1.168.192.zone"; };
zone "xn--90a0bg.xn--p1ag" IN { type master; file "master/бух.ру.zone"; };
};
# Вид для внешних зон
view "external" {
match-clients { 195.0.1.0/24; };
match-destinations { 195.0.1.15; };
zone "free-adm.ru" IN { type master;
file "master/free-adm.ru.zone";
allow-transfer { trusted-dns; };
notify yes; };
zone "1.0.195.IN-ADDR.ARPA" IN { type master;
file "master/1.0.195.zone";
allow-transfer { trusted-dns; };
notify yes; };
};
key "rndc-key" { algorithm hmac-md5;
secret "u7z0Etzw4tAJGLi9mt75jQ=="; };
#controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
controls { inet * allow { any; } keys { "rndc-key"; }; };
Зона free-adm.ru.zone
- Код: выделить все
$TTL 900
$ORIGIN free-adm.ru.
@ SOA cent.free-adm.ru. root (
2015042302
900 ; 15 Minutes slave refresh interval
600 ; 10 Minutes slave retry interval
2592000 ; 1 month slave copy expire time
900 ; 15 Minutes NXDOMAIN cache time
)
NS cent.free-adm.ru.
;; add Slave server
;; IN NS ns.example.host.
MX 10 cent.free-adm.ru.
@ A 195.0.1.15
cent A 195.0.1.15
gate A 195.0.1.2
sergey A 195.0.1.3
print A 195.0.1.5
Зона buch.ru.zone
- Код: выделить все
$TTL 900
$ORIGIN buch.ru.
@ SOA ns.buch.ru. root (
2015060400
900 ; 15 Minutes slave refresh interval
600 ; 10 Minutes slave retry interval
2592000 ; 1 month slave copy expire time
900 ; 15 Minutes NXDOMAIN cache time
)
NS ns.buch.ru.
MX 10 srv.buch.ru.
@ A 192.168.1.254
ns A 192.168.1.254
srv A 192.168.1.254
test A 192.168.1.254
comp1 A 192.168.1.1
comp2 A 192.168.1.2
Кириллическая зона бух.ру.zone
- Код: выделить все
$TTL 900
$ORIGIN xn--90a0bg.xn--p1ag.
@ SOA xn--m1ai.xn--90a0bg.xn--p1ag. root (
2015070700
900 ; 15 Minutes slave refresh interval
600 ; 10 Minutes slave retry interval
2592000 ; 1 month slave copy expire time
900 ; 15 Minutes NXDOMAIN cache time
)
NS xn--m1ai.xn--90a0bg.xn--p1ag.
MX 10 xn--b1a1ac.xn--90a0bg.xn--p1ag.
@ A 192.168.1.254
xn--m1ai A 192.168.1.254
xn--b1a1ac A 192.168.1.254
test A 192.168.1.254
xn--80afxl5e A 192.168.1.1
xn--80a0a4c A 192.168.1.2
Обратная зона 1.168.192.zone
- Код: выделить все
$TTL 900
$ORIGIN 1.168.192.IN-ADDR.ARPA.
@ SOA ns.buch.ru. root (
2015050300
900 ; 15 Minutes slave refresh interval
600 ; 10 Minutes slave retry interval
2592000 ; 1 month slave copy expire time
900 ; 15 Minutes NXDOMAIN cache time
)
NS ns.buch.ru.
254 PTR buch.ru.
254 PTR ns.buch.ru.
254 PTR srv.buch.ru.
1 PTR comp1.buch.ru.
2 PTR comp2.buch.ru.
Обратная зона 1.0.195.zone
- Код: выделить все
$TTL 900
$ORIGIN 1.0.195.in-addr.arpa.
@ SOA cent.free-adm.ru. root (
2015042800
900 ; 15 Minutes slave refresh interval
600 ; 10 Minutes slave retry interval
2592000 ; 1 month slave copy expire time
900 ; 15 Minutes NXDOMAIN cache time
)
NS cent.free-adm.ru.
15 PTR cent.free-adm.ru.
2 PTR gate.free-adm.ru.
3 PTR sergey.free-adm.ru.
5 PTR print.free-adm.ru.
Создание заготовки файла зоны
- Код: выделить все
echo -e "\$TTL 30m\n\$ORIGIN yandex.ru.ru." > yandex.ru.zone
dig yandex.ru -t SOA >> yandex.ru.zone
dig yandex.ru -t ns >> yandex.ru.zone
dig yandex.ru -t MX >> yandex.ru.zone
Преобразование кириллических имён
- Код: выделить все
echo "бух.ру" | idn
xn--90a0bg.xn--p1ag
Преобразование адреса в формат обратной зоны
Для преобразования адреса в формат обратной зоны можно воспользоваться утилитой ipcalc с опцией --reverse-dns
- Код: выделить все
ipcalc 185.253.217.208 --reverse-dns
REVERSEDNS=208.217.253.185.in-addr.arpa.
Если вместо IPv4 адреса поставить IPv6, то преобразование будет выполнено для адреса IPv6.
- Код: выделить все
ipcalc 2000:2cc0:13b1:3333::3 --reverse-dns
REVERSEDNS=3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.3.3.3.1.b.3.1.0.c.c.2.0.0.0.2.ip6.arpa.
Затем нужно отделить хостовую часть адреса от сетевой, полученный результат будет именем обратной зоны
Логирование событий
- Код: выделить все
logging {
channel default { file "/var/log/named/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel general { file "/var/log/named/general.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel database { file "/var/log/named/database.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel security { file "/var/log/named/security.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel config { file "/var/log/named/config.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel resolver { file "/var/log/named/resolver.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel xfer-in { file "/var/log/named/xfer-in.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel xfer-out { file "/var/log/named/xfer-out.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel notify { file "/var/log/named/notify.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel client { file "/var/log/named/client.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel unmatched { file "/var/log/named/unmatched.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel network { file "/var/log/named/network.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel update { file "/var/log/named/update.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel update-security { file "/var/log/named/update-security.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel queries { file "/var/log/named/queries.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel query-errors { file "/var/log/named/query-errors.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel dispatch { file "/var/log/named/dispatch.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel dnssec { file "/var/log/named/dnssec.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel lame-servers { file "/var/log/named/lame-servers.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel delegation-only { file "/var/log/named/delegation-only.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel edns-disabled { file "/var/log/named/edns-disabled.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel rpz { file "/var/log/named/rpz.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel rate-limit { file "/var/log/named/rate-limit.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel cname { file "/var/log/named/cname.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
category default { default; };
category general { general; };
category database { database; };
category security { security; };
category config { config; };
category resolver { resolver; };
category xfer-in { xfer-in; };
category xfer-out { xfer-out; };
category notify { notify; };
category client { client; };
category unmatched { unmatched; };
category network { network; };
category update { update; };
category update-security { update-security; };
category queries { queries; };
category query-errors { query-errors; };
category dispatch { dispatch; };
category dnssec { dnssec; };
category lame-servers { lame-servers; };
category delegation-only { delegation-only; };
category edns-disabled { edns-disabled; };
category rpz { rpz; };
category rate-limit { rate-limit; };
category cname { cname; };
};
Если требуется запретить использование IPv6 для DNS-сервера, то необходимо внести строку следующего содержания в конец файла /etc/sysconfig/named
- Код: выделить все
OPTIONS="-4"