Použití překladu zdrojového síťového adres (SNAT) pro odchozí připojení

Některé scénáře vyžadují, aby virtuální počítače nebo výpočetní instance měly odchozí připojení k Internetu. Front-endové IP adresy veřejného nástroje pro vyrovnávání zatížení se dají použít k zajištění odchozího připojení k Internetu pro back-endové instance. Tato konfigurace používá Překlad zdrojového síťového adres (SNAT) k převodu privátní IP adresy virtuálního počítače na veřejnou ip adresu Load Balancer. SNAT namapuje IP adresu back-endu na veřejnou IP adresu vašeho nástroje pro vyrovnávání zatížení. SNAT brání mimo nepřímý odkaz na instance back-endu.

Metody odchozího připojení Azure

Odchozí připojení k Internetu se dá v Azure povolit následujícími způsoby:

# Metoda Typ přidělení portu Provozní – jakost? Rating
1 Použití IP adresy front-endu Load Balancer pro odchozí komunikace prostřednictvím odchozích pravidel Statické, explicitní Ano, ale ne ve velkém měřítku OK
2 Přidružení brány NAT k podsíti Statické, explicitní Yes Vhodný
3 Přiřazuje se veřejná IP adresa k virtuálnímu počítači. Statické, explicitní Yes OK
4 Použití výchozího odchozího přístupu Implicitní No Následky

1. použití IP adresy front-endu nástroje pro vyrovnávání zatížení pro odchozí pravidla prostřednictvím odchozích pravidel

Odchozí pravidla umožňují explicitně definovat SNAT (Zdrojová síťová adresa) pro standardní veřejné Load Balancer. Tato konfigurace umožňuje používat veřejnou IP adresu nebo IP adresy vašeho nástroje pro vyrovnávání zatížení pro odchozí připojení back-end instancí.

Tato konfigurace umožňuje:

  • Maskování IP adres
  • Zjednodušení allowlists
  • Snižuje počet prostředků veřejné IP adresy pro nasazení.

U odchozích pravidel máte úplnou deklarativní kontrolu nad odchozím připojením k Internetu. Odchozí pravidla umožňují škálovat a ladit tuto schopnost vašim konkrétním potřebám prostřednictvím ručního přidělování portů. Ruční přidělování portů SNAT na základě velikosti fondu back-endu a počtu frontendIPConfigurations může zabránit vyčerpání SNAT.

Porty SNAT můžete ručně přidělit buď pomocí "portů na instanci" nebo "maximálního počtu instancí back-endu". Pokud máte Virtual Machines v back-endu, doporučujeme přidělit porty podle "portů na instanci" a získat tak maximální využití portu SNAT.

Porty na instanci by se měly vypočítat následujícím způsobem:

Počet front-endové IP adresy * 64 KB/počet back-end instancí

Pokud máte Virtual Machine Scale Sets v back-endu, doporučujeme přidělit porty podle "maximálního počtu instancí back-endu". Pokud se do back-endu přidávají další virtuální počítače než zbývající porty SNAT, je možné, že se zablokuje škálování sady škálování virtuálních počítačů, nebo že nové virtuální počítače nebudou dostávat dostatečné porty SNAT.

Další informace o odchozích pravidlech najdete v tématu odchozí pravidla.

2. přidružení brány NAT k podsíti

Virtual Network NAT zjednodušuje pouze odchozí připojení k Internetu pro virtuální sítě. Při konfiguraci v podsíti všechna odchozí připojení používá vaše zadané statické veřejné IP adresy. Odchozí připojení je možné bez nástroje pro vyrovnávání zatížení nebo veřejných IP adres, které jsou přímo připojené k virtuálním počítačům. Překlad adres (NAT) je plně spravovaný a vysoce odolný.

Nejlepší metodou pro odchozí připojení je použití brány NAT. Brána NAT je vysoce rozšiřitelná, spolehlivá a nemá stejné obavy při vyčerpání portů SNAT.

Další informace o službě Azure Virtual Network NAT najdete v tématu co je azure Virtual Network NAT.

3. přiřazení veřejné IP adresy virtuálnímu počítači

Přidružení Metoda Protokoly IP
Veřejná IP adresa síťového adaptéru virtuálního počítače SNAT (zdrojový překlad adresy zdrojové sítě)
se nepoužívá.
TCP (protokol řízení přenosů)
UDP (protokol datadatagram uživatele)
ICMP (Internet Control Message Protocol)
ESP (zapouzdření datové části zabezpečení)

Provoz se vrátí do žádajícího klienta z veřejné IP adresy virtuálního počítače (IP adresa na úrovni instance).

Azure používá veřejnou IP adresu přiřazenou ke konfiguraci protokolu IP síťové karty instance pro všechny odchozí toky. Instance má k dispozici všechny dočasné porty. Nezáleží na tom, jestli je virtuální počítač vyrovnaný k vyrovnávání zatížení. Tento scénář má přednost před ostatními.

Veřejná IP adresa přiřazená k virtuálnímu počítači je vztah 1:1 (nikoli 1: mnoho) a implementovaný jako bezstavové 1:1 NAT.

4. Výchozí odchozí přístup

Poznámka

Tato metoda se nedoporučuje pro produkční úlohy, protože zvyšuje riziko vyčerpání portů. Nepoužívejte prosím tuto metodu pro produkční úlohy, aby se předešlo potenciálním chybám připojení.

K žádnému prostředku Azure, který nemá přidruženou veřejnou IP adresu, nemá Load Balancer s odchozími pravidly, která se nachází před ním, není součástí režimu flexibilní orchestrace virtuálních počítačů nebo není k dispozici prostředek brány NAT přidružený k této podsíti, kterému se přidělí minimální počet portů pro odchozí připojení. Tento přístup se označuje jako výchozí odchozí přístup a jedná se o nejhorší metodu pro zajištění odchozího připojení pro vaše aplikace.

Mezi další příklady výchozího odchozího přístupu patří:

  • Při použití základní Load Balancer
  • virtuální počítač v Azure (bez výše uvedených přidružení). V tomto případě je odchozí připojení poskytované výchozí IP adresou pro odchozí přístup. Tato IP adresa je dynamická IP adresa přiřazená Azure, kterou nemůžete ovládat. Výchozí SNAT se nedoporučuje pro produkční úlohy a může způsobit selhání připojení.
  • Virtuální počítač ve fondu back-endu Load Balancer bez odchozích pravidel. V důsledku toho použijete IP adresu front-endu nástroje pro vyrovnávání zatížení pro odchozí a příchozí a jsou náchylnější k selhání připojení z vyčerpání portů SNAT.

Co jsou porty SNAT?

Porty slouží ke generování jedinečných identifikátorů používaných k údržbě různých toků. Internet používá k poskytnutí tohoto rozlišení pět-Tuple.

Pokud se port používá pro příchozí připojení, má naslouchací proces pro příchozí požadavky na připojení na tomto portu. Tento port nelze použít pro odchozí připojení. K navázání odchozího připojení se používá dočasný port k poskytnutí cíle s portem, na kterém se má komunikovat a udržovat odlišný tok přenosů. Když se tyto dočasné porty používají pro SNAT, nazývají se porty SNAT.

Podle definice Každá IP adresa má 65 535 portů. Každý port lze použít pro příchozí nebo odchozí připojení protokolu TCP (Transmission Control Protocol) a UDP (protokol User Datagram). Když se do nástroje pro vyrovnávání zatížení přidá veřejná IP adresa jako front-endové IP adresy, porty 64 000 mají nárok na SNAT. I když se dají přidělit všechny veřejné IP adresy, které se přidají jako IP adresy front-endu, vybírají se v jednom okamžiku IP adresy front-endu. Pokud se například každému serveru back-end přiděluje 64 000 portů s přístupem k 2 front-endové IP adresy, obě instance back-endu budou využívat porty z první front-endu IP, dokud nebudou všechny 64 000 porty vyčerpány.

Port používaný pro vyrovnávání zatížení nebo pravidlo příchozího překladu adres (NAT) spotřebovává osm portů z portů 64 000. Toto využití snižuje počet portů, které mají nárok na SNAT. Pokud je pravidlo vyrovnávání zatížení nebo příchozí překlad adres (NAT) ve stejném rozsahu než osm jako jiné, nepoužívá porty navíc.

Jak výchozí SNAT funguje?

Když virtuální počítač vytvoří odchozí tok, Azure převede zdrojovou IP adresu na nedočasný IP adresu. Tento překlad se provádí přes SNAT.

Pokud používáte SNAT bez odchozích pravidel prostřednictvím veřejné Load Balancer, porty SNAT jsou předem přiděleny, jak je popsáno v následující tabulce pro alokaci portů SNAT.

Výchozí alokační tabulka portu

Následující tabulka uvádí předběžné přidělování portů SNAT pro velikosti back-end fondů:

Velikost fondu (instance virtuálních počítačů) Výchozí porty SNAT na konfiguraci protokolu IP
1-50 1 024
51-100 512
101-200 256
201-400 128
401-800 64
801 – 1000 32

Vyčerpání portů

Každé připojení ke stejné cílové IP adrese a cílovému portu bude používat port SNAT. Toto připojení udržuje odlišný přenosový tok z instance back-endu nebo z klienta na Server. Tento proces přidělí serveru jedinečný port, na který se má adresovat přenos. Bez tohoto procesu nevíte na klientském počítači, který tok paketu je součástí.

Imagine s více prohlížeči https://www.microsoft.com , což je:

  • Cílová IP adresa = 23.53.254.142
  • Cílový port = 443
  • Protokol = TCP

Bez různých cílových portů pro návratový provoz (port SNAT použitý k navázání připojení) nebude mít klient žádný způsob, jak oddělit jeden výsledek dotazu od jiného.

Odchozí připojení se můžou rozpojovat. Instanci back-endu je možné přidělit nedostatečným portům. Použijte funkci opakovaného použití připojení v rámci aplikace. Bez opakovaného použití připojení se zvýšilo riziko vyčerpání portů SNAT. Další informace o sdružování připojení pomocí Azure App Service najdete v tématu řešení potíží s přerušovaným odchozím připojením v Azure App Service

Nová odchozí připojení k cílové IP adrese selžou, když dojde k vyčerpání portů. Po zpřístupnění portu budou připojení úspěšná. K této vyčerpání dojde, když se porty 64 000 z IP adresy šíří dynamicky napříč celou řadou back-end instancí. Pokyny ke zmírnění vyčerpání portů SNAT najdete v Průvodci odstraňováním potíží.

Pro připojení TCP bude nástroj pro vyrovnávání zatížení používat pro každou cílovou IP adresu a port jeden port SNAT. Tento Multiuse umožňuje více připojení ke stejné cílové IP adrese se stejným portem SNAT. Tato Multiuse je omezená, pokud není připojení k různým cílovým portům.

V případě připojení UDP využívá nástroj pro vyrovnávání zatížení algoritmus překladu adres (NAT) s omezeným portem , který využívá jeden port SNAT na cílovou IP adresu bez ohledu na cílový port.

Port se znovu používá pro neomezený počet připojení. Port se znovu použije jenom v případě, že cílová IP adresa nebo port je jiný.

Omezení

  • Když je připojení nečinné, protože se neodesílají žádné nové pakety, porty se uvolní po 4 až 120 minutách.
  • Tato prahová hodnota se dá nakonfigurovat prostřednictvím odchozích pravidel.
  • Každá IP adresa poskytuje 64 000 portů, které se dají použít pro SNAT.
  • Každý port se dá použít pro připojení TCP i UDP k cílové IP adrese.
  • Port UDP SNAT je vyžadován, pokud je cílový port jedinečný nebo nikoli. Pro každé připojení UDP k cílové IP adrese se použije jeden port UDP SNAT.
  • Port TCP SNAT lze použít pro více připojení ke stejné cílové IP adrese, pokud jsou cílové porty odlišné.
  • K vyčerpání SNAT dojde v případě, že instance back-endu běží z daných portů SNAT. Nástroj pro vyrovnávání zatížení může mít stále nepoužívané porty SNAT. Pokud použité porty SNAT překročí zadané porty SNAT, nebude možné vytvořit nová odchozí připojení.
  • Fragmentované pakety budou vyřazeny, pokud odchozí není prostřednictvím veřejné IP adresy na úrovni instance v síťovém adaptéru virtuálního počítače.
  • Sekundární konfigurace protokolu IP síťového rozhraní neodchozí komunikace (Pokud k ní není přidružena veřejná IP adresa) prostřednictvím Load Balancer.

Další kroky