Я настроил один DNS-сервер с bind9 и раздельной конфигурацией DNS, чтобы все внутренние запросы для моего доменного имени получали внутренний IP-адрес, а все запросы извне моей сети получали официальный адрес (которые маршрутизируются через межсетевой экран Cisco ASA. но в конечном итоге достигнет тех же систем).
Когда я использую nsupdate из своей внутренней сети, внутренняя зона обновляется. Аналогично, когда я запускаю nsupdate во внешней системе (с TSIG), внешняя зона обновляется.
Однако я предпочел бы обновлять все данные DNS из внутренней сети. Проблема, похоже, в том, что я могу определить несколько представлений для своего доменного имени, но bind9 идентифицирует зону для использования по IP-адресу клиента, согласно моему views.conf. Поэтому, когда это внутренний IP-адрес, внутренняя зона извлекается или обновляется, но невозможно обновить внешнюю зону из внутренней системы.
Я также пробовал использовать два разных ключа TSIG в надежде, что bind9 сможет идентифицировать внешнюю зону по ключу, что тоже не работает:
Aug 26 11:04:22 s1006 named[13444]: client 10.1.1.6#39841: view internal: signer "external" denied
Aug 26 11:04:22 s1006 named[13444]: client 10.1.1.6#39841: view internal: update 'example.org/IN' denied
Вот соответствующие параметры конфигурации bind9:
view "internal" {
match-clients {
10.1.1.6;
};
recursion yes;
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/zones/example.org-internal.conf";
};
view "external" {
match-clients {
10.1.1.3;
};
recursion no;
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/zones/example.org-external.conf";
};
key internal {
algorithm hmac-md5;
secret "x2ZKW4SxbeySMK7PmV1Nng==";
};
key external {
algorithm hmac-md5;
secret "kiHB9BR6IeSmUUnp1QMCcA==";
};
zone "example.org" {
type master;
file "/var/cache/bind/example.org-internal/example.org";
notify yes;
allow-update {
key internal;
};
};
zone "example.org" {
type master;
file "/var/cache/bind/example.org-external/example.org";
notify yes;
allow-update {
key external;
};
};
Примечание: в целях тестирования представления настроены так, что все запросы из 10.1.1.3 являются «внешними», а из 10.1.1.6 считаются «внутренними».
Посоветуйте, пожалуйста, как это настроить, чтобы я мог обновить внешнюю зону, запустив nsupdate на 10.1.1.6 вместо 10.1.1.3. Также, если вы думаете, что эта конкретная установка - действительно глупая идея, дайте мне знать.
nsupdate
имеет local
подкоманда, позволяющая выбрать исходный адрес. Теоретически это позволит вам запускать обновление внешнего вида изнутри внутренней сети, используя внешний адрес источника. На практике ваша политика брандмауэра может предотвратить это.