Поиск по сайту:

Настройка главного-подчиненного DNS-сервера с использованием инструментов привязки в RHEL/CentOS 6.5


Сервер доменных имен (DNS), используемый для разрешения имен любым хостам. Главные DNS-серверы (Основной сервер) — это исходные обработчики данных зоны, а подчиненный DNS-сервер (Вторичный сервер) — это просто резервные серверы, которые используются для копирования той же информации о зоне из мастер-серверы. Главный сервер будет разрешать имена для всех хостов, которые мы определили в базе данных зоны, и использовать протокол UDP, поскольку протоколы UDP никогда не используют процесс подтверждения, в то время как TCP использует подтверждение. DNS-серверы также используют протоколы UDP для скорейшего разрешения запроса.

Как работает DNS?

Понимание DNS может немного сбить с толку новичков. Вот краткое объяснение того, как работает DNS.

Скажем, если нам понадобится доступ к какому-либо веб-сайту, что мы будем делать? Просто введите www.google.com в браузере и нажмите Enter. Хм, это все, что мы знаем, но факт в том, как больно DNS проходит через это, запрашивая нас. Пока мы набираем www.google.com, система будет искать www.google.com. Всякий раз, когда мы вводим какое-либо доменное имя, в конце www.google.com появляется . (точка), говорящий о поиске на корневом сервере пространства имен.

Во всем мире для обработки запроса доступно 13 корневых серверов. Сначала, когда мы нажимаем Enter как www.google.com, наш браузер передает запрос нашему локальному преобразователю, который содержит информацию о нашем главном и подчиненном DNS-серверах. Если у них нет информации о таком запрошенном запросе, они передадут запрос в домен верхнего уровня (TLD). Если TLD говорит, что я не знаю запроса, возможно, авторитетный сервер знает ваш запрос, он пересылает на авторитетные серверы, здесь только www.google.com определялся как адрес 72.36.15.56.

Тем временем авторитетный сервер даст ответ на TLD, а TLD перейдет на корневой сервер, а root предоставит информацию браузеру, следовательно, браузер кэширует запрос DNS для будущего использования. Таким образом, этот длительный процесс разрешится за миллисекунды. Если они не знают запрос, они ответят как NXDOMAIN. Это означает, что в базе данных Зоны не найдено ни одной записи. Надеюсь, это поможет вам понять, как работает DNS.

Читайте также: настройка DNS-кэш-сервера в Ubuntu

Моя среда тестирования

Для этой статьи я использую 3 машины: 2 для настройки сервера (главный и подчиненный) и 1 для клиента.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
Пакеты требований
bind, bind-utils, bind-chroot
Используемые файлы конфигурации
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Используемые порт и протоколы
53, UDP

Настройка главного DNS-сервера

Сначала проверьте IP-адрес, имя хоста и версию распространения главного DNS-сервера, прежде чем переходить к настройке.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Как только вы подтвердите, что вышеуказанные настройки верны, пришло время перейти к установке необходимых пакетов.

sudo yum install bind* -y

Установка и настройка Bind

После установки необходимых пакетов определите файлы зон в файле основной конфигурации «named.conf».

sudo vim /etc/named.conf

Ниже приведена моя запись в файле 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.0.200; }; # Here we need to add our Master DNS Server 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.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        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";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Ниже приведены объяснения каждой конфигурации, которую мы использовали в приведенном выше файле.

  1. Порт прослушивания 53 – используется DNS для прослушивания доступных интерфейсов.
  2. Главный DNS. Определите IP-адрес главного DNS для прослушивания запроса.
  3. Подчиненный DNS. Определите свой подчиненный DNS, который будет использоваться для синхронизации информации о нашей зоне для разрешения хостов от главного.
  4. recursion no – если установлено значение «да», рекурсивные запросы подвергнут сервер DDOS-атаке.
  5. Имя зоны — укажите здесь имя вашей зоны, определенное как tecminlocal.com.
  6. тип главного — поскольку эта система была настроена для главного сервера, для будущего подчиненного сервера он будет подчиненным.
  7. tecmintlocal.fwd.zone – этот файл содержит информацию о хосте для этой зоны.
  8. allow-update none – если ничего не будет установлено. он не будет использовать динамический DNS (DDNS).

Создание файлов мастер-зоны

Сначала давайте определим вход в зону прямого просмотра. Здесь нам нужно создать файлы зон с именем, которое мы определили в файле named.conf, как показано ниже.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Мы используем примеры файлов конфигурации для создания файлов прямой зоны, для этого нам нужно скопировать образцы файлов конфигурации.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

После того, как вы скопировали файлы конфигурации, теперь отредактируйте эти файлы зон с помощью редактора vim.

sudo vim /var/named/tecmintlocal.fwd.zone

Прежде чем определять информацию о нашем хосте в файле прямой зоны, сначала бегло просмотрите образец файла зоны.

Это моя конфигурация прямой зоны, добавьте запись ниже и внесите изменения в соответствии с вашими потребностями.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

Сохраните и закройте файл, используя wq!. После редактирования прямого просмотра он выглядит следующим образом: Используйте TAB, чтобы получить подходящий формат файла зоны.

Теперь создайте файл обратного просмотра. Мы уже сделали копию файла обратной связи с именем tecmintlocal.rev.zone. Итак, мы используем этот файл для настройки обратного просмотра.

sudo vim /var/named/tecmintlocal.rev.zone

Прежде чем определять информацию о нашем хосте в файле обратной зоны, быстро просмотрите образец файла обратного просмотра, как показано ниже.

Это моя конфигурация обратной зоны. Добавьте запись ниже и внесите изменения по мере необходимости.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

Сохраните и закройте файл, используя wq!. После редактирования обратного просмотра он выглядит следующим образом: Используйте TAB, чтобы получить подходящий формат файла зоны.

Прежде чем проверять наличие ошибок в конфигурации, проверьте групповое владение файлами прямого и обратного поиска.

sudo ls -l /var/named/

Здесь мы видим, что оба файла принадлежат пользователю root, поскольку файлы, копии которых мы делаем из примеров файлов, доступны в папке /var/named/. Измените группу на именованную в обоих файлах, используя следующие команды.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Установив правильное право собственности на файлы, проверьте их еще раз.

sudo ls -l /var/named/

Теперь проверьте наличие ошибок в файлах зоны перед запуском службы DNS. Сначала проверьте файл named.conf, затем проверьте другие файлы зоны.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

По умолчанию iptables запущен, и наш DNS-сервер ограничен локальным хостом. Если клиент хочет разрешить имя с нашего DNS-сервера, тогда мы должны разрешить входящий запрос, для этого нам нужно добавить входящее правило iptables для порта 53.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Теперь убедитесь, что правила добавлены правильно в цепочку INPUT.

sudo iptables -L INPUT

Далее сохраните правила и перезапустите брандмауэр.

sudo service iptables save
sudo service iptables restart

Запустите указанную службу и сделайте ее постоянной.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Наконец, проверьте настроенные файлы основной зоны DNS (в прямом и обратном направлении) с помощью инструментов dig и nslookup.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Прохладный! мы настроили главный DNS, теперь нам нужно настроить подчиненный DNS сервер. Давайте перейдем к настройке подчиненного сервера. Это не займет много времени, как и основная настройка.

Настройка подчиненного DNS-сервера

На подчиненной машине нам также необходимо установить те же пакеты привязки, что и на главной машине, поэтому давайте установим их, используя следующую команду.

sudo yum install bind* -y

Откройте и отредактируйте файл named.conf для нашей базы данных зон и прослушивания портов.

sudo vim /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.0.201}; # Our Slave DNS server 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.0.0/24; };
        recursion no;

        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";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Запустите службу DNS с помощью.

sudo service named start

После перезапуска службы привязки нам не нужно определять информацию о зоне индивидуально, поскольку наш allow-transfer реплицирует информацию о зоне с главного сервера, как показано на изображении ниже.

sudo ls -l /var/named/slaves

Проверьте информацию о зоне с помощью команды cat.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

Затем откройте DNS-порт 53 в iptables, чтобы разрешить входящие соединения.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Сохраните правила iptables и перезапустите службу iptables.

sudo service iptables save
sudo service iptables restart

Сделайте службу постоянной при загрузке системы.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

Вот и все!. Теперь пришло время настроить наши клиентские машины и проверить имя хоста.

Настроить клиентский компьютер

На стороне клиента нам нужно назначить первичную (192.168.0.200) и вторичную DNS (192.168.0.201) запись в настройках сети, чтобы назначить имя хоста. Для этого запустите команду настройки, чтобы определить все эти записи, как показано на рисунке.

setup

В противном случае отредактируйте файл «/etc/reslov.conf» и добавьте следующие записи.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Теперь проверьте IP-адрес, имя хоста и поиск сервера имен.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Теперь проверьте прямой и обратный поиск DNS с помощью.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Понимание раскопок. Вывод:

  1. Заголовок. Здесь говорится обо всем, о чем мы спрашивали, и о том, каков был результат.
  2. Статус – статус «НЕТ ОШИБКИ», что означает, что отправленный нами запрос был успешным без каких-либо ОШИБОК.
  3. Вопрос – Запрос, который был сделан нами, здесь мой запрос был masterdns.tecmintlocal.com.
  4. Ответ – запрос разрешен, если имеется доступная информация.
  5. Авторитет – ответ сервера имен для домена и зоны.
  6. Дополнительно — дополнительная информация о серверах имен, такая как имя хоста и IP-адрес.
  7. Время запроса – сколько времени потребовалось для разрешения имен с вышеуказанных серверов.

Наконец проверьте наш узел и выполните пинг.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Наконец, настройка завершена, здесь мы успешно настроили основной (главный) и подчиненный (второй) DNS-серверы. Надеемся, что все настроили без каких-либо проблем. Не стесняйтесь оставлять комментарии, если у вас возникнут какие-либо проблемы во время установки.