Я настроил зону в своем bind9
монтаж. Предполагается, что это будет общедоступный сервер имен, которым я управляю через скрипт Python для поддоменов dyndns. Но мой основной веб-сайт размещен на стороннем сервере где-то еще, и в ближайшем будущем я тоже хочу разместить их локально. На данный момент я хочу, чтобы bind9 просматривал локальную базу данных для разрешения имен и в случае сбоя перенаправления на внешний DNS (или выборки из него). Вот моя конфигурация, но она не работает для внешних запросов (example.com и www.example.com).
$ cat /etc/bind/named.conf.local
include "/etc/bind/zones.rfc1918";
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
allow-transfer { any; };
update-policy local;
};
$ cat /etc/bind/zones/db.example.com
$ORIGIN .
$TTL 172800 ; 2 days
example.com IN SOA ns1.example.com. hostmaster.example.com. (
116 ; serial
7200 ; refresh (2 hours)
900 ; retry (15 minutes)
1857600 ; expire (3 weeks 12 hours)
8400 ; minimum (2 hours 20 minutes)
)
NS ns1.example.com.
NS ns1.external-host.com.
NS ns2.external-host.com.
ns1.external-host.com A 1.2.3.1
ns2.external-host.com A 1.2.3.2
$ORIGIN example.com.
ns1 A 1.1.1.1
@ IN NS ns1.external-host.com.
@ IN NS ns2.external-host.com.
www IN NS ns1.external-host.com.
www IN NS ns2.external-host.com.
clients A 1.1.1.1
$ORIGIN clients.example.com.
$TTL 3600 ; 1 hour
test A 2.2.2.2
Я думаю, что это невозможно, потому что один из ваших серверов имен является локальным (недоступным с другого). Технически вы можете попробовать пересылки или вариант с несколькими мастерами. Но это не лучший способ для небольшой установки, даже если она работает.
DNS основан на информации о том, какой сервер является хозяином зоны - это определяется типом. Зона master
отвечает за текущую информацию, поэтому должен быть только один (поскольку между экземплярами могут быть различия). Зона slave
s знают мастера и могут спросить его напрямую для всей зоны. Если мастер знает, что это подчиненные, он также может передать всю зону. Вот что вам следует делать.
Оставьте публичный сервер имен там, где он есть, и оставьте его главным. В вашей локальной среде установите вторую привязку и добавьте зону как подчиненную. Также добавьте подчиненное устройство к мастеру, чтобы работало автоматическое обновление. Чтобы убедиться, загляните в логи обоих, там должны быть сделаны AXFR- или IXFR-запросы.
Таким образом, определения вашей зоны могут выглядеть так, при условии, что master - 1.2.3.4, а slave - 5.6.7.8:
мастер:
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
also-notify { 5.6.7.8; };
notify yes;
};
раб:
zone "example.com" {
type slave;
file "/etc/bind/zones/db.example.com"; // this is the file updated.
allow-notify { 1.2.3.4; };
allow-transfer { 1.2.3.4; };
};
Как видите, подчиненное устройство должно быть доступно мастеру, так как его адрес настроен статически.