У меня есть VPS с настроенным BIND. Хорошо работает несколько месяцев.
Недавно я хочу настроить другую программу DNS для управления foo.example.org
поддомен на этом VPS. Я установил их в dns.he.net:
foo.example.org. IN NS vps.exmaple.org. vps.example.org. IN A xx.xx.xx.xx
Поскольку BIND прослушивает 53 / udp, я настроил его для прослушивания порта 5353 и в named.conf
:
zone "foo.example.org" { type forward; forwarders{ 127.0.0.1 port 5353; }; };
Я думаю, что эта конфигурация перенаправит все запросы для *.foo.example.org
ко второй программе DNS. Но когда я это проверяю ...
На самом VPS:
dig bar.foo.example.org @127.0.0.1 -p5353
хорошо работает.
dig bar.foo.example.org @127.0.0.1
работает хорошо.
На моем ноутбуке:
dig bar.foo.example.org @vps.example.org -p5353
хорошо работает.
dig bar.foo.example.org @vps.example.org
хорошо работает.
dig foo.example.org @8.8.8.8 -t ns
работает хорошо.
dig bar.foo.example.org @8.8.8.8
возвращается SERVFAIL
.
Замена 8.8.8.8 другими DNS-серверами дает те же результаты, и нет ничего плохого в TTL.
Кто-нибудь знает, что не так с моей конфигурацией? Вот дополнительная информация:
Другая конфигурация BIND9:
options { directory "/var/cache/bind"; notify yes; allow-transfer { xx.xx.xx.xx; }; dnssec-enable yes; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; recursion yes; allow-recursion { any; }; };
И, в частности, «вторая программа DNS» - это йод, который туннелирует IP через запросы DNS. Я следовал этому руководству, чтобы настроить его за BIND9: http://dev.kryo.se/iodine/wiki/TipsAndTricks#RunningiodinebehindBIND9
PS: Я пробовал другой сервер с настройкой dnsmasq и использую server=/foo.example.org/127.0.0.1#5353
тестировать. По-прежнему возникают ошибки.
Может ли кто-нибудь помочь? Заранее спасибо.
Прежде всего, я бы посоветовал вам использовать что-то другое, кроме 5353, в качестве альтернативного порта для DNS-серверов. 5353 конфликтует с zeroconf / mDNS.
Причина, по которой это работает только при использовании vps.example.org
как рекурсивный преобразователь, потому что это единственный рекурсивный сервер, которому было сказано, что ему нужно перейти на специальный DNS-сервер на порту 5353, чтобы найти foo.example.org
.
Поскольку вы не можете указать номер порта в NS
записи, как правило, невозможно иметь авторитетный сервер на порту, отличном от 53. Все рекурсивные серверы имен в мире собираются найти запись NS для рассматриваемого домена и попытаются связаться с этим сервером на порту 53 Если вы хотите, чтобы они использовали другой порт, вам нужно было бы настроить для каждого из них зону пересылки, указывающую на порт 5353.
Кстати, непонятно, зачем вы хотите разместить foo.example.org
на отдельном сервере имен на другом порту (или IP-адресе). Почему бы вам просто не добавить foo.example.org
зона на тот же авторитетный сервер имен, который обслуживает example.org
?