Быстрый способ обновить зону на dedicated сервере

· На чтение уйдёт 3 минут · (500 слов)

Имеем: dedicated сервер, на котором установлен собственный DNS сервер (кэширующий bind), либо на который есть возможность установить кэширующий bind.

Дано: Сменился IP-адрес сервера, к которому периодически подключается наш сервер.

Необходимо: В кратчайшие сроки восстановить работоспособность :-)

Решение: в продолжении статьи.

Быстрое решение:

/etc/init.d/named restart (для FreeBSD - /etc/rc.d/named restart)

Затем проверить, все ли работает:

/etc/init.d/named status (для FreeBSD - /etc/rc.d/named status)

Диагностика:

Убедимся, что ваш сервер действительно возвращает неверные данные.

$ dig +nocomment +trace berserk.mail.ru
; <<>> DiG 9.4.1-P1 <<>> +nocomment +trace berserk.mail.ru
;; global options:  printcmd
.                       515443  IN      NS      H.ROOT-SERVERS.NET.
.                       515443  IN      NS      D.ROOT-SERVERS.NET.
.                       515443  IN      NS      A.ROOT-SERVERS.NET.
.                       515443  IN      NS      I.ROOT-SERVERS.NET.
.                       515443  IN      NS      L.ROOT-SERVERS.NET.
.                       515443  IN      NS      C.ROOT-SERVERS.NET.
.                       515443  IN      NS      J.ROOT-SERVERS.NET.
.                       515443  IN      NS      B.ROOT-SERVERS.NET.
.                       515443  IN      NS      F.ROOT-SERVERS.NET.
.                       515443  IN      NS      K.ROOT-SERVERS.NET.
.                       515443  IN      NS      G.ROOT-SERVERS.NET.
.                       515443  IN      NS      E.ROOT-SERVERS.NET.
.                       515443  IN      NS      M.ROOT-SERVERS.NET.
;; Received 288 bytes from 78.155.192.5#53(78.155.192.5) in 0 ms
ru.                     172800  IN      NS      e.dns.ripn.net.
ru.                     172800  IN      NS      ns.ripn.net.
ru.                     172800  IN      NS      ns2.nic.fr.
ru.                     172800  IN      NS      ns2.ripn.net.
ru.                     172800  IN      NS      ns5.msk-ix.net.
ru.                     172800  IN      NS      ns9.ripn.net.
ru.                     172800  IN      NS      sunic.sunet.se.
;; Received 331 bytes from 199.7.83.42#53(L.ROOT-SERVERS.NET) in 159 ms
mail.ru.                345600  IN      NS      ns.mail.ru.
mail.ru.                345600  IN      NS      ns2.mail.ru.
mail.ru.                345600  IN      NS      ns5.mail.ru.
mail.ru.                345600  IN      NS      ns4.mail.ru.
mail.ru.                345600  IN      NS      ns3.mail.ru.
mail.ru.                345600  IN      NS      ns1.mail.ru.
;; Received 236 bytes from 193.232.128.6#53(ns5.msk-ix.net) in 10 ms
berserk.mail.ru.        3600    IN      A       78.155.192.5
mail.ru.                3600    IN      NS      ns.mail.ru.
mail.ru.                3600    IN      NS      ns3.mail.ru.
mail.ru.                3600    IN      NS      ns5.mail.ru.
mail.ru.                3600    IN      NS      ns1.mail.ru.
mail.ru.                3600    IN      NS      ns2.mail.ru.
mail.ru.                3600    IN      NS      ns4.mail.ru.
;; Received 252 bytes from 194.67.23.130#53(ns.mail.ru) in 8 ms

Таким образом, мы видим, что с точки зрения корневых серверов, имени berserk.mail.ru соответствует адрес 78.155.192.5. Проверим данные на нашем сервере:

# dig +nocomment berserk.mail.ru
; <<>> DiG 9.3.3 <<>> +nocomment berserk.mail.ru
;; global options:  printcmd
;berserk.mail.ru.               IN      A
berserk.mail.ru.        3600    IN      A       78.155.192.1
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed May 20 21:32:25 2009
;; MSG SIZE  rcvd: 49

А вот наш собственный сервер об этом пока еще не знает (он думает, что адрес 78.155.192.1). Значит, ему поможет перезапуск. Если ваш собственный сервер не используется для определения имен - включите его:

$ cat /etc/resolv.conf
nameserver 127.0.0.1
nameserver 193.243.138.50

В случае, когда чушь порет DNS сервер вашего хостера - просто установите у себя named (обычно пакет bind или named, для FreeBSD - ничего не устанавливать, просто дописать в /etc/rc.conf строчку named_enable="YES") и запустите/перезапустите его. Далее убедитесь, что он включен в ваш /etc/resolv.conf на первое место.

В случае, если вы используете VDS, это вам тоже может помочь. Конечно, если на вашем VDS хватит памяти. Например, серверы от FirstVDS.ru безумно дешевые (минимальные тарифные планы 140 и 250 рублей соответственно), однако на них мало памяти для того, чтобы держать собственный DNS сервер. Зато они отлично подходят для хостинга сателлитов, небольших прокси, или для хостинга самописных сервисов на Java, а также позволяют экспериментировать.

Полезное