Проблемы с разрешением DNS; копать SERVFAIL ошибка
Я настраиваю пару выделенных серверов, и у меня возникают проблемы с правильной настройкой моих серверов имен. Одним из них является сервер LEMP (LAMP с nginx вместо Apache), а другой будет функционировать исключительно как почтовый сервер, на котором выполняется антиспам exim/dovecot/ASSP (без Apache). Сервер LEMP - это CentOS 5.5, без панели управления, а сервер электронной почты - также CentOS 5.5, с cPanel/WHM.
Итак, у меня были проблемы с настройкой DNS должным образом. У меня есть два домена, каждый из которых указывает на один из этих серверов. Серверы имен правильно зарегистрированы у регистратора доменов, и IP-адреса серверов имен также вводятся правильно. Я говорил с техподдержкой в регистраторе, и они подтверждают, что все настроено с их стороны. Не зная много о DNS, я гуглил серверы имен и DNS до тех пор, пока я почти не ослеп, и потратил часы, возиться с конфигурацией.
В конце концов, я получил DNS сервера LEMP, работающий должным образом (без cPanel). Довольный этим триумфом, я пытаюсь имитировать эту конфигурацию и повторяю процесс с сервером электронной почты, а этого просто не происходит. Сервер имен запускается и останавливается, но домен не разрешается.
Вещи, которые я пробовал
Выполнение стандартных процедур для настройки DNS в WHM Очистка всей информации DNS, удаление BIND, затем повторная установка всего этого и повторение процедур WHM для настройки DNS Очистка всей информации DNS и настройка BIND через оболочку (полностью вне cPanel) используя мои файлы конфигурации и зоны с сервера LEMP в качестве шаблона
named работает просто отлично, но ничего не решает. Когда я "копаю любой example.com", я получаю сообщение SERVFAIL. Nslookups не возвращает информации.
Вот мои файлы конфигурации и зоны.
named.conf
controls {
inet 127.0.0.1 allow { localhost; }
keys { coretext-key; };
};
options {
listen-on port 53 { any; };
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";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "localhost_resolver" {
match-clients { 127.0.0.0/24; };
match-destinations { localhost; };
recursion yes;
//zone "." IN {
// type hint;
// file "/var/named/named.ca";
//};
include "/etc/named.rfc1912.zones";
};
view "internal" {
/* This view will contain zones you want to serve only to "internal" clients
that connect via your directly attached LAN interfaces - "localnets" .
*/
match-clients { localnets; };
match-destinations { localnets; };
recursion yes;
zone "." IN {
type hint;
file "/var/named/named.ca";
};
// include "/var/named/named.rfc1912.zones";
// you should not serve your rfc1912 names to non-localhost clients.
// These are your "authoritative" internal zones, and would probably
// also be included in the "localhost_resolver" view above :
zone "example.com" {
type master;
file "data/db.example.com";
};
zone "3.2.1.in-addr.arpa" {
type master;
file "data/db.1.2.3";
};
};
view "external" {
/* This view will contain zones you want to serve only to "external" clients
* that have addresses that are not on your directly attached LAN interface subnets:
*/
match-clients { any; };
match-destinations { any; };
recursion no;
// you'd probably want to deny recursion to external clients, so you don't
// end up providing free DNS service to all takers
allow-query-cache { none; };
// Disable lookups for any cached data and root hints
// all views must contain the root hints zone:
//include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "/var/named/named.ca";
};
zone "example.com" {
type master;
file "data/db.example.com";
};
zone "3.2.1.in-addr.arpa" {
type master;
file "data/db.1.2.3";
};
};
include "/etc/rndc.key";
db.example.com
$TTL 1D
;
; Zone file for example.com
;
; Mandatory minimum for a working domain
;
@ IN SOA ns1.example.com. contact.example.com. (
2011042905 ; serial
8H ; refresh
2H ; retry
4W ; expire
1D ; default_ttl
)
NS ns1.example.com.
NS ns2.example.com.
ns1 A 1.2.3.4
ns2 A 1.2.3.5
example.com. A 1.2.3.4
localhost A 127.0.0.1
www CNAME example.com.
mail CNAME example.com.
;
db.1.2.3
$TTL 1D
$ORIGIN 3.2.1.in-addr.arpa.
@ IN SOA ns1.example.com contact.example.com. (
2011042908 ;
8H ;
2H ;
4W ;
1D ;
)
NS ns1.example.com.
NS ns2.example.com.
4 PTR hostname.example.com.
5 PTR hostname.example.com.
;
Также обратите внимание: оба эти сервера управляются. Техническая поддержка очень отзывчива и в основном бесполезна. Проходят часы, когда они задают мне вопросы, чтобы выяснить, что может быть не так, затем они передают билет технику в следующую смену, который игнорирует все, что уже произошло, и проводит всю смену, задавая все те же вопросы, которые задал последний парень.
Итак, в итоге:
- Серверы имен с IP-адресами правильно зарегистрированы у регистратора доменов.
- named настроен и работает... и не должен быть настроен
- правильно, потому что ничего не решает.
Любая помощь будет отличной. Я изменил домены и IP-адреса в файлах на непатентованные, но дайте мне знать, если вам нужно знать соответствующий домен.
Спасибо!
ОБНОВИТЬ
Я обнаружил, что у меня нет 127.0.0.1 в /etc/resolv.conf, поэтому я добавил его вместе с моими двумя публичными IP-адресами, которые я назвал прослушиванием.
resolv.conf
search www.example.com example.com
nameserver 127.0.0.1
nameserver 7.8.9.10 ;Was in here by default, authoritative nameserver of hosting company
nameserver 1.2.3.4 ;Public IP #1
nameserver 1.2.3.5 ;Public IP #2
Теперь, когда я DIG example.com с хоста, это решает. Если я пытаюсь выполнить DIG с моего другого сервера (в том же центре обработки данных) или из Интернета, это приводит к истечению времени ожидания, или я получаю SERVFAIL.
2 ответа
Я бы начал с проверки того, что ваш сервер работает:
netstat -an | grep ^udp | grep 53
Должна отображаться строка, похожая на
udp 0 0 0.0.0.0:53 0.0.0.0:*
Если named не запускается, остановите его (просто для очистки), затем запустите и посмотрите, что он пишет в файлы журнала (/var/log/messages, /var/named/data/named.run). Может быть какая-то опечатка, которая мешает успешному запуску демона.
Тогда я бы снял столько, сколько мог, с named.conf. Минимальная базовая конфигурация должна быть проще для устранения неполадок. Затем я добавлял записи по крупицам, чтобы увидеть, какая запись заставляет сервер блокироваться.
Также попробуйте отдельно разрешить вещи локально с сервера и с клиента снаружи. Я надеюсь, вы найдете, что не так.
Это "example.com" вашего ns1.example.com
так же, как "example.com" в вашем www.example.com
?
Если так, то делает whois example.com
перечислить IP-адреса ваших namservers? Если нет, вам нужно настроить регистратора "склеивать записи" с IP-адресами ваших серверов имен, так как никто не может спросить ns1.example.com
для IP-адреса ns1.example.com
если они не знают, что IP уже есть.
Кроме того, просто чтобы убедиться, что вы не настроили какой-либо блок брандмауэра или что-то еще dig www.example.com @1.2.3.4
(1.2.3.4 - это IP-адрес ns1.example.com) откуда-то еще и посмотрите, работает ли это.