Настройка DNS-сервера в CentOS 7
DNS (Domain Name System — система доменных имён) — используется для получения IP-адреса по имени хоста или по URL. Например, если мы введём itdoxy.com
в браузере, DNS-сервер преобразует доменное имя в связанный с ним IP-адрес. Поскольку IP-адрес запомнить трудно, DNS-серверы используются для перевода имён хостов, таких как itdoxy.com
, в 173.xxx.xx.xx
. Таким образом, доменное имя запомнить намного легче, чем IP-адрес.
Данное руководство поможет вам настроить локальный DNS-сервер в вашей системе CentOS 7 (также применимо для RHEL и Scientific Linux 7).
Установка DNS-сервера
В этом уроке мы будем использовать три узла. Один будет действовать как основной DNS-сервер, другой как дополнительный, а последний будет нашим DNS-клиентом. Все они приведены ниже.
Основной (главный) DNS-сервер:
OperatingSystem : CentOS 7 minimal server Hostname : masterdns.itdoxy.local IP Address : 192.168.1.101/24
Дополнительный (вторичный) DNS-сервер:
OperatingSystem : CentOS 7 minimal server Hostname : masterdns.itdoxy.local IP Address : 192.168.1.102/24
Клиент:
OperatingSystem : CentOS 7 minimal server Hostname : masterdns.itdoxy.local IP Address : 192.168.1.103/24
Настройка основного (главного) DNS-сервера
Установите на ваш сервер пакеты bind9.
yum install bind bind-utils -y
1. Настройка DNS-сервера
Отредактируйте файл /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; 192.168.1.101;}; ### Master DNS IP ### # 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 { localhost; 192.168.1.0/24;}; ### IP Range ### allow-transfer{ localhost; 192.168.1.102; }; ### Slave DNS IP ### /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; 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"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "itdoxy.local" IN { type master; file "forward.itdoxy"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "reverse.itdoxy"; allow-update { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
2. Создание файлов зон
Создайте файлы прямой и обратной зоны, которые мы упоминали в файле /etc/named.conf.
2.1 Создание прямой зоны
В директории /var/named создайте файл forward.itdoxy.
vi /var/named/forward.itdoxy
$TTL 86400 @ IN SOA masterdns.itdoxy.local. root.itdoxy.local. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS masterdns.itdoxy.local. @ IN NS secondarydns.itdoxy.local. @ IN A 192.168.1.101 @ IN A 192.168.1.102 @ IN A 192.168.1.103 masterdns IN A 192.168.1.101 secondarydns IN A 192.168.1.102 client IN A 192.168.1.103
На этом создание прямой зоны завершено, переходим далее.
2.2 Создание обратной зоны
В директории /var/named создайте файл reverse.itdoxy.
vi /var/named/reverse.itdoxy
$TTL 86400 @ IN SOA masterdns.itdoxy.local. root.itdoxy.local. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS masterdns.itdoxy.local. @ IN NS secondarydns.itdoxy.local. @ IN PTR itdoxy.local. masterdns IN A 192.168.1.101 secondarydns IN A 192.168.1.102 client IN A 192.168.1.103 101 IN PTR masterdns.itdoxy.local. 102 IN PTR secondarydns.itdoxy.local. 103 IN PTR client.itdoxy.local.
3. Запуск DNS-сервера
Включите и запустите службу DNS:
systemctl enable named systemctl start named
4. Настройка файрвола
Разрешаем в файрволе использование порта 53 для нашего DNS-сервера.
firewall-cmd --permanent --add-port=53/tcp firewall-cmd --permanent --add-port=53/udp
5. Перезапуск файрвола
firewall-cmd --reload
6. Настройка разрешений, прав доступа и SELinux
Пропишите следующие команды друг за другом:
chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf
7. Проверка на ошибки
Теперь нужно убедиться в корректности выполнения проделанных нами шагов.
Проверьте стандартный файл конфигурации DNS:
named-checkconf /etc/named.conf
Если ничего не возвращается, ваш файл конфигурации настроен корректно.
named-checkzone itdoxy.local /var/named/forward.itdoxy
zone itdoxy.local/IN: loaded serial 2011071001 OK
Затем, проверьте обратную зону:
named-checkzone itdoxy.local /var/named/reverse.itdoxy
zone itdoxy.local/IN: loaded serial 2011071001 OK
Добавьте данные DNS-сервера в файл конфигурации сетевого интерфейса.
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa" ONBOOT="yes" HWADDR="08:00:27:19:68:73" IPADDR0="192.168.1.101" PREFIX0="24" GATEWAY0="192.168.1.1" DNS="192.168.1.101" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes"
Отредактируйте файл /etc/resolv.conf.
vi /etc/resolv.conf
Добавьте имя сервера и IP-адрес:
nameserver 192.168.1.101
systemctl restart network
8. Тестирование основного DNS-сервера
dig masterdns.itdoxy.local
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> masterdns.itdoxy.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25179 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;masterdns.itdoxy.local. IN A ;; ANSWER SECTION: masterdns.itdoxy.local. 86400 IN A 192.168.1.101 ;; AUTHORITY SECTION: itdoxy.local. 86400 IN NS secondarydns.itdoxy.local. itdoxy.local. 86400 IN NS masterdns.itdoxy.local. ;; ADDITIONAL SECTION: secondarydns.itdoxy.local. 86400 IN A 192.168.1.102 ;; Query time: 0 msec ;; SERVER: 192.168.1.101#53(192.168.1.101) ;; WHEN: Wed Aug 20 16:20:46 IST 2014 ;; MSG SIZE rcvd: 125
nslookup itdoxy.local
Server: 192.168.1.101 Address: 192.168.1.101#53 Name: itdoxy.local Address: 192.168.1.103 Name: itdoxy.local Address: 192.168.1.101 Name: itdoxy.local Address: 192.168.1.102
Теперь основной DNS-сервер готов к использованию.
Настало время настройки дополнительного DNS-сервера.
Установка дополнительного DNS-сервера
Установите пакеты bind при помощи следующей команды:
yum install bind bind-utils -y
1. Настройка вторичного DNS-сервера
Отредактируйте файл /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; 192.168.1.102; }; 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 { localhost; 192.168.1.0/24; }; . . . . zone "." IN { type hint; file "named.ca"; }; zone "itdoxy.local" IN { type slave; file "slaves/itdoxy.fwd"; masters { 192.168.1.101; }; }; zone "1.168.192.in-addr.arpa" IN { type slave; file "slaves/itdoxy.rev"; masters { 192.168.1.101; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
2. Запуск DNS-службы
systemctl enable named systemctl start named
Теперь прямая и обратная зоны автоматически копируются с главного DNS-сервера на дополнительный DNS-сервер (расположенный в директории: /var/named/slaves/).
ls /var/named/slaves/
itdoxy.fwd itdoxy.rev
3. Заполнение данных DNS-сервера
Добавьте данные DNS-сервера в файл конфигурации сетевого интерфейса.
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa" ONBOOT="yes" HWADDR="08:00:27:19:68:73" IPADDR0="192.168.1.102" PREFIX0="24" GATEWAY0="192.168.1.1" DNS1="192.168.1.101" DNS2="192.168.1.102" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes"
Отредактируйте файл /etc/resolv.conf,
vi /etc/resolv.conf
Добавьте имя сервера и IP-адрес:
nameserver 192.168.1.101 nameserver 192.168.1.102
systemctl restart network
4. Настройка файрвола
Разрешаем в файрволе использование порта 53 для нашего DNS-сервера.
firewall-cmd --permanent --add-port=53/tcp
5. Перезапуск файрвола
Перезапустить файрвол можно при помощи следующей команды:
firewall-cmd --reload
6. Настройка разрешений, прав доступа и SELinux
Пропишите следующие команды друг за другом:
chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf
7. Тестирование вторичного DNS-сервера
dig masterdns.itdoxy.local
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> masterdns.itdoxy.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18204 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;masterdns.itdoxy.local. IN A ;; ANSWER SECTION: masterdns.itdoxy.local. 86400 IN A 192.168.1.101 ;; AUTHORITY SECTION: itdoxy.local. 86400 IN NS masterdns.itdoxy.local. itdoxy.local. 86400 IN NS secondarydns.itdoxy.local. ;; ADDITIONAL SECTION: secondarydns.itdoxy.local. 86400 IN A 192.168.1.102 ;; Query time: 0 msec ;; SERVER: 192.168.1.102#53(192.168.1.102) ;; WHEN: Wed Aug 20 17:04:30 IST 2014 ;; MSG SIZE rcvd: 125
dig secondarydns.itdoxy.local
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> secondarydns.itdoxy.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60819 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;secondarydns.itdoxy.local. IN A ;; ANSWER SECTION: secondarydns.itdoxy.local. 86400 IN A 192.168.1.102 ;; AUTHORITY SECTION: itdoxy.local. 86400 IN NS masterdns.itdoxy.local. itdoxy.local. 86400 IN NS secondarydns.itdoxy.local. ;; ADDITIONAL SECTION: masterdns.itdoxy.local. 86400 IN A 192.168.1.101 ;; Query time: 0 msec ;; SERVER: 192.168.1.102#53(192.168.1.102) ;; WHEN: Wed Aug 20 17:05:50 IST 2014 ;; MSG SIZE rcvd: 125
nslookup itdoxy.local
Server: 192.168.1.102 Address: 192.168.1.102#53 Name: itdoxy.local Address: 192.168.1.101 Name: itdoxy.local Address: 192.168.1.103 Name: itdoxy.local Address: 192.168.1.102
Настройка клиентской составляющей
Добавьте сведения о DNS-сервере в файл /etc/resolv.conf во всех клиентских системах.
vi /etc/resolv.conf # Generated by NetworkManager search itdoxy.local nameserver 192.168.1.101 nameserver 192.168.1.102
Перезапустите сетевую службу или перезагрузите систему.
Тестирование DNS-сервера
И теперь, наконец-таки, вы можете протестировать ваш DNS-сервер, используя любую из следующих команд:
dig masterdns.itdoxy.local
dig secondarydns.itdoxy.local
dig client.itdoxy.local
nslookup itdoxy.local
На этом всё. Основной и дополнительный DNS-серверы готовы к использованию.
Спасибо за внимание! Надеемся, что данная статья помогла вам. Удачи!