Играюсь в админа локалхоста, настроил динамическое днс, это когда по Wi-Fi подключаются клиенты, им автоматически присваивается днс-имя, а конкретно — хост их же собственной машины.
# host 192.168.0.128
128.0.168.192.in-addr.arpa domain name pointer Nokia-N900.lan.
# host Nokia-N900.lan.
Nokia-N900.lan has address 192.168.0.128
То есть, DHCP сервер выдавая IP-адрес клиенту, вместе с тем добавляет A и PTR записи серверу BIND.
# tail -f /var/log/messages
May 21 06:56:31 host hostapd: wlp0s29u1u4: STA c0:38:f9:e4:74:21 IEEE 802.11: authenticated
May 21 06:56:31 host hostapd: wlp0s29u1u4: STA c0:38:f9:e4:74:21 IEEE 802.11: associated (aid 1)
May 21 06:56:31 host hostapd: wlp0s29u1u4: STA c0:38:f9:e4:74:21 RADIUS: starting accounting session A1D91BFD1C6DFCD2
May 21 06:56:31 host hostapd: wlp0s29u1u4: STA c0:38:f9:e4:74:21 WPA: pairwise key handshake completed (RSN)
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': adding an RR at 'Nokia-N900.lan' A 192.168.0.128
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': adding an RR at 'Nokia-N900.lan' TXT "314cb3c557022acc8108511b11ed1164a5"
May 21 06:56:33 host named[7987]: zone lan/IN: sending notifies (serial 32)
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': update unsuccessful: Nokia-N900.lan: 'name not in use' prerequisite not satisfied (YXDOMAIN)
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': deleting rrset at 'Nokia-N900.lan' A
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': adding an RR at 'Nokia-N900.lan' A 192.168.0.128
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone '168.192.in-addr.arpa/IN': deleting rrset at '128.0.168.192.in-addr.arpa' PTR
May 21 06:56:33 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone '168.192.in-addr.arpa/IN': adding an RR at '128.0.168.192.in-addr.arpa' PTR Nokia-N900.lan.
May 21 06:56:33 host named[7987]: zone 168.192.in-addr.arpa/IN: sending notifies (serial 20)
При отключении клиента от сети записи сами удаляются и более не резолвятся.
May 21 06:57:08 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': deleting an RR at Nokia-N900.lan A
May 21 06:57:09 host named[7987]: zone lan/IN: sending notifies (serial 33)
May 21 06:57:09 host named[7987]: client @0x7ff7a80da7e0 192.168.0.128#60927 (mail.voglea.com): query 'mail.voglea.com/AAAA/IN' denied
May 21 06:57:09 host named[7987]: client @0x7ff7a80da7e0 192.168.0.128#60048 (mail.voglea.com): query 'mail.voglea.com/AAAA/IN' denied
May 21 06:57:09 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone 'lan/IN': deleting an RR at Nokia-N900.lan TXT
May 21 06:57:09 host named[7987]: client @0x7ff7a80da7e0 192.168.0.1#39995/key dhcp-server.lan: updating zone '168.192.in-addr.arpa/IN': deleting rrset at '128.0.168.192.in-addr.arpa' PTR
May 21 06:57:09 host named[7987]: zone 168.192.in-addr.arpa/IN: sending notifies (serial 21)
May 21 06:57:14 host named[7987]: zone lan/IN: sending notifies (serial 34)
Теперь вопросы.
Зачем он добавляет помимо A и PTR записей ещё какую-то TXT запись? Я пытался её убрать при помощи правила
zone "lan" {
type master;
file "db.lan";
update-policy {
grant dhcp-server.lan wildcard *.lan. A TXT;
};
};
убрав отсюда TXT совсем, оставив только A, но тогда BIND ругается и запрещает вносить изменения вообще, он не считает что должен внести одну только A запись и остановиться на этом.
Нафига эта TXT нужна? А может ещё что-то полезное можно тогда записывать, а не какой-то хэш?
Далее, в dhcpd.conf имеется subnet, описывающая подсеть и group описывающая известные хосты.
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option domain-name "lan";
option domain-name-servers 192.168.0.1;
# Known machines
pool {
range 192.168.0.128 192.168.0.159;
deny unknown clients;
}
# Unknown machines
pool {
range 192.168.0.160 192.168.0.191;
allow unknown clients;
ddns-hostname = concat(binary-to-ascii(10, 8, "-", leased-address), ".guest");
ddns-domainname = "lan";
}
}
group {
ddns-domainname "lan";
use-host-decl-names on;
host n900 { hardware ethernet C0:38:F9:E4:74:21; }
host g3258 {
hardware ethernet 44:8A:5B:96:9D:F2;
ddns-hostname = "HomePC-Pentium-G3258";
}
}
Если при подключении клиент указан в списке group { }, то ему присваивается хост вида «имя-машины.lan», иначе ему присваивается хост вида 192-168-0-160.guest.lan.
Подскажите пожалуйста, в какую сторону копать, чтобы автоматизировать так сказать, запись известных хостов в group? В идеале хочется набыдлокодить биллинг уровня /локалхост/, потому что не будешь же каждый раз при новом клиенте вручную вносить изменения в dhcpd.conf, добавляя нового клиента, так? Так как лучше всего это дело организовать, откуда dhcpd должен брать список известных клиентов?
Спасибо.
Когда разгребусь с этим делом, хочу разродиться статейкой на тему подкроватного биллинга в своём ЖЖ.