środa, 1 sierpnia 2012

Ubuntu Server 12.04 LTS - dynamiczna aktualizacja DNS przez DHCP

Chodzi nam o to, aby serwer DHCP na bieżąco aktualizował bazę usługi DNS. Obydwie usługi zainstalowane są na tej samej maszynie i obsługują sieć lokalną (zobacz poprzedni post).
Sieć LAN: 192.168.19.0/24
Adres serwera: 192.168.19.1

Ponieważ serwer Bind9 musi mieć prawo zapisu do plików definiujących naszą strefę lokalną, przenosimy pliki konfiguracyjne i nadajemy odpowiednie uprawnienia, następnie generujemy klucz zabezpieczający dla usługi DHCP:

sudo cp /etc/bind/db.* /var/lib/bind
sudo chown bind:bind /var/lib/bind/*
sudo dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
sudo cat Kdhcp_updater.*.private|grep Key

Ostatnie polecenie wyświetli wygenerowany klucz na ekranie, np. Key: 5FROo2v0qrs5qS3pKL8pS2==, to co po dwukropku, należy skopiować do schowka.
Zmieniamy plik /etc/bind/named.conf.local:

key DHCP_UPDATER {
  algorithm HMAC-MD5.SIG-ALG.REG.INT;
  # Poniżej wklej skopiowany wcześniej klucz
  secret "5FROo2v0qrs5qS3pKL8pS2==";
};
# W definicjach stref zmieniamy opcje file oraz dodajemy
# opcje allow-update
zone "lo1cg.org" {
  type master;
  file "/var/lib/bind/db.lo1cg.org";
  allow-update { key DHCP_UPDATER; };
};

zone "19.168.192.in-addr.arpa" {
  type master;
  notify no;
  file "/var/lib/bind/db.192";
  allow-update { key DHCP_UPDATER; };
};

Trzeba jeszcze skonfigurować usługę DHCP. Modyfikujemy plik /etc/dhcp/dhcpd.conf:
# Na początku pliku dodajemy:
ddns-update-style interim;
ignore client-updates;
update-static-leases on;
ddns-domainname "mojadomena.org.";
ddns-rev-domainname "in-addr.arpa.";

# Przed definicją podsieci dodajemy:
key DHCP_UPDATER {
  algorithm HMAC-MD5.SIG-ALG.REG.INT;
  # Poniżej wklej skopiowany wcześniej klucz
  secret "5FROo2v0qrs5qS3pKL8pS2==";
};

zone lo1cg.org. {
  primary 127.0.0.1;
  key DHCP_UPDATER;
}

zone 19.168.192.in-addr.arpa. {
  primary 127.0.0.1;
  key DHCP_UPDATER;
}

Reszta bez zmian. Na uwagę zasługuje opcja update-static-leases, którą powyżej włączyliśmy. Odpowiada ona za dopisanie do bazy DNS rekordów dla wszystkich hostów, którym przypisujemy statyczne adresy IP poprzez usługę DHCP. Manual dhcpd.conf ostrzega, że może to generować dużo ruchu wewnątrz sieci, więc trzeba zwrócić uwagę na opcje min-lease-time i max-lease-time oraz przeglądać log systemowy.
Na koniec restartujemy obie usługi i sprawdzamy, czy poprawnie się uruchomiły:
sudo service bind9 restart
sudo service isc-dhcp-server restart
sudo tail -n 50 /var/log/syslog

Po uruchomieniu jakiejś maszyny w sieci LAN (mojhost), możemy sprawdzić, czy baza DNS została zaktualizowana:
host 192.168.19.100 #adres IP mojegohosta
100.19.168.192.in-addr.arpa domain name pointer mojhost.mojadomena.org.

Brak komentarzy:

Prześlij komentarz

Co myślisz, co czujesz?