У меня есть 2 DNS-сервера (BIND9) (основной, дополнительный) и 1 домен. У меня есть веб-сервер с динамическим IP. Поэтому, если мой IP-адрес изменился, я не смогу добраться до своего сайта через домен, потому что на DNS-серверах изменилась детская кроватка IP-зоны.

У меня вопрос: как я могу обновлять свою зону со своего сервера с моим публичным IP-адресом каждый раз? Может кто-нибудь дать мне скрипт обновления через Linux (Debian 9)?

Спасибо

1 ответ1

0

Вы можете использовать RFC 2136 "ОБНОВЛЕНИЕ DNS", либо с помощью сценария инструмента nsupdate , либо с помощью совместимого стороннего клиента:

Общий секретный ключ (TSIG)

  1. Сгенерируйте секретный ключ для аутентификации обновлений:

    $ tsig-keygen -r /dev/urandom | tee tsig-key.private
    key "tsig-key" {
        algorithm hmac-sha256;
        secret "7P6HbRZRJCmtauo/lV0jwN9wkMgBTUikhf9JuaTvYT4=";
    };
    

    Этот ключ известен серверу и клиенту, и больше никому.

  2. Скопируйте напечатанный текст в ваш named.conf . (Вы можете иметь несколько ключей для разных хостов, каждый с уникальным именем в поле key "…" .)

  3. Включите динамические обновления в конфигурации зоны:

    zone … {
        …
        update-policy {
            /* grant <key_name> <policy> <record_types> */
            grant "tsig-key" name myserver.example.com ANY;
        };
    };
    

    Различные политики могут быть использованы; Например, zonesub позволяет обновлять всю зону, а subdomain dyn.example.com имеет очевидное значение.

  4. Выполните обновления:

    $ 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))

  1. Сгенерируйте пару ключей:

    $ 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
    
  2. Файл *.key содержит открытый ключ - добавьте его в свою зону DNS.

    Файл *.private содержит закрытый ключ - скопируйте его на клиентский компьютер. (На самом деле, скопируйте оба файла на клиентский компьютер.)

  3. Настройте update-policy { } точно так же, как и в TSIG.

  4. Выполните обновления также таким же образом, используя nsupdate -k <filename>.private .

(Примечание. Хотя имена ключей TSIG являются произвольными, ключи SIG(0) хранятся в DNS и поэтому всегда именуются как имена хостов / поддоменов. Имя ключа не обязательно должно совпадать с именем хоста, который вы обновляете.)

Керберос (ГСС-ЦИГ)

Немного выходит за рамки, но BIND9 также поддерживает это (в основном для использования с Active Directory).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .