За все время администрирования DNS серверов впервый раз такая не понятная проблема
Имеется зона example.com, управляет ей BIND9 (v9.8.4), OS: Debian Wheezy 7.5
Обнаружилась следующая проблема:
У клиентов при запросе зоны store.example.com DNS сервер указанных в их настройках возвращает IP-адрес указанный в А записи через раз.
Стал проверять сам, выглядит это так:
Код: Выделить всё
[12:23] ~ [gin@engine-x] $: nslookup store.example.ru 8.8.4.4
Server: 8.8.4.4
Address: 8.8.4.4#53
Non-authoritative answer:
Name: store.example.ru
Address: xxx.xxx.xxx.xxx
[12:23] ~ [gin@engine-x] $: nslookup store.example.ru 8.8.4.4
Server: 8.8.4.4
Address: 8.8.4.4#53
** server can't find store.example.ru: NXDOMAIN
[12:23] ~ [gin@engine-x] $: nslookup store.example.ru 8.8.4.4
Server: 8.8.4.4
Address: 8.8.4.4#53
Non-authoritative answer:
Name: store.example.ru
Address: xxx.xxx.xxx.xxx
Клиенты проблему с DNS обнаружили через какой то из сайтов типа nslookup.su
- * Причем тот же запрос с dig всегда возвращает ip адрес без проблем.
* Обратную PTR зону для этого поддомена всегда возвращается без ошибок, прямая с ошибками. (nslookup xxx.xxx.xxx.xxx 8.8.8.8)
* Если запрашивать напрямую у моего DNS сервера зону как от себя так и от клиентов - всегда все ОК. (nslookup store.example.ru xxx.xxx.xxx.xxx)
* Еще очень не понятым является тот факт, что с удаленного сервера расположенного в германии ресолв поддомена через Google Public DNS (как в примере) всегда правильный, никаких проблем.
* На другие поддомены указанные в файле зоны example.com у всех клиентов возвращается правильные ответы. Это еще больше ставит меня в тупик.
Перепроверил файл зоны и конфиг DNS - все отлично.
Привожу их:
Код: Выделить всё
options {
directory "/var/named/etc/bind/";
dump-file "log/cache_dump.db";
statistics-file "log/named_stats.txt";
memstatistics-file "log/named_mem_stats.txt";
version "***** DNS Server";
listen-on { x.x.x.x; x.x.x.x; 127.0.0.1; };
forwarders { 8.8.8.8; };
recursion no;
additional-from-auth no;
additional-from-cache no;
allow-query { any; };
};
logging {
channel default_ch {
file "log/named-base.log";
severity info;
print-time yes;
print-category yes;
};
channel security_ch {
file "log/named-security.log";
severity info;
print-time yes;
print-category yes;
};
category default { default_ch; };
category security { security_ch; };
};
include "acl.conf";
include "views.conf";
include "all-zones.conf";
Сама зона:
Код: Выделить всё
$ cat /var/named/etc/bind/zones/example.ru/A/example.ru.ext.zone
$ORIGIN .
$TTL 1440 ; 24 minutes
example.ru IN SOA ns1.example.ru. dnsadmin.example.ru. (
2014061801 ; serial
120 ; refresh (2 minutes)
60 ; retry (1 minute)
60480 ; expire (16 hours 48 minutes)
1440 ; minimum (24 minutes)
)
NS ns1.example.ru.
NS ns4-l2.nic.ru.
NS ns8-l2.nic.ru.
A xxx.xxx.xxx.xxx
MX 1 staff.example.ru.
$ORIGIN example.ru.
aries NS ns1
docs NS ns1
....
store A x.x.x.x
К слову видно что это Slave DNS. Систему DNS я организовал по принципу Hidden-DNS (Stels DNS), мастер спрятан и ограничен от всех, External Slave-ы смотрят на внешку и синхронизация происходит по ключам. Так же используются 4 views-шки, две из них для internal сети (отдает внутренние ip адреса ресурсов), одна для DMZ (виртуальные сервера с белыми ip-адресами которым разрешается рекурсивные запросы), и одна для External -клиентов, которым запрещается рекурсивные запросы и DNS отдает только те зоны, за которые в ответе.
Этот механизм уже работает год, все отлично, и с этим проблем быть не может.
Пробовал менять serial у зоны, не помогло. Возможные советы?