Имеем: 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, а также позволяют экспериментировать.