The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"DynDNS в BIND 9 с использованием View."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"DynDNS в BIND 9 с использованием View."  +/
Сообщение от Александр email(??) on 27-Авг-09, 21:38 
Решил изучить BIND и заодно DHCP.
Прочитал BIND 9 Administrator Reference Manual.
В результате возникли некоторые вопросы, решить который так и не смог.
Я настроил динамическое обновление зон dns dhcp сервером с использованием ключей TSIG.
В обычном режиме (когда все клиенты работают с одним файлом зоны) все работает как и ожидал.
Решил попробовать возможность View.
Настроил как, описано в документации - при обновлении вручную (в помощью nsupdate) все работает корректно. Однако если обновление выполняет DHCP сервер, то запись производиться не в ту View.

Вот пример тестовой сети, построенной с помощью vmware server2. Она содержит две подсети 192.168.1.0/24 и 10.2.0.0/24, DNS сервер как и DHCP, имеет интерфейсы в обоих подсетях, клиенты имеют один интерфейс. На машине, где DHCP так же находиться slave dns.

192.168.1.0/24     Vmware lan "Host Only"
                       ┌───────────────┬─────────────┬────────────.......
192.168.1.50  │                       192.168.1.51│     запрос                       │ 192.168.1.131  
           ┌───┴──┐                       ┌───┴──┐  dhcp            ┌──┴───┐              
           │ eth0         │                       │ eth0          │ <────── │ eth0          │              
           ├──────┤                       ├──────┤                       │ клиент1   │          
           │   dns        │                       │ dhcp,        │                      └──────┘            
           │master      │                       │ dns           │                                    
           │                 │ ddns              │ slave        │                      ┌──────┐              
           ├──────┤ обнов.          ├──────┤                      │ клиент2   │              
           │ eth1         │<───────│ eth1          │                      │ eth0         │              
           └───┬──┘                       └───┬──┘                      └───┬──┘              
  10.2.0.1        │                        10.2.0.2       │                                           │ 10.2.0.5        
                       │                                            │                                           │                
                       └───────────────┴──────────────┴───────────.......
                 10.2.0.0/24        Vmware lan "VMnet2"

Если клиент получает ip адрес (192.168.1.131) от dhcp в подсети eth0 (192.168.1.0/24),  то DHCP почему-то отсылает BIND-у обновление через сеть eth1 (10.2.0.0/24) и тот записывает её в файл зоны, который видят только клиенты с адресами 10.2.0.0/24. В результате в файле зоны, где указаны адреса 10.2.0.0/24 появляется запись о клиенте с адресом 192.168.1.131. Но по этому ip другие клиенты из eth1 не смогут до него достучаться.
Если клиент получает ip адрес через сеть eth1 (10.2.0.0/24) или если обновление записей dns проводить с клиентов (nsupdate) ,то все записи попадают в правильные view.

Версии bind 9.5.0P2-20.1, dhcp-server 3.1.1-7.12 из Sles11.

Вот кусок логов BIND-а при обновлении от dhcp.

*********************************************************************
если клиент получает ip у dhcp через eth0 (192.168.1.0/24), то bind пишет
...
>21-Aug-2009 14:47:45.017 update-security: client 10.2.0.2#32997: view lan10: signer "dynupdate" approved
>21-Aug-2009 14:47:45.017 update: client 10.2.0.2#32997: view lan10: updating zone 'ma.ru/IN': adding an RR at 'test.ma.ru' A
>21-Aug-2009 14:47:45.017 update: client 10.2.0.2#32997: view lan10: updating zone 'ma.ru/IN': adding an RR at 'test.ma.ru' TXT
>21-Aug-2009 14:47:45.025 update-security: client 192.168.1.51#45773: view lan192: signer "dynupdate" approved
>21-Aug-2009 14:47:45.025 update: client 192.168.1.51#45773: view lan192: updating zone '1.168.192.in-addr.arpa/IN': deleting rrset at '131.1.168.192.in-addr.arpa' PTR
>21-Aug-2009 14:47:45.025 update: client 192.168.1.51#45773: view lan192: updating zone '1.168.192.in-addr.arpa/IN': adding an RR at '131.1.168.192.in-addr.arpa' PTR

......
в этом случае запрос с клиента1 dig @192.168.1.50 test.ma.ru ничего не выдаст, а запрос с клиента2 dig @10.2.0.1 test.ma.ru, скажет, что test.ma.ru. 300 IN A 192.168.1.131.
*********************************************************************

*********************************************************************
если клиент получает ip у dhcp через eth1 (10.2.0.0/24) , тогда все проводиться нормально.
...
>21-Aug-2009 14:51:13.017 update-security: client 10.2.0.2#44029: view lan10: signer "dynupdate" approved
>21-Aug-2009 14:51:13.017 update: client 10.2.0.2#44029: view lan10: updating zone 'ma.ru/IN': adding an RR at 'test.ma.ru' A
>21-Aug-2009 14:51:13.017 update: client 10.2.0.2#44029: view lan10: updating zone 'ma.ru/IN': adding an RR at 'test.ma.ru' TXT
>21-Aug-2009 14:51:13.030 update-security: client 10.2.0.2#38415: view lan10: signer "dynupdate" approved
>21-Aug-2009 14:51:13.030 update: client 10.2.0.2#38415: view lan10: updating zone '0.2.10.in-addr.arpa/IN': deleting rrset at '131.0.2.10.in-addr.arpa' PTR
>21-Aug-2009 14:51:13.030 update: client 10.2.0.2#38415: view lan10: updating zone '0.2.10.in-addr.arpa/IN': adding an RR at '131.0.2.10.in-addr.arpa' PTR

*********************************************************************

*********************************************************************
логи при обновлении вручную с клиента через eth0
> nas:~ # nsupdate -k Kdynupdate.+157+24058.private
> server 192.168.1.50
> update add test8.ma.ru. 72000 IN A 192.168.1.68
> send
>

..............
>21-Aug-2009 13:26:50.556 update-security: client 192.168.1.131#52070: view lan192: signer "dynupdate" approved
>21-Aug-2009 13:26:50.556 update: client 192.168.1.131#52070: view lan192: updating zone 'ma.ru/IN': adding an RR at 'test8.ma.ru' A
>21-Aug-2009 13:26:50.556 general: journal file master/ma.ru-192.jnl does not exist, creating it
>21-Aug-2009 13:26:50.571 notify: zone ma.ru/IN/lan192: sending notifies (serial 2009082102)
>21-Aug-2009 13:26:50.575 xfer-out: client 192.168.1.51#51565: view lan192: transfer of 'ma.ru/IN': IXFR started: TSIG nodes
>21-Aug-2009 13:26:50.576 xfer-out: client 192.168.1.51#51565: view lan192: transfer of 'ma.ru/IN': IXFR ended

..............
>nas:~ # dig @192.168.1.50 test8.ma.ru
>............
>;; ANSWER SECTION:
>test8.ma.ru.            72000   IN      A       192.168.1.68

все выполняет успешно
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
логи при обновлении вручную с клиента через eth1
>nas:~ # nsupdate -k Kdynupdate.+157+24058.private
> server 10.2.0.1
> update add test1.ma.ru. 72000 IN A 10.2.0.68
> send
>

..............
>21-Aug-2009 13:31:27.908 update-security: client 10.2.0.5#43086: view lan10: signer "dynupdate" approved
>21-Aug-2009 13:31:27.908 update: client 10.2.0.5#43086: view lan10: updating zone 'ma.ru/IN': adding an RR at 'test1.ma.ru' A
>21-Aug-2009 13:31:27.908 general: journal file master/ma.ru-10.jnl does not exist, creating it
>21-Aug-2009 13:31:27.911 notify: zone ma.ru/IN/lan10: sending notifies (serial 2009082102)
>21-Aug-2009 13:31:27.916 xfer-out: client 10.2.0.2#37267: view lan10: transfer of 'ma.ru/IN': IXFR started: TSIG nodes
>21-Aug-2009 13:31:27.916 xfer-out: client 10.2.0.2#37267: view lan10: transfer of 'ma.ru/IN': IXFR ended

..............
> nas:~ # dig @10.2.0.1 test1.ma.ru
>.............
>;; ANSWER SECTION:
>test1.ma.ru.            72000   IN      A       10.2.0.68

все выполняет успешно
*********************************************************************

Ниже привожу все файлы конфигурации как есть.
*********************************************************************
/etc/named.conf
ключ nodes используется для связи во slave dns
ключ dynupdate - для взаимодействия с dhcp
sortlist - экспериментировал с сортировкой ответов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
key nodes {
    algorithm hmac-sha1;
    secret "Qh2N+vvIkVhpnPFKFkqzGDKDVdw=";
};

key dynupdate {
    algorithm hmac-md5;
    secret "B/yrsRyTIqIUCeM3B3IqpVuzaqejL0mY5RmwavfOB+fYTO1oP1Kb7Kf7Jg124CS26aj1qeTtblCjilCsPfWEcw==";
};

server 192.168.1.51 { keys { nodes; } ;};
server 10.2.0.2 { keys { nodes;} ;};

options {
    directory "/var/lib/named";
    key-directory "/etc/named.d";
    version "dns-server";
    hostname "dns-server";
    notify yes;
    dump-file "/var/log/named_dump.db";
        statistics-file "/var/log/named.stats";
    dnssec-enable yes;
    allow-transfer { key nodes ;};

    sortlist {
    { 192.168.1/24;                                // IF   on class C 192.168.1
        { 192.168.1/24;                            // THEN use .1, or .2 or .3
            { 192.168.2/24; 192.168.3/24; }; }; };
    { 10.2.0/24;
        { 10.2.0/24; }; };
    { { 192.168.4/24; 192.168.5/24; };             // if .4 or .5, prefer that net
    };
};

};

logging {

    channel log_file {
    file "/var/lib/named/var/log/named_log"
    versions 3 size 100M;
    print-time yes;
    print-category yes;
     };

    channel update_log {
    file "/var/lib/named/var/log/update_log"
    versions 3 size 100M;
    print-time yes;
    print-category yes;
     };
    
    channel client_quer {
    file "/var/lib/named/var/log/client_req_log"
    versions 3 size 100M;
    print-time yes;
    print-category yes;
     };

    channel notify_log {
    file "/var/lib/named/var/log/notify_log"
    versions 3 size 100M;
    print-time yes;
    print-category yes;
     };

    category update   { update_log; };
    category update-security { update_log; };
    category queries  { client_quer; };
    category xfer-in  { notify_log; };
    category xfer-out { notify_log; };
    category notify   { notify_log; };
    category default  { log_file; };
};

view "local" {
match-clients { 127.0.0/8 ;};

        zone "localhost" in {
        type master;
        file "localhost.zone";
        };

        zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
        };
};

view "lan192" {
match-clients { 192.168.1.0/24; };
    zone "ma.ru" in {
    file "master/ma.ru-192";
    type master;
    allow-update { key dynupdate ;};
    };
    zone "1.168.192.in-addr.arpa" in {
    file "master/1.168.192.in-addr.arpa";
    type master;
    allow-update { key dynupdate ;};
    };
};

view "lan10" {
match-clients { 10.2.0.0/24; };
    zone "ma.ru" in {
    file "master/ma.ru-10";
    type master;
    allow-update { key dynupdate ;};
    };
    zone "0.2.10.in-addr.arpa" in {
    file "master/0.2.10.in-addr.arpa";
    type master;
    allow-update { key dynupdate ;};
    };
};

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
файлы зон
master/ma.ru-192

$ORIGIN .
$TTL 172800    ; 2 days
ma.ru            IN SOA    ha-node1.ma.ru. root.ha-node1.ma.ru. (
                2009082101 ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS    ha-node1.ma.ru.
            NS    ha-node2.ma.ru.
$ORIGIN ma.ru.
ha-node1        A    192.168.1.50
            A    192.168.2.50
ha-node2        A    192.168.1.51
            A    192.168.2.51
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
master/ma.ru-10

$ORIGIN .
$TTL 172800    ; 2 days
ma.ru            IN SOA    ha-node1.ma.ru. root.ha-node1.ma.ru. (
                2009082101 ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS    ha-node1.ma.ru.
            NS    ha-node2.ma.ru.
$ORIGIN ma.ru.
ha-node1        A    10.2.0.1
ha-node2        A    10.2.0.2

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.168.192.in-addr.arpa
$ORIGIN .
$TTL 172800    ; 2 days
1.168.192.in-addr.arpa    IN SOA    ha-node1.ma.ru. root.ha-node1.ma.ru. (
                2009082101 ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS    ha-node1.ma.ru.
            NS    ha-node2.ma.ru.
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 172800    ; 2 days
50            PTR    ha-node1.ma.ru.
51            PTR    ha-node2.ma.ru.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0.2.10.in-addr.arpa
$ORIGIN .
$TTL 172800    ; 2 days
0.2.10.in-addr.arpa    IN SOA    ha-node1.ma.ru. root.ha-node1.ma.ru. (
                2009082101 ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS    ha-node1.ma.ru.
            NS    ha-node2.ma.ru.
$ORIGIN 0.2.10.in-addr.arpa.
1            PTR    ha-node1.ma.ru.
2            PTR    ha-node2.ma.ru.
*********************************************************************

Файл /etc/dhcpd.conf

option domain-name "ma.ru";

default-lease-time 600;
max-lease-time 7200;

ddns-updates      on;
ddns-update-style interim;
ignore client-updates;

key dynupdate {
    algorithm hmac-md5;
    secret "B/yrsRyTIqIUCeM3B3IqpVuzaqejL0mY5RmwavfOB+fYTO1oP1Kb7Kf7Jg124CS26aj1qeTtblCjilCsPfWEcw==";
};

authoritative;

log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.131 192.168.1.254;
  option domain-name-servers 192.168.1.50, 192.168.1.51;
  option routers 192.168.1.1;
  zone 1.168.192.in-addr.arpa. { primary 192.168.1.50; key dynupdate; }
  zone ma.ru. { primary 192.168.1.50; key dynupdate; }
}

subnet 10.2.0.0 netmask 255.255.255.0 {
  range 10.2.0.131 10.2.0.254;
  option domain-name-servers 10.2.0.1, 10.2.0.2;
  zone 0.2.10.in-addr.arpa. { primary 10.2.0.1; key dynupdate; }
  zone ma.ru. { primary 10.2.0.1; key dynupdate; }
}
*********************************************************************

Если в файле dhcpd.conf в subnet 10.2.0.0 убрать упоминание о zone ma.ru., то дин. обновления записей dns при запросах из сети 192.168.1.0/24 проводятся нормально.
Пробовал указывать другое имя зоны в dhcpd.conf в subnet 10.2.0.0 (соответственно так же и в dns для view lan10) - не помогает.
Видимо dhcpd не корректно обрабатывает dyndns, если в его конфиге два раза указаны zone.

И еще вопрос: bind не даёт зарегистрировать запись, если имя машины содержит кириллические символы. Можно это как-то побороть?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "DynDNS в BIND 9 с использованием View."  +/
Сообщение от casm email(ok) on 27-Авг-09, 21:52 
Пока писал вопрос, на ум пришло: может для view "lan192" указать listen-on { 192.168.1.50; };
а для view "lan10" указать listen-on { 10.2.0.1; }; ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "DynDNS в BIND 9 с использованием View."  +/
Сообщение от dispay666 (??) on 28-Авг-09, 03:10 
>[оверквотинг удален]
>Если в файле dhcpd.conf в subnet 10.2.0.0 убрать упоминание о zone ma.ru.,
>то дин. обновления записей dns при запросах из сети 192.168.1.0/24 проводятся
>нормально.
>Пробовал указывать другое имя зоны в dhcpd.conf в subnet 10.2.0.0 (соответственно так
>же и в dns для view lan10) - не помогает.
>Видимо dhcpd не корректно обрабатывает dyndns, если в его конфиге два раза
>указаны zone.
>
>И еще вопрос: bind не даёт зарегистрировать запись, если имя машины содержит
>кириллические символы. Можно это как-то побороть?

Привет.
Попробуй для кажд subnet-а задать параметры ddns-domainname и ddns-rev-domainname
в конфиге DHCP сервера

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "DynDNS в BIND 9 с использованием View."  +/
Сообщение от Александр email(??) on 01-Сен-09, 13:00 
>Привет.
>Попробуй для кажд subnet-а задать параметры ddns-domainname и ddns-rev-domainname
>в конфиге DHCP сервера

Спасибо, но это не помогло.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру