Opcje rozpoznawania nazw DNS dla maszyn wirtualnych z systemem Linux na platformie Azure
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️
Platforma Azure domyślnie udostępnia rozpoznawanie nazw DNS dla wszystkich maszyn wirtualnych, które znajdują się w jednej sieci wirtualnej. Możesz zaimplementować własne rozwiązanie rozpoznawania nazw DNS, konfigurując własne usługi DNS na maszynach wirtualnych hostujących platformę Azure. Poniższe scenariusze powinny pomóc w wyborze tego, który działa w danej sytuacji.
- Rozpoznawanie nazw zapewniane przez platformę Azure
- Rozpoznawanie nazw przy użyciu własnego serwera DNS
Typ używanego rozpoznawania nazw zależy od tego, jak maszyny wirtualne i wystąpienia ról muszą komunikować się ze sobą.
W poniższej tabeli przedstawiono scenariusze i odpowiednie rozwiązania do rozpoznawania nazw:
Scenariusz | Rozwiązanie | Przyrostek |
---|---|---|
Rozpoznawanie nazw między wystąpieniami ról lub maszynami wirtualnymi w tej samej sieci wirtualnej | Rozpoznawanie nazw zapewniane przez platformę Azure | nazwa hosta lub w pełni kwalifikowana nazwa domeny (FQDN) |
Rozpoznawanie nazw między wystąpieniami ról lub maszynami wirtualnymi w różnych sieciach wirtualnych | Serwery DNS zarządzane przez klienta, które przesyłają zapytania między sieciami wirtualnymi na potrzeby rozpoznawania przez usługę Azure (serwer proxy DNS). Zobacz Rozpoznawanie nazw przy użyciu własnego serwera DNS. | Tylko nazwa FQDN |
Rozpoznawanie lokalnych komputerów i nazw usług z wystąpień ról lub maszyn wirtualnych na platformie Azure | Serwery DNS zarządzane przez klienta (na przykład lokalny kontroler domeny, lokalny kontroler domeny tylko do odczytu lub pomocniczy serwer DNS synchronizowane przy użyciu transferów stref). Zobacz Rozpoznawanie nazw przy użyciu własnego serwera DNS. | Tylko nazwa FQDN |
Rozpoznawanie nazw hostów platformy Azure z komputerów lokalnych | Przekazywanie zapytań do serwera proxy DNS zarządzanego przez klienta w odpowiedniej sieci wirtualnej. Serwer proxy przekazuje zapytania do platformy Azure w celu rozwiązania problemu. Zobacz Rozpoznawanie nazw przy użyciu własnego serwera DNS. | Tylko nazwa FQDN |
Odwrotny system DNS dla wewnętrznych adresów IP | Rozpoznawanie nazw przy użyciu własnego serwera DNS | nie dotyczy |
Rozpoznawanie nazw zapewniane przez platformę Azure
Oprócz rozpoznawania publicznych nazw DNS platforma Azure udostępnia wewnętrzne rozpoznawanie nazw dla maszyn wirtualnych i wystąpień ról, które znajdują się w tej samej sieci wirtualnej. W sieciach wirtualnych opartych na usłudze Azure Resource Manager sufiks DNS jest spójny w sieci wirtualnej; Nazwa FQDN nie jest wymagana. Nazwy DNS można przypisać do kart interfejsu sieciowego i maszyn wirtualnych. Mimo że rozpoznawanie nazw zapewniane przez platformę Azure nie wymaga żadnej konfiguracji, nie jest to odpowiedni wybór dla wszystkich scenariuszy wdrażania, jak pokazano w poprzedniej tabeli.
Funkcje i zagadnienia
Funkcje:
- Do używania rozpoznawania nazw zapewnianych przez platformę Azure nie jest wymagana żadna konfiguracja.
- Usługa rozpoznawania nazw udostępniana przez platformę Azure jest wysoce dostępna. Nie musisz tworzyć klastrów własnych serwerów DNS i zarządzać nimi.
- Usługa rozpoznawania nazw udostępniana przez platformę Azure może być używana wraz z własnymi serwerami DNS w celu rozpoznawania nazw hostów lokalnych i nazw hostów platformy Azure.
- Rozpoznawanie nazw jest udostępniane między maszynami wirtualnymi w sieciach wirtualnych bez konieczności używania nazwy FQDN.
- Możesz użyć nazw hostów, które najlepiej opisują wdrożenia, zamiast pracować z nazwami generowanymi automatycznie.
Ważne kwestie:
- Sufiks DNS tworzony przez platformę Azure nie może zostać zmodyfikowany.
- Nie można ręcznie zarejestrować własnych rekordów.
- Usługi WINS i NetBIOS nie są obsługiwane.
- Nazwy hostów muszą być zgodne z systemem DNS. Nazwy muszą używać tylko wartości 0-9, a-z i "-" i nie mogą zaczynać się ani kończyć ciągiem "-". Zobacz RFC 3696 Sekcja 2.
- Ruch zapytań DNS jest ograniczany dla każdej maszyny wirtualnej. Ograniczanie przepustowości nie powinno mieć wpływu na większość aplikacji. Jeśli zaobserwowano ograniczanie żądań, upewnij się, że buforowanie po stronie klienta jest włączone. Aby uzyskać więcej informacji, zobacz Uzyskiwanie największej ilości informacji z rozpoznawania nazw zapewnianego przez platformę Azure.
Uzyskiwanie największej możliwości rozpoznawania nazw zapewnianej przez platformę Azure
Buforowanie po stronie klienta:
Niektóre zapytania DNS nie są wysyłane przez sieć. Buforowanie po stronie klienta pomaga zmniejszyć opóźnienia i zwiększyć odporność na niespójności sieci, rozwiązując cykliczne zapytania DNS z lokalnej pamięci podręcznej. Rekordy DNS zawierają czas wygaśnięcia (TTL), który umożliwia pamięci podręcznej przechowywanie rekordu tak długo, jak to możliwe bez wpływu na świeżość rekordu. W związku z tym buforowanie po stronie klienta jest odpowiednie w większości sytuacji.
Niektóre dystrybucje systemu Linux domyślnie nie obejmują buforowania. Zalecamy dodanie pamięci podręcznej do każdej maszyny wirtualnej z systemem Linux po sprawdzeniu, czy nie ma jeszcze lokalnej pamięci podręcznej.
Dostępnych jest kilka różnych pakietów buforowania DNS, takich jak dnsmasq. Poniżej przedstawiono procedurę instalowania systemu dnsmasq w najbardziej typowych dystrybucjach:
- Zainstaluj pakiet dnsmasq:
sudo apt-get install dnsmasq
- Włącz usługę dnsmasq:
sudo systemctl enable dnsmasq.service
- Uruchom usługę dnsmasq:
sudo systemctl start dnsmasq.service
Ponawianie prób po stronie klienta
Dns jest przede wszystkim protokołem UDP. Ponieważ protokół UDP nie gwarantuje dostarczania komunikatów, sam protokół DNS obsługuje logikę ponawiania prób. Każdy klient DNS (system operacyjny) może mieć inną logikę ponawiania w zależności od preferencji twórcy:
- Systemy operacyjne Windows ponawiają próbę po jednej sekundzie, a następnie ponownie po dwóch, czterech i kolejnych czterech sekundach.
- Domyślna konfiguracja systemu Linux ponawia próbę po pięciu sekundach. Należy zmienić tę wartość, aby ponowić próbę pięć razy w odstępach jednej sekundy.
Aby sprawdzić bieżące ustawienia na maszynie wirtualnej z systemem Linux, "cat /etc/resolv.conf" i zapoznać się z wierszem "options", na przykład:
sudo cat /etc/resolv.conf
options timeout:1 attempts:5
Plik /etc/resolv.conf
jest generowany automatycznie i nie powinien być edytowany. Konkretne kroki, które dodają wiersz "options", różnią się w zależności od rozkładu:
Ubuntu (używa rozwiązania resolvconf)
- Dodaj wiersz opcji do
/etc/resolvconf/resolv.conf.d/head
pliku. - Uruchom polecenie
sudo resolvconf -u
, aby zaktualizować.
SUSE (używa netconf)
- Dodaj
timeout:1 attempts:5
do parametruNETCONFIG_DNS_RESOLVER_OPTIONS=""
w pliku/etc/sysconfig/network/config
. - Uruchom polecenie
sudo netconfig update
, aby zaktualizować.
Rozpoznawanie nazw przy użyciu własnego serwera DNS
Twoje potrzeby dotyczące rozpoznawania nazw mogą wykraczać poza funkcje zapewniane przez platformę Azure. Na przykład może być wymagane rozpoznawanie nazw DNS między sieciami wirtualnymi. Aby uwzględnić ten scenariusz, możesz użyć własnych serwerów DNS.
Serwery DNS w sieci wirtualnej mogą przekazywać zapytania DNS do cyklicznych rozpoznawania nazw hostów platformy Azure w celu rozpoznawania nazw hostów znajdujących się w tej samej sieci wirtualnej. Na przykład serwer DNS, który działa na platformie Azure, może odpowiadać na zapytania DNS dotyczące własnych plików strefy DNS i przekazywać wszystkie inne zapytania do platformy Azure. Ta funkcja umożliwia maszynom wirtualnym wyświetlanie zarówno wpisów w plikach strefy, jak i nazwach hostów zapewnianych przez platformę Azure (za pośrednictwem usługi przesyłania dalej). Dostęp do cyklicznych rozpoznawania nazw platformy Azure jest udostępniany za pośrednictwem wirtualnego adresu IP 168.63.129.16.
Przekazywanie DNS umożliwia również rozpoznawanie nazw DNS między sieciami wirtualnymi i umożliwia maszynom lokalnym rozpoznawanie nazw hostów zapewnianych przez platformę Azure. Aby rozpoznać nazwę hosta maszyny wirtualnej, maszyna wirtualna serwera DNS musi znajdować się w tej samej sieci wirtualnej i być skonfigurowana do przekazywania zapytań o nazwę hosta do platformy Azure. Ponieważ sufiks DNS różni się w każdej sieci wirtualnej, można użyć reguł przekazywania warunkowego do wysyłania zapytań DNS do właściwej sieci wirtualnej do rozpoznawania. Na poniższej ilustracji przedstawiono dwie sieci wirtualne i sieć lokalną wykonującą rozpoznawanie nazw DNS między sieciami wirtualnymi przy użyciu tej metody:
Jeśli używasz rozpoznawania nazw udostępnianego przez platformę Azure, wewnętrzny sufiks DNS jest udostępniany dla każdej maszyny wirtualnej przy użyciu protokołu DHCP. Jeśli używasz własnego rozwiązania do rozpoznawania nazw, ten sufiks nie jest dostarczany do maszyn wirtualnych, ponieważ sufiks zakłóca działanie innych architektur DNS. Aby odwołać się do maszyn według nazwy FQDN lub skonfigurować sufiks na maszynach wirtualnych, możesz użyć programu PowerShell lub interfejsu API, aby określić sufiks:
- W przypadku sieci wirtualnych zarządzanych przez usługę Azure Resource Manager sufiks jest dostępny za pośrednictwem zasobu karty interfejsu sieciowego. Możesz również uruchomić
azure network public-ip show <resource group> <pip name>
polecenie , aby wyświetlić szczegóły publicznego adresu IP, który zawiera nazwę FQDN karty sieciowej.
Jeśli przekazywanie zapytań do platformy Azure nie odpowiada Twoim potrzebom, musisz udostępnić własne rozwiązanie DNS. Rozwiązanie DNS musi:
- Podaj odpowiednią rozdzielczość nazwy hosta, na przykład za pośrednictwem sieci DDNS. Jeśli używasz usługi DDNS, może być konieczne wyłączenie oczyszczania rekordów DNS. Dzierżawy DHCP platformy Azure są długie, a oczyszczanie może przedwcześnie usuwać rekordy DNS.
- Podaj odpowiednią rekursywną rozdzielczość, aby umożliwić rozpoznawanie nazw domen zewnętrznych.
- Być dostępny (TCP i UDP na porcie 53) od klientów, które obsługuje i mieć dostęp do Internetu.
- Należy zabezpieczyć się przed dostępem z Internetu, aby ograniczyć zagrożenia stwarzane przez agentów zewnętrznych.
Uwaga
Aby uzyskać najlepszą wydajność, w przypadku korzystania z maszyn wirtualnych na serwerach usługi Azure DNS wyłącz protokół IPv6 i przypisz publiczny adres IP na poziomie wystąpienia do każdej maszyny wirtualnej serwera DNS.