LINUX.ORG.RU
ФорумAdmin

DHCP + BIND = DynDNS

 , , ,


0

1

Играюсь в админа локалхоста, настроил динамическое днс, это когда по 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 должен брать список известных клиентов?

Спасибо.

Когда разгребусь с этим делом, хочу разродиться статейкой на тему подкроватного биллинга в своём ЖЖ.

★★★★★

Ну и чем TXT мешает? Вроде ничем.

Подскажите пожалуйста, в какую сторону копать, чтобы автоматизировать так сказать, запись известных хостов в group? В идеале хочется набыдлокодить биллинг уровня /локалхост/, потому что не будешь же каждый раз при новом клиенте вручную вносить изменения в dhcpd.conf, добавляя нового клиента, так?

Или я не понял задачу или...
Вот как вы себе это представляете? Появляется новый клиент с новым mac вы же до его появления этот мак не знаете, далее можно набыдлокодить скрипт, но вот по каким условиям он у вас должен/не должен попадать в группу?

И вообще не понятно причем тут билинг.

anc ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.