A forrás hálózati címfordítás (SNAT) használata a kimenő kapcsolatokhozUsing Source Network Address Translation (SNAT) for outbound connections

Az Azure nyilvános terheléselosztó előtérbeli IP-címei használhatók a háttérbeli példányok számára az internet felé irányuló kimenő kapcsolat biztosításához.The frontend IPs of an Azure public load balancer can be used to provide outbound connectivity to the internet for backend instances. Ez a konfiguráció a forrás hálózati címfordítást (SNAT) használja.This configuration uses source network address translation (SNAT). A SNAT újraírja a háttér IP-címét a terheléselosztó nyilvános IP-címére.SNAT rewrites the IP address of the backend to the public IP address of your load balancer.

A SNAT lehetővé teszi a háttér -példány IP-címének maszkolását .SNAT enables IP masquerading of the backend instance. Ez a maszkolás megakadályozza, hogy a külső források közvetlenül a háttérbeli példányokhoz legyenek letiltva.This masquerading prevents outside sources from having a direct address to the backend instances. A háttérbeli példányok között megosztott IP-cím csökkenti a statikus nyilvános IP-címek költségeit.An IP address shared between backend instances reduces the cost of static public IPs. Egy ismert IP-cím olyan forgatókönyveket támogat, mint például az IP-engedélyezési egyszerűsítése az ismert nyilvános IP-címekről érkező forgalom esetében.A known IP address supports scenarios such as simplifying IP allowlist with traffic from known public IPs.

Megjegyzés

Azon alkalmazások esetében, amelyekben nagy számú kimenő kapcsolat vagy nagyvállalati ügyfél használatára van szükség egy adott virtuális hálózatról, Virtual Network NAT a javasolt megoldás.For applications that require large numbers of outbound connections or enterprise customers who require a single set of IPs to be used from a given virtual network, Virtual Network NAT is the recommended solution. A dinamikus foglalás lehetővé teszi az egyszerű konfigurálást és a SNAT-portok leghatékonyabb használatát az egyes IP-címekről.It's dynamic allocation allows for simple configuration and the most efficient use of SNAT ports from each IP address. Lehetővé teszi, hogy a virtuális hálózat összes erőforrása olyan IP-címeket osszon meg, amelyek nem szükségesek a terheléselosztó megosztásához.It allows all resources in the virtual network to share a set of IP addresses without a need for them to share a load balancer.

Fontos

Még a kimenő SNAT konfigurálása nélkül is, az azonos régióban található Azure Storage-fiókok továbbra is elérhetők lesznek, és a háttérbeli erőforrások továbbra is hozzáférhetnek a Microsoft-szolgáltatásokhoz, például Windows-frissítésekhez.Even without outbound SNAT configured, Azure storage accounts within the same region will still be accessible and backend resources will still have access to Microsoft services such as Windows Updates.

Megjegyzés

Ez a cikk csak Azure Resource Manager központi telepítéseket tárgyalja.This article covers Azure Resource Manager deployments only. Tekintse át az Azure-beli klasszikus üzembe helyezési forgatókönyvek kimenő kapcsolatait (klasszikus) .Review Outbound connections (Classic) for all Classic deployment scenarios in Azure.

Előtéri IP-cím megosztása a háttérbeli erőforrások közöttSharing frontend IP address across backend resources

Ha egy terheléselosztó háttér-erőforrásai nem rendelkeznek ILPIP-címmel, a nyilvános terheléselosztó előtérbeli IP-címén keresztül hozhatnak létre kimenő kapcsolatokat.If the backend resources of a load balancer don't have instance-level public IP (ILPIP) addresses, they establish outbound connectivity via the frontend IP of the public load balancer. A portok a különböző folyamatok fenntartásához használt egyedi azonosítók előállítására szolgálnak.Ports are used to generate unique identifiers used to maintain distinct flows. Az Internet egy öt rekord használatával biztosítja ezt a különbséget.The internet uses a five-tuple to provide this distinction.

Az öt rekord a következőkből áll:The five-tuple consists of:

  • Cél IP-címeDestination IP
  • CélportDestination port
  • Forrás IP-címeSource IP
  • A forrás portszáma és a protokoll a különbségtétel biztosításához.Source port and protocol to provide this distinction.

Ha a bejövő kapcsolatokhoz portot használ, a porton bejövő csatlakozási kérelmek figyelője van.If a port is used for inbound connections, it has a listener for inbound connection requests on that port. Ez a port nem használható kimenő kapcsolatokhoz.That port can't be used for outbound connections. A kimenő kapcsolatok létrehozásához egy ideiglenes portot kell használni, amely egy olyan portot biztosít a célhelynek, amelyen keresztül kommunikálni és karbantartani lehet a különböző forgalmi folyamatokat.To establish an outbound connection, an ephemeral port is used to provide the destination with a port on which to communicate and maintain a distinct traffic flow. Ha ezek az ideiglenes portok használatban vannak a SNAT, a rendszer a SNAT-portokat hívja megWhen these ephemeral ports are used for SNAT, they're called SNAT ports

Definíció szerint minden IP-címnek 65 535-as portja van.By definition, every IP address has 65,535 ports. Minden port használható a TCP (Transmission Control Protocol) és az UDP (User Datagram Protocol) bejövő vagy kimenő kapcsolataihoz.Each port can either be used for inbound or outbound connections for TCP(Transmission Control Protocol) and UDP(User Datagram Protocol).

Ha nyilvános IP-címet adnak hozzá a betöltési IP-címhez egy terheléselosztó számára, az Azure 64 000-es portot biztosít, amely jogosult a SNAT.When a public IP address is added as a frontend IP to a load balancer, Azure gives 64,000 ports that are eligible for SNAT.

Megjegyzés

Az egyes terheléselosztási vagy bejövő NAT-szabályokhoz használt portok a 64 000-es portokból származó nyolc portból állnak, így csökkentve a SNAT jogosult portok számát.Each port used for a load-balancing or inbound NAT rule will consume a range of eight ports from these 64,000 ports, reducing the number of ports eligible for SNAT. Ha egy terheléselosztási vagy NAT-szabály ugyanabban a nyolc tartományban van, mint egy másik, akkor nem fog további portokat használni.If a load-balancing or nat rule is in the same range of eight as another it will consume no additional ports.

A kimenő és a terheléselosztási szabályok révén ezek a SNAT-portok a háttérbeli példányok számára terjeszthetők, így a terheléselosztó nyilvános IP-címei megoszthatók a kimenő kapcsolatok számára.Through outbound rules and load-balancing rules, these SNAT ports can be distributed to backend instances to enable them to share the public IPs of the load balancer for outbound connections.

Ha a lenti 2. forgatókönyv konfigurálva van, az egyes backend-példányokhoz tartozó gazdagép a kimenő kapcsolat részét képező csomagokat SNAT.When scenario 2 below is configured, the host for each backend instance will SNAT packets that are part of an outbound connection.

Ha a SNAT egy háttérbeli példány kimenő kapcsolatain végez, a gazdagép átírja a forrás IP-címet az egyik előtérbeli IP-címhez.When doing SNAT on an outbound connection from a backend instance, the host rewrites the source IP to one of the frontend IPs.

Az egyedi folyamatok fenntartása érdekében a gazdagép átírja az egyes kimenő csomagok forrás portját egy SNAT-portra a háttér-példányon.To maintain unique flows, the host rewrites the source port of each outbound packet to a SNAT port on the backend instance.

A kimenő kapcsolatok viselkedése különböző forgatókönyvek eseténOutbound connection behavior for different scenarios

  • A virtuális gép nyilvános IP-címmel rendelkezik.Virtual machine with public IP.
  • Virtuális gép nyilvános IP-cím nélkül.Virtual machine without public IP.
  • Virtuális gép nyilvános IP-cím nélkül, standard Load Balancer nélkül.Virtual machine without public IP and without standard load balancer.

1. forgatókönyv: virtuális gép nyilvános IP-címmelScenario 1: Virtual machine with public IP

SzövetségekAssociations MetódusMethod IP-protokollokIP protocols
Nyilvános Load Balancer vagy önállóPublic load balancer or stand-alone SNAT (forrás hálózati címfordítás)SNAT (Source Network Address Translation)
nincs használatban.not used.
TCP (Transmission Control Protocol)TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)UDP (User Datagram Protocol)
ICMP (Internet Control Message Protocol)ICMP (Internet Control Message Protocol)
ESP (biztonsági tartalom beágyazása)ESP (Encapsulating Security Payload)

LeírásDescription

Az Azure a példány hálózati adapterének IP-konfigurációjához hozzárendelt nyilvános IP-címet használja az összes kimenő folyamathoz.Azure uses the public IP assigned to the IP configuration of the instance's NIC for all outbound flows. A példányhoz minden elérhető ideiglenes port tartozik.The instance has all ephemeral ports available. Nem számít, hogy a virtuális gép terheléselosztás alatt áll-e.It doesn't matter whether the VM is load balanced or not. Ez a forgatókönyv elsőbbséget élvez a többiekkel szemben.This scenario takes precedence over the others.

Egy virtuális géphez hozzárendelt nyilvános IP-cím 1:1-kapcsolat (nem 1: sok), és állapot nélküli 1:1 NAT-ként lett megvalósítva.A public IP assigned to a VM is a 1:1 relationship (rather than 1: many) and implemented as a stateless 1:1 NAT.

2. forgatókönyv: virtuális gép nyilvános IP-cím nélkül és standard nyilvános Load Balancer mögöttScenario 2: Virtual machine without public IP and behind Standard public Load Balancer

SzövetségekAssociations MetódusMethod IP-protokollokIP protocols
Standard nyilvános Load BalancerStandard public load balancer A terheléselosztó felületi IP-címeinek használata a SNAT.Use of load balancer frontend IPs for SNAT. TCPTCP
UDPUDP

LeírásDescription

A terheléselosztó erőforrás egy kimenő szabállyal vagy egy terheléselosztási szabállyal van konfigurálva, amely engedélyezi a SNAT.The load balancer resource is configured with an outbound rule or a load-balancing rule that enables SNAT. Ez a szabály a nyilvános IP-frontend és a háttér-készlet közötti kapcsolat létrehozására szolgál.This rule is used to create a link between the public IP frontend with the backend pool.

Ha nem hajtja végre ezt a szabályt, a viselkedés a 3. forgatókönyvben leírtak szerint történik.If you don't complete this rule configuration, the behavior is as described in scenario 3.

Az állapot-mintavétel sikerességéhez nincs szükség figyelőhöz tartozó szabályra.A rule with a listener isn't required for the health probe to succeed.

Amikor egy virtuális gép létrehoz egy kimenő folyamatot, az Azure lefordítja a forrás IP-címet a nyilvános terheléselosztó előtérbeli felületének nyilvános IP-címére.When a VM creates an outbound flow, Azure translates the source IP address to the public IP address of the public load balancer frontend. Ezt a fordítást a SNAT-on keresztül teheti meg.This translation is done via SNAT.

A terheléselosztó nyilvános IP-címének ideiglenes portjai a virtuális gép által kezdeményezett egyes folyamatok megkülönböztetésére szolgálnak.Ephemeral ports of the load balancer frontend public IP address are used to distinguish individual flows originated by the VM. A SNAT dinamikusan használja az előlefoglalt ideiglenes portokat a kimenő folyamatok létrehozásakor.SNAT dynamically uses preallocated ephemeral ports when outbound flows are created.

Ebben a kontextusban a SNAT használt ideiglenes portok neve SNAT-portok.In this context, the ephemeral ports used for SNAT are called SNAT ports. Erősen ajánlott, hogy egy Kimenő szabály explicit módon legyen konfigurálva.It's highly recommended that an outbound rule is explicitly configured. Ha az alapértelmezett SNAT egy terheléselosztási szabályon keresztül használja, az SNAT-portok előre le vannak foglalva az alapértelmezett SNAT-portok kiosztási táblájábanleírtak szerint.If using default SNAT through a load-balancing rule, SNAT ports are pre-allocated as described in the Default SNAT ports allocation table.

Megjegyzés

Az Azure Virtual Network NAT a terheléselosztó szükségessége nélkül biztosíthatja a kimenő kapcsolatot a virtuális gépek számára.Azure Virtual Network NAT can provide outbound connectivity for virtual machines without the need for a load balancer. További információ: Mi az az Azure Virtual Network NAT? .See What is Azure Virtual Network NAT? for more information.

3. forgatókönyv: a virtuális gép nyilvános IP-cím nélküli és a szabványos belső Load Balancer mögöttScenario 3: Virtual machine without public IP and behind Standard internal Load Balancer

SzövetségekAssociations MetódusMethod IP-protokollokIP protocols
Standard belső terheléselosztóStandard internal load balancer Nincs internetkapcsolat.No internet connectivity. NincsenekNone

LeírásDescription

Standard belső terheléselosztó használata esetén a SNAT nem használ ideiglenes IP-címeket.When using a Standard internal load balancer, there isn't use of ephemeral IP addresses for SNAT. Ez a funkció alapértelmezés szerint támogatja a biztonságot.This feature supports security by default. Ez a funkció biztosítja, hogy az erőforrások által használt összes IP-cím konfigurálható legyen, és lefoglalható legyen.This feature ensures all IP addresses used by resources are configurable and can be reserved.

Ha standard belső terheléselosztó használata esetén szeretné elérni az internet felé irányuló kimenő kapcsolatot, állítson be egy példány-szintű nyilvános IP-címet az 1. forgatókönyvviselkedésének követéséhez.To achieve outbound connectivity to the internet when using a Standard internal load balancer, configure an instance level public IP address to follow the behavior in scenario 1.

Egy másik lehetőség, hogy hozzáadja a háttérbeli példányokat egy standard nyilvános Load Balancerhez egy konfigurált kimenő szabállyal.Another option is to add the backend instances to a Standard public load balancer with an outbound rule configured. A belső terheléselosztáshoz a háttérbeli példányok egy belső terheléselosztó számára lesznek hozzáadva.The backend instances are added to an internal load balancer for internal load balancing. Ez a központi telepítés a 2. forgatókönyvviselkedését követi.This deployment follows the behavior in scenario 2.

Megjegyzés

Az Azure Virtual Network NAT a terheléselosztó szükségessége nélkül biztosíthatja a kimenő kapcsolatot a virtuális gépek számára.Azure Virtual Network NAT can provide outbound connectivity for virtual machines without the need for a load balancer. További információ: Mi az az Azure Virtual Network NAT? .See What is Azure Virtual Network NAT? for more information.

4. forgatókönyv: nyilvános IP nélküli virtuális gép és az alapszintű Load Balancer mögöttScenario 4: Virtual machine without public IP and behind Basic Load Balancer

SzövetségekAssociations MetódusMethod IP-protokollokIP protocols
NincsenekNone
Alapszintű Load BalancerBasic load balancer
SNAT a példány-szintű dinamikus IP-címmelSNAT with instance-level dynamic IP address TCPTCP
UDPUDP

LeírásDescription

Amikor a virtuális gép létrehoz egy kimenő folyamatot, az Azure lefordítja a forrás IP-címet egy dinamikusan adott nyilvános forrás IP-címére.When the VM creates an outbound flow, Azure translates the source IP address to a dynamically given public source IP address. Ez a nyilvános IP-cím nem konfigurálható , és nem foglalható le.This public IP address isn't configurable and can't be reserved. Ez a cím nem számít az előfizetés nyilvános IP-erőforrásának korlátja alapján.This address doesn't count against the subscription's public IP resource limit.

A nyilvános IP-cím fel lesz szabadítva, és új nyilvános IP-címet igényel, ha újra telepíti a következőket:The public IP address will be released and a new public IP requested if you redeploy the:

  • Virtuális gépVirtual Machine
  • Rendelkezésre állási csoportAvailability set
  • Virtuálisgép-méretezési csoportVirtual machine scale set

Ne használja ezt a forgatókönyvet az IP-címek engedélyezési való hozzáadásához.Don't use this scenario for adding IPs to an allowlist. Használja az 1. vagy a 2. forgatókönyvet, ahol explicit módon deklarálja a kimenő viselkedést.Use scenario 1 or 2 where you explicitly declare outbound behavior. Az SNAT -portok az alapértelmezett SNAT-portok kiosztási táblájábanleírt módon vannak lefoglalva.SNAT ports are preallocated as described in the Default SNAT ports allocation table.

Kimerített portokExhausting ports

A célként megadott IP-címhez és célporthoz való minden kapcsolódás SNAT-portot fog használni.Every connection to the same destination IP and destination port will use a SNAT port. Ez a kapcsolódás külön forgalmat tart fenn a háttér-példány vagy az ügyfél között egy kiszolgálóra.This connection maintains a distinct traffic flow from the backend instance or client to a server. Ez a folyamat egy különálló portot ad a kiszolgálónak, amely a forgalom kezelésére szolgál.This process gives the server a distinct port on which to address traffic. A folyamat nélkül az ügyfélszámítógép nem ismeri a csomag részét képező adatfolyamot.Without this process, the client machine is unaware of which flow a packet is part of.

Képzelje el, hogy több böngésző https://www.microsoft.com is van, ami a következő:Imagine having multiple browsers going to https://www.microsoft.com, which is:

  • Cél IP-címe = 23.53.254.142Destination IP = 23.53.254.142
  • Célport = 443Destination Port = 443
  • Protokoll = TCPProtocol = TCP

Különböző célport nélkül a visszaadott forgalomhoz (a kapcsolat létrehozásához használt SNAT-port) az ügyfélnek nincs lehetősége arra, hogy egy lekérdezési eredményt válasszon egy másikból.Without different destination ports for the return traffic (the SNAT port used to establish the connection), the client will have no way to separate one query result from another.

A kimenő kapcsolatok feltörtek.Outbound connections can burst. A háttér-példányok nem rendelkeznek elegendő porttal.A backend instance can be allocated insufficient ports. Ha nincs engedélyezve a kapcsolatok újrafelhasználása , a SNAT- portok kimerülésének kockázata megnő.Without connection reuse enabled, the risk of SNAT port exhaustion is increased.

A célként megadott IP-címhez tartozó új kimenő kapcsolatok sikertelenek lesznek, ha a portok kimerülése történik.New outbound connections to a destination IP will fail when port exhaustion occurs. Ha egy port elérhetővé válik, a kapcsolatok sikeresek lesznek.Connections will succeed when a port becomes available. Ez a kimerültség akkor fordul elő, ha az IP-címről érkező 64 000-portok a különböző háttérbeli példányok között vékonyra vannak osztva.This exhaustion occurs when the 64,000 ports from an IP address are spread thin across many backend instances. A SNAT-portok kimerülésének mérséklésével kapcsolatos útmutatásért lásd a hibaelhárítási útmutatót.For guidance on mitigation of SNAT port exhaustion, see the troubleshooting guide.

A TCP-kapcsolatok esetében a terheléselosztó egyetlen SNAT-portot fog használni minden cél IP-címhez és porthoz.For TCP connections, the load balancer will use a single SNAT port for every destination IP and port. Ez a multiuse több kapcsolatot engedélyez ugyanahhoz a cél IP-címhez ugyanahhoz a SNAT-porthoz.This multiuse enables multiple connections to the same destination IP with the same SNAT port. Ez a multiuse korlátozott, ha a kapcsolódás nem különböző célport.This multiuse is limited if the connection isn't to different destination ports.

Az UDP-kapcsolatok esetében a terheléselosztó egy portra korlátozott kúp NAT -algoritmust használ, amely a célként megadott IP-címenként egy SNAT portot használ.For UDP connections, the load balancer uses a port-restricted cone NAT algorithm, which consumes one SNAT port per destination IP whatever the destination port.

A portok korlátlan számú kapcsolatra vannak újra felhasználva.A port is reused for an unlimited number of connections. A portot csak akkor használja a rendszer, ha a célként megadott IP-cím vagy port eltér.The port is only reused if the destination IP or port is different.

Alapértelmezett portok kiosztásaDefault port allocation

A terheléselosztó előtér-IP-címéhez hozzárendelt nyilvános IP-címek 64 000 SNAT-portot kapnak a háttérbeli készlet tagjai számára.Each public IP assigned as a frontend IP of your load balancer is given 64,000 SNAT ports for its backend pool members. A portok nem oszthatók meg a háttérbeli készlet tagjaival.Ports can't be shared with backend pool members. Egy SNAT-portot csak egyetlen backend-példány használhat, így biztosítva, hogy a visszatérési csomagok megfelelően legyenek irányítva.A range of SNAT ports can only be used by a single backend instance to ensure return packets are routed correctly.

Ajánlott explicit kimenő szabályt használni a SNAT-portok kiosztásának konfigurálásához.It's recommended you use an explicit outbound rule to configure SNAT port allocation. Ez a szabály maximalizálja azon SNAT-portok számát, amelyek esetében az egyes backend-példányok elérhetők a kimenő kapcsolatok számára.This rule will maximize the number of SNAT ports each backend instance has available for outbound connections.

Ha a kimenő SNAT automatikus kiosztását egy terheléselosztási szabályon keresztül használja, a foglalási tábla meghatározza a portok kiosztását.Should you use the automatic allocation of outbound SNAT through a load-balancing rule, the allocation table will define your port allocation.

A következő táblázat a SNAT portok előfoglalásait mutatja be a háttérbeli készlet méreteihez:The following table shows the SNAT port preallocations for tiers of backend pool sizes:

Készlet mérete (VM-példányok)Pool size (VM instances) Az előlefoglalt SNAT-portok száma IP-konfiguráció alapjánPreallocated SNAT ports per IP configuration
1-501-50 1 0241,024
51-10051-100 512512
101-200101-200 256256
201-400201-400 128128
401-800401-800 6464
801-1000801-1,000 3232

Megjegyzés

Ha a háttér-készlet legfeljebb 10 mérettel rendelkezik, az egyes példányok esetében a 64000/10 = 6 400 portok is rendelkezhetnek, ha explicit kimenő szabályt ad meg.If you have a backend pool with a max size of 10, each instance can have 64,000/10 = 6,400 ports if you define an explicit outbound rule. A fenti táblázatnak megfelelően a rendszer csak akkor 1 024, ha az automatikus kiosztást választja.According to the above table each will only have 1,024 if you choose automatic allocation.

Kimenő szabályok és Virtual Network NATOutbound rules and Virtual Network NAT

Azure Load Balancer a kimenő szabályok és a Virtual Network NAT a virtuális hálózatból való kilépéshez elérhető lehetőségek.Azure Load Balancer outbound rules and Virtual Network NAT are options available for egress from a virtual network.

További információ a kimenő szabályokról: Kimenő szabályok.For more information about outbound rules, see Outbound rules.

További információ az Azure Virtual Network NAT-ról: Mi az az azure Virtual Network NAT.For more information about Azure Virtual Network NAT, see What is Azure Virtual Network NAT.

KorlátozásokConstraints

  • Ha a kapcsolatok nem kapnak új csomagokat, a portok 4 – 120 percet követően lesznek felszabadítva.When a connection is idle with no new packets being sent, the ports will be released after 4 – 120 minutes.
  • Ez a küszöbérték a kimenő szabályok használatával konfigurálható.This threshold can be configured via outbound rules.
  • Minden IP-cím 64 000 portot biztosít, amely a SNAT használható.Each IP address provides 64,000 ports that can be used for SNAT.
  • Minden port használható TCP-és UDP-kapcsolatokhoz egy cél IP-címhez isEach port can be used for both TCP and UDP connections to a destination IP address
  • Egy UDP SNAT portra van szükség, hogy a célport egyedi-e, vagy sem.A UDP SNAT port is needed whether the destination port is unique or not. A cél IP-címhez minden UDP-kapcsolatban egy UDP-SNAT portot használ a rendszer.For every UDP connection to a destination IP, one UDP SNAT port is used.
  • A TCP SNAT-portok több kapcsolathoz is használhatók ugyanahhoz a cél IP-címhez, ha a célként megadott portok eltérőek.A TCP SNAT port can be used for multiple connections to the same destination IP provided the destination ports are different.
  • A SNAT kimerültség akkor következik be, amikor egy háttérbeli példány kifogyott a megadott SNAT-portok közül.SNAT exhaustion occurs when a backend instance runs out of given SNAT Ports. A terheléselosztó továbbra is használhat fel nem használt SNAT-portokat.A load balancer can still have unused SNAT ports. Ha a háttérbeli példány SNAT-portjai meghaladják a megadott SNAT-portokat, nem fog tudni új kimenő kapcsolatokat létesíteni.If a backend instance’s used SNAT ports exceed its given SNAT ports, it will be unable to establish new outbound connections.

Következő lépésekNext steps