Używanie dynamicznej usługi DNS do rejestrowania nazw hostów na własnym serwerze DNS

Platforma Azure udostępnia rozpoznawanie nazw dla maszyn wirtualnych i wystąpień ról. Jeśli rozpoznawanie nazw wymaga przekroczenia możliwości zapewnianych przez domyślną usługę DNS platformy Azure, możesz podać własne serwery DNS. Korzystanie z własnych serwerów DNS umożliwia dostosowanie rozwiązania DNS do własnych potrzeb. Na przykład może być konieczne uzyskanie dostępu do zasobów lokalnych za pośrednictwem kontrolera domeny usługi Active Directory.

Gdy niestandardowe serwery DNS są hostowane jako maszyny wirtualne platformy Azure, możesz przekazywać zapytania o nazwę hosta dla tej samej sieci wirtualnej do platformy Azure, aby rozpoznać nazwy hostów. Jeśli nie chcesz używać tej opcji, możesz zarejestrować nazwy hostów maszyny wirtualnej na serwerze DNS przy użyciu dynamicznej nazwy DNS (DDNS). Platforma Azure nie ma poświadczeń do bezpośredniego tworzenia rekordów na serwerach DNS, dlatego często potrzebne są alternatywne ustalenia. Niektóre typowe scenariusze z alternatywami są następujące:

Klienci systemu Windows

Klienci systemu Windows nieprzyłączonych do domeny próbują niezabezpieczonych aktualizacji DDNS podczas rozruchu lub zmiany ich adresu IP. Nazwa DNS to nazwa hosta oraz podstawowy sufiks DNS. Platforma Azure pozostawia podstawowy sufiks DNS pusty, ale możesz ustawić sufiks na maszynie wirtualnej za pośrednictwem interfejsu użytkownika lub programu PowerShell.

Przyłączone do domeny klienci systemu Windows rejestrują swoje adresy IP z kontrolerem domeny przy użyciu bezpiecznej sieci DDNS. Proces przyłączania do domeny ustawia podstawowy sufiks DNS na kliencie i tworzy i utrzymuje relację zaufania.

Klienci z systemem Linux

Klienci z systemem Linux zazwyczaj nie rejestrują się na serwerze DNS podczas uruchamiania, zakładają, że serwer DHCP to robi. Serwery DHCP platformy Azure nie mają poświadczeń do rejestrowania rekordów na serwerze DNS. Do wysyłania aktualizacji DDNS można użyć narzędzia o nazwie nsupdate, które jest zawarte w pakiecie Bind. Ponieważ protokół DDNS jest ustandaryzowany, można użyć nsupdate nawet wtedy, gdy nie używasz powiązania na serwerze DNS.

Możesz użyć punktów zaczepień udostępnianych przez klienta DHCP, aby utworzyć i zachować wpis nazwy hosta na serwerze DNS. Podczas cyklu DHCP klient wykonuje skrypty w pliku /etc/dhcp/dhclient-exit-hooks.d/. Możesz użyć punktów zaczepienia, aby zarejestrować nowy adres IP przy użyciu polecenia nsupdate. Na przykład:

#!/bin/sh
requireddomain=mydomain.local

# only execute on the primary nic
if [ "$interface" != "eth0" ]
then
    return
fi

# When you have a new IP, perform nsupdate
if [ "$reason" = BOUND ] || [ "$reason" = RENEW ] ||
   [ "$reason" = REBIND ] || [ "$reason" = REBOOT ]
then
   host=`hostname`
   nsupdatecmds=/var/tmp/nsupdatecmds
     echo "update delete $host.$requireddomain a" > $nsupdatecmds
     echo "update add $host.$requireddomain 3600 a $new_ip_address" >> $nsupdatecmds
     echo "send" >> $nsupdatecmds

     nsupdate $nsupdatecmds
fi

Można również użyć nsupdate polecenia do wykonywania bezpiecznych aktualizacji DDNS. Na przykład w przypadku korzystania z powiązanego serwera DNS jest generowana para kluczy publicznych-prywatnych (http://linux.yyz.us/nsupdate/). Serwer DNS jest skonfigurowany (http://linux.yyz.us/dns/ddns-server.html) z publiczną częścią klucza, aby mógł zweryfikować podpis w żądaniu. Aby podać parę kluczy do nsupdate, użyj -k opcji , aby żądanie aktualizacji DDNS zostało podpisane.

W przypadku korzystania z serwera DNS systemu Windows można użyć uwierzytelniania Kerberos z parametrem -g w pliku nsupdate, ale nie jest dostępny w wersji systemu Windows .nsupdate Aby użyć protokołu Kerberos, użyj polecenia kinit , aby załadować poświadczenia. Na przykład można załadować poświadczenia z pliku tab kluczy), a następnie nsupdate -g pobrać poświadczenia z pamięci podręcznej.

W razie potrzeby możesz dodać sufiks wyszukiwania DNS do maszyn wirtualnych. Sufiks DNS jest określony w pliku /etc/resolv.conf . Większość dystrybucji systemu Linux automatycznie zarządza zawartością tego pliku, więc zwykle nie można go edytować. Można jednak zastąpić sufiks za pomocą polecenia klienta supersede DHCP. Aby zastąpić sufiks, dodaj następujący wiersz do pliku /etc/dhcp/dhclient.conf :

supersede domain-name <required-dns-suffix>;