Темы
Настройка 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"