Вот и мне понадобился свой простенький первичный DNS сервер для почты и сайта. За платформу взял CentOS и в добавок установил пакет "named" отвечающий за DNS. Хотя у меня был нормально работающий MS DNS, захотелось пощупать аналогичное решение из мира Linux. В общем диск с платным Windows был стерт, и на место нее установилась Linux (CentOS). Вместе с этой операционкой идет пакет "named" который предоставляет функции DNS, которые нам нужны и за которые в прошлом отвечал не бесплатный - MS DNS.
В этой короткой записке будет описана настройка DNS сервера.
Краткое содержание записки:
1. Настройка авторитарного первичного мастер DNS сервера
1.1. Удаляем NetworkManager
1.2. Настройка сетевых карт
1.3. Установка пакета Bind
1.4. Настройка главного файла DNS службы /etc/named.conf
1.5. Создаем файл прямого просмотра зоны /var/named/company.kz.fwd
1.6. Создаем файл обратного просмотра зоны /var/named/company.kz.rev
2. Настройка авторитарного вторичного слейв DNS сервера
2.1. Настройка главного файла DNS службы /etc/named.conf
2.2. Создаем файл прямого просмотра зоны /var/named/company.kz.fwd
2.3. Создаем файл обратного просмотра зоны /var/named/company.kz.rev
3. Настройка кэширующего сервера
4. Проверка работы DNS сервера через команду NSLOOKUP
Начнем нашу настройку с мастер сервера
1. Настройка авторитарного DNS сервера
Исходные данные (что имеем):
Имеется доменное имя второго уровня (доменная зона):
company.kz
IP-адрес первичного мастер DNS сервера:
217.15.54.50 / 255.255.255.248
IP-адрес вторичного слейв DNS сервера:
217.15.54.51 / 255.255.255.248
DNS сервера провайдера:
217.15.88.2
217.15.88.4
IP-адрес внутренней сетевой карты:
10.168.50.2 /255.255.255.0
Адрес локальной сети:
10.168.50.0/255.255.255.0
1.1. Удаляем NetworkManager
Удалим для начала Network Manager, чтобы он не мешал нам настраивать сетевые карты:
# service NetworkManager stop
# yum remove dnsmasq -y
# service network restart
1.2. Настройка сетевых карт
Настройка сетевого адаптера смотрящего в Интернет:
DEVICE=eth0
HWADDR=00:03:47:7A:12:38
TYPE=Ethernet
UUID=030c00ea-ff11-4e12-ad48-2372acffe0e6
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
GATEWAY=217.15.54.49
IPADDR=217.15.54.50
NETMASK=255.255.255.248
DNS1=127.0.0.1
DNS2=217.15.88.2
DNS3=217.15.88.4
Настройка сетевого адаптера смотрящего в локальную сеть:
DEVICE=eth1
HWADDR=00:19:D1:2B:3B:12
TYPE=Ethernet
UUID=4fb9ff5e-3d5e-4be2-a1e1-2c404f4bebfb
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.168.50.2
NETMASK=255.255.255.0
1.3. Установка пакета Bind
Установка пакета Bind, именно этот пакет позволит добавить функции DNS сервера.
Установим пакет Bind:
# yum install bind -y
1.4. Настройка главного файла DNS службы /etc/named.conf
А теперь начнем настраивать наш DNS сервер.
Для настройки мастер DNS сервера, нам понадобится изменить всего три файла:
1. /etc/named.conf - главный файл службы отвечающей за работу DNS сервера, службу зовут "named"
2. /var/named/company.kz.fwd - прямая зона просмотра, чтобы при вводе в браузере например "www.company.kz" пользователи попадали на наш сайт
3. /var/named/company.kz.rev - обратная зона просмотра, это зона нужна например для почтового сервера, многие почтовики проверяют обратное преобразование.
Внесем изменения в файл /etc/named.conf
# vi /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 10.168.50.2; 217.15.54.50;};
listen-on-v6 port 53 { ::1; };
listen-on-v6 port 53 { none; };
forwarders {217.15.88.2;217.15.88.4;};
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 { any;};
allow-query-cache { 127.0.0.1; 10.168.50.0/24;};
allow-recursion { 127.0.0.1; 10.168.50.0/24;};
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";
};
logging {
category lame-servers {null;};
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
# Наша прямая зона просмотра "company.kz"
zone "company.kz" {
type master;
file "company.kz.fwd";
allow-update {none;};
allow-transfer {217.15.54.51; };
};
# Наша обратная зона просмотра "company.kz"
zone "54.15.217.in-addr.arpa" {
type master;
file "company.kz.rev";
allow-update {none;};
allow-transfer {217.15.54.51; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/rndc.key";
Создадим свой файл /var/named/company.kz.fwd
# vi /var/named/company.kz.fwd
$ORIGIN company.kz.
$TTL 3D
@ SOA ns1.company.kz. admin.company.kz. (13 4h 1h 1w 1h)
@ IN NS ns1.company.kz.
@ IN NS ns2.company.kz.
@ IN MX 10 mx.company.kz.
@ IN TXT "v=spf1 mx ip4:217.15.54.51 -all"
company.kz. IN A 217.15.54.51
ns1.company.kz. IN A 217.15.54.50
ns2.company.kz. IN A 217.15.54.51
mx.company.kz. IN A 217.15.54.51
mail.company.kz. IN A 217.15.54.51
www IN A 217.15.54.51
mail IN A 217.15.54.51
Создадим свой файл /var/named/company.kz.rev
#vi /var/named/company.kz.rev
$ORIGIN 54.15.217.in-addr.arpa.
$TTL 3D
@ SOA ns1.company.kz. admin.company.kz. (13 4h 1h 1w 1h)
@ IN NS ns1.company.kz.
@ IN NS ns2.company.kz.
50 IN PTR ns1.company.kz.
51 IN PTR ns2.company.kz.
51 IN PTR mx.company.kz.
51 IN PTR mail.company.kz.
# chmod g+w /var/named
2. Настройка авторитарного вторичного слейв DNS сервера
2.1. Настройка главного файла DNS службы /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 217.15.54.51; };
listen-on-v6 port 53 { ::1; };
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 { any;};
allow-query-cache {any;};
allow-recursion {127.0.0.1; 10.168.50.0/24;10.168.50.3;};
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";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "company.kz" {
type slave;
allow-transfer {none;};
masters {217.15.54.50;};
file "company.kz.fwd";
// allow-update {none;};
};
zone "54.15.217.in-addr.arpa" {
type slave;
masters {217.15.54.50;};
file "company.kz.rev";
// allow-update {none;};
allow-transfer {none;};
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2.2. Создаем файл прямого просмотра зоны /var/named/company.kz.fwd
$ORIGIN company.kz.
$TTL 3D
@ SOA ns1.company.kz. admin.company.kz. (13 4h 1h 1w 1h)
@ IN NS ns1.company.kz.
@ IN NS ns2.company.kz.
@ IN MX 10 mx.company.kz.
@ IN TXT "v=spf1 mx ip4:217.15.54.51 -all"
company.kz. IN A 217.15.54.51
ns1.company.kz. IN A 217.15.54.50
ns2.company.kz. IN A 217.15.54.51
mx.company.kz. IN A 217.15.54.51
mail.company.kz. IN A 217.15.54.51
2.3. Создаем файл обратного просмотра зоны /var/named/company.kz.rev
$ORIGIN 54.15.217.in-addr.arpa.
$TTL 3D
@ SOA ns1.company.kz. admin.company.kz. (13 4h 1h 1w 1h)
@ IN NS ns1.company.kz.
@ IN NS ns2.company.kz.
50 IN PTR ns1.company.kz.
51 IN PTR ns2.company.kz.
51 IN PTR mx.company.kz.
51 IN PTR mail.company.kz.
# chmod g+w /var/named
3. Настройка кэширующего DNS сервера
Кэширующий DNS сервер нужен на шлюзах доступа в Интернет, чтобы кэшировать DNS запросы, тем самым убыстряя доступ на сайты.
Правим конфиг файл /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { localhost; 127.0.0.1; 10.168.50.2; }; // ip-адрес на котором слушается 53 порт
listen-on-v6 port 53 { none; }
forwarders {217.15.178.2;217.15.178.4;}; // ip-адреса DNS серверов провайдера
forward first;
auth-nxdomain no;
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 { 127.0.0.1; 10.168.50.0/24;}; //локальной сети разрешено использовать наш DNS
allow-recursion {127.0.0.1; 10.168.50.0/24;};
allow-query-cache {127.0.0.1; 10.168.50.0/24;};
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
category lame-servers { null; };
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Отключаем поддержку IPv6, чтобы логи не засирались не нужными сообщениями.
Правим файл /etc/sysconfig/named
Добавляем в этот файл строчку:
OPTIONS="-4"
# service named restart
# vi /etc/resolv.conf
nameserver 127.0.0.1
4. Проверка работы DNS сервера через команду NSLOOKUP
Здесь я напишу кратко про проверку DNS сервера на наличие нужных записей через команду nslookup.
В Windows запускаем cmd.exe через меню "Выполнить" -> "cmd.exe" -> ENTER
Выводим все записи из нужного DNS сервера, в моем примере это будет ns1.company.kz, его ip адрес 217.15.54.1
Пример №1. Вывод всех записей нашего DNS сервера
c:\> nslookup
> server ns1.company.kz
> set q=all
> company.kz
Server: ns1.company.kz
Address: 217.15.54.50
company.kz
primary name server = ns1.company.kz
responsible mail addr = admin.company.kz
serial = 13
refresh = 14400 (4 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 3600 (1 hour)
company.kz nameserver = ns1.company.kz
company.kz nameserver = ns2.company.kz
company.kz MX preference = 10, mail exchanger = mx.company.kz
company.kz text =
"v=spf1 mx ip4:217.15.54.51 -all"
company.kz internet address = 217.15.54.51
ns1.company.kz internet address = 217.15.54.50
ns2.company.kz internet address = 217.15.54.51
mx.company.kz internet address = 217.15.54.51
> quit
Пример №2. Вывод записей которые нужны для почтового сервера
c:\> nslookup
> server ns1.company.kz
> set q=mx
> company.kz
Server: ns1.company.kz
Address: 217.15.54.50
company.kz MX preference = 10, mail exchanger = mx.company.kz
company.kz nameserver = ns1.company.kz
company.kz nameserver = ns2.company.kz
mx.company.kz internet address = 217.15.54.51
ns1.company.kz internet address = 217.15.54.50
ns2.company.kz internet address = 217.15.54.51
Пример №3. Проверяем прямое и обратное преобразование
c:\> nslookup
> ns1.company.kz
ns1.company.kz
Address: 217.15.54.50
> 217.15.54.50
ns1.company.kz