У меня есть 2 DNS-сервера (BIND9) (первичный, вторичный) и 1 домен. У меня есть веб-сервер с динамическим IP. Поэтому если мой IP изменился, я не смогу зайти на свой сайт через домен, потому что в DNS-серверах изменился IP-адрес доменной зоны.
Мой вопрос: Как мне обновить свою зону с моего сервера с моим публичным IP-адресом каждые x раз? Может ли кто-нибудь дать мне скрипт обновления через Linux (Debian 9)?
Спасибо
решение1
Вы можете использовать RFC 2136 «DNS UPDATE», либо написав скрипт для 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 и поэтому всегда именуются как имена хостов/поддоменов. Имя ключане(Однако оно должно соответствовать имени хоста, которое вы обновляете.)
Керберос (GSS-TSIG)
Это немного выходит за рамки нашего рассмотрения, но BIND9 также поддерживает это (в основном для использования с Active Directory).