Udostępnij za pośrednictwem


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 twoje potrzeby rozpoznawania nazw przekraczają możliwości zapewniane przez domyślny system nazw domen platformy Azure (DNS), 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 maszyn wirtualnych na serwerze DNS przy użyciu dynamicznej usługi DNS (DDNS). Platforma Azure nie ma poświadczeń do bezpośredniego tworzenia rekordów na serwerach DNS, dlatego często potrzebne są alternatywne rozwiązania. W tym artykule opisano niektóre typowe scenariusze z alternatywami.

Klienci systemu Windows

Klienci systemu Windows bez przyłączenia 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 pusty sufiks podstawowej usługi DNS, ale można 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 systemu Linux

Klienci z systemem Linux zazwyczaj nie rejestrują się na serwerze DNS podczas uruchamiania. Zakładają, że serwer DHCP (Dynamic Host Configuration Protocol) robi to. 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.

Za pomocą punktów zaczepienia udostępnianych przez klienta DHCP można utworzyć i zachować wpis nazwy hosta na serwerze DNS. Podczas cyklu DHCP klient wykonuje skrypty w programie /etc/dhcp/dhclient-exit-hooks.d/. Za pomocą punktów zaczepienia można 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żesz również użyć nsupdate polecenia , aby wykonać bezpieczne aktualizacje DDNS. Na przykład w przypadku korzystania z powiązanego serwera DNS jest generowana para kluczy publiczny-prywatny (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 nsupdatesystemie , ale nie jest dostępny w wersji systemu Windows programu nsupdate. Aby użyć protokołu Kerberos, użyj polecenia kinit , aby załadować poświadczenia. Można na przykład 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 /etc/resolv.conf pliku. Większość dystrybucji systemu Linux automatycznie zarządza zawartością tego pliku, więc zwykle nie można go edytować. Sufiks można zastąpić za pomocą polecenia klienta supersede DHCP. Aby zastąpić sufiks, dodaj następujący wiersz do /etc/dhcp/dhclient.conf pliku:

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