RFC 2136 Dynamic DNS updates история прикручивания



  • Есть куча удаленных офисов с пфами и динамическими адресами, давно хотел прикрутить динамический днс на свою зону, чтоб всегда удаленные пфы были под рукой.

    собственно надо чтоб условно test.ddns.example.ru указывал на ip pfsens-а зона example.ru(ddns.example.ru) у меня

    Сделал отдельную зону(унес на тестовый сервер домен 3-го уровня) для динамич адресов ( мне так просто удобней)

    Порядок действий:
    Настройка DNS сервера (BIND 9.7.0 FreeBSD 8.0-RELEASE-p2 ):

    named.conf

    
    options {
             directory       "/etc/namedb/writable";                       
    // это нужно чтобы бинд мог писать в рабочую директорию (можно просто унести файл зоны туда куда он может писать при обновлении пишет файл журнала jnl)
    // выставил соотв права для пользователя bind (иначе будет ругаться потом в логах  General: ddns.example.ru.jnl: create: permission denied )
    
    ...................................
    }
    
    include "../dns.keys.conf";
    
    zone "ddns.example.ru" {
    type master;
    file "ddns.example.ru";
    update-policy {
            grant test.key name test.ddns.example.ru A;
                };
    
    };
    
    

    теперь по порядку:
    в начале генерим ключ командой

    
    dnssec-keygen -a HMAC-MD5 -b 128 -n HOST test.ddns.example.ru.
    
    

    получаем на выходе 2 файла примерно такого вида:
    Ktest.ddns.example.ru.+157+23443.key
    Ktest.ddns.example.ru.+157+23443.private
    из них нам нужен только ключ последовательность примерно выглядит так:
    cuwRQCab5DhEPHKk0jnuwQ==
    есть в обоих файлах
    далее
    заносим его в файл
    dns.keys.conf

    
    key test.key {
    algorithm hmac-md5;
    secret "cuwRQCab5DhEPHKk0jnuwQ==";
    };
    
    

    Теперь зона  :o. в самом файле зоны главное правильно указать SOA запись(у меня ещё A и NS указывют на него же), т.к. pfsense сам узнает SOA для зоны которую выбирает из поля Hostname (Services->Dynamic DNS->RFC 2136 Dynamic DNS updates) и затем туда отправляет обновленя , ну и DNS сервер на pfsense должен быть указан иначе ничего не получится.

    update-policy {
            grant test.key name test.ddns.example.ru A;
                };

    это в общем-то значит разрешить с ключом test.key обновлять A запись test.ddns.example.ru

    Настройка pfsense у меня под рукой был 1.2.2 не эмбедед (согласно написанного выше)
    Services->Dynamic DNS->RFC 2136 Dynamic DNS updates
    ставим галочку enable
    Hostname : test.ddns.example.ru
    тут именно имя т.к. он потом судя по всему узнает SOA для ddns.example.ru и кидает туда обновления
    TTL: по вкусу
    Key name: test.key
    Key type : host
    Key: cuwRQCab5DhEPHKk0jnuwQ==
    жмем save
    смотрим логи бинда:
    должны увидеть что-то похожее:

    
    21-Apr-2010 22:29:56.497 update: client 11.22.33.44#36231: updating zone 'ddns.example.ru/IN': deleting rrset at 'test.ddns.example.ru' A
    21-Apr-2010 22:29:56.497 update: client 11.22.33.44#36231: updating zone 'ddns.example.ru/IN': adding an RR at 'test.ddns.example.ru' A
    
    

    11.22.33.44 ip адрес wan интерфейса pfsens-а

    проверяем nslookup-ом, можно сделать rndc freeze ddns.example.ru и посмотреть на файл зоны там будут новые записи, потом главное не забыть сделать rndc thaw ddns.example.ru (пока во фризе обновления не принимаются  о чем можно прочитать в логе)

    Надеюсь кому-нибудь пригодится.
    З.Ы. поправляйте/дополняйте, если где ошибся не серчайте  :D

    З.Ы.Ы. на pfsense 1.2.3 появилось заветное поле server где можно просто вписать имя сервера куда отсылать обновления :)


Log in to reply