Вы можете использовать RFC 2136 "ОБНОВЛЕНИЕ DNS", либо с помощью сценария инструмента nsupdate
, либо с помощью совместимого стороннего клиента:
Общий секретный ключ (TSIG)
Сгенерируйте секретный ключ для аутентификации обновлений:
$ tsig-keygen -r /dev/urandom | tee tsig-key.private
key "tsig-key" {
algorithm hmac-sha256;
secret "7P6HbRZRJCmtauo/lV0jwN9wkMgBTUikhf9JuaTvYT4=";
};
Этот ключ известен серверу и клиенту, и больше никому.
Скопируйте напечатанный текст в ваш named.conf
. (Вы можете иметь несколько ключей для разных хостов, каждый с уникальным именем в поле key "…"
.)
Включите динамические обновления в конфигурации зоны:
zone … {
…
update-policy {
/* grant <key_name> <policy> <record_types> */
grant "tsig-key" name myserver.example.com ANY;
};
};
Различные политики могут быть использованы; Например, zonesub
позволяет обновлять всю зону, а subdomain dyn.example.com
имеет очевидное значение.
Выполните обновления:
$ nsupdate -k tsig-key.private
> zone example.com
> del myserver.example.com
> add myserver.example.com 3600 A 100.64.1.1
> send
Существуют различные клиенты, способные к автоматическому обновлению.
Открытый / закрытый ключ (SIG (0))
Сгенерируйте пару ключей:
$ dnssec-keygen -r /dev/urandom -T KEY -n USER myclient.example.com
$ ls K*
Kmyclient.example.com.+005+07399.key
Kmyclient.example.com.+005+07399.private
Файл *.key
содержит открытый ключ - добавьте его в свою зону DNS.
Файл *.private
содержит закрытый ключ - скопируйте его на клиентский компьютер. (На самом деле, скопируйте оба файла на клиентский компьютер.)
Настройте update-policy { }
точно так же, как и в TSIG.
Выполните обновления также таким же образом, используя nsupdate -k <filename>.private
.
(Примечание. Хотя имена ключей TSIG являются произвольными, ключи SIG(0) хранятся в DNS и поэтому всегда именуются как имена хостов / поддоменов. Имя ключа не обязательно должно совпадать с именем хоста, который вы обновляете.)
Керберос (ГСС-ЦИГ)
Немного выходит за рамки, но BIND9 также поддерживает это (в основном для использования с Active Directory).