Bind – generowanie wpisów i dynamiczna aktualizacja stref
Kilka słów o tym jak upraościć sobie administrowanie strefami w serwerze BIND…
Automatyczne generowanie wpisów w pliku strefy
Przy tworzeniu stref z wieloma podobnymi wpisami typu hostXXX użyteczna jest instrukcja GENERATE. Przykładowy wpis z pliku strefy może wyglądać następująco:
[...] $GENERATE 100-110 host$ IN A 10.0.0.$ [...]
Po umieszczeniu takiego wpisu w pliku strefy wynik polecenia dig -t axfr labnet.com wykonującego transfer strefy dla zony będzie wyglądał następująco:
<<>> DiG 9.5.0-P2 <<>> -t axfr labnet.com ;; global options: printcmd labnet.com. 172800 IN SOA moher.vnet.com. [...] labnet.com. 172800 IN NS moher.vnet.com. labnet.com. 172800 IN TXT "v=spf1 mx ~all" labnet.com. 172800 IN MX 5 melman.labnet.com. host100.labnet.com. 172800 IN A 10.0.0.100 host101.labnet.com. 172800 IN A 10.0.0.101 host102.labnet.com. 172800 IN A 10.0.0.102 host103.labnet.com. 172800 IN A 10.0.0.103 host104.labnet.com. 172800 IN A 10.0.0.104 host105.labnet.com. 172800 IN A 10.0.0.105 host106.labnet.com. 172800 IN A 10.0.0.106 host107.labnet.com. 172800 IN A 10.0.0.107 host108.labnet.com. 172800 IN A 10.0.0.108 host109.labnet.com. 172800 IN A 10.0.0.109 host110.labnet.com. 172800 IN A 10.0.0.110 melman.labnet.com. 172800 IN A 10.0.0.5 labnet.com. 172800 IN SOA moher.vnet.com. [...] ;; Query time: 5 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Jun 8 09:46:36 2009 ;; XFR size: 17 records (messages 1, bytes 460)
Dynamiczne modyfikowanie strefy
W niektórych wypadkach dogodne jest modyfikowanie strefy “w locie” – bez przeładowywania strefy z pliku. Rozwiązanie takie często spotyka się na styku serwerów DNS i DHCP. Konfigurację tej funkcjonalności w serwerze BIND należy rozpocząć od wygenerowania klucza poleceniem dnssec-keygen:
dnssec-keygen -a HMAC-MD5 -b 512 -n HOST labnet-update
W wyniku tego polecenia wygenerowane zostaną pliki Klabnet-update.+157+63533.key oraz Klabnet-update.+157+63533.private. Na ich podstawie należy wygenerować wpis do pliku named.conf, bądź innego umieszczonego w katalogu /etc/named.d/ z następującą zawartością:
key labnet-update {
algorithm hmac-md5;
secret "UPLyG8ScPjErGo7XU [...] MVxWXHfvIlz/Dhy/9EvYzZA==";
};
zastępując rzecz jasna wartość pola secret kluczem z jednego z plików Klabnet-update*
Dla każdej strefy, która ma być edytowana z wykorzystaniem tego klucza należy dodać dyrektywę allow-update:
[...]
zone "labnet.com" in {
allow-transfer { none; };
allow-update { key labnet-update; };
file "master/labnet.com";
type master;
};
[...]
Po wprowadzeniu tej sekcji do konfiguracji demona BIND można wykorzystywać narzędzie nsupdate do szybkiej edycji pliku strefy lub napisać własny skrypt, np. w języku perl w oparciu o moduł Net::DNS
