Używanie źródłowego tłumaczenia adresów sieciowych (SNAT) dla połączeń wychodzących
Niektóre scenariusze wymagają, aby maszyny wirtualne lub wystąpienia obliczeniowe miały łączność wychodzącą z Internetem. Adresy IP publicznego modułu równoważenia obciążenia mogą być używane do zapewnienia łączności wychodzącej z Internetem dla instancji zaplecza. Ta konfiguracja używa źródłowego tłumaczenia adresów sieciowych (SNAT) do tłumaczenia prywatnego adresu IP maszyny wirtualnej na publiczny adres IP modułu równoważenia obciążenia. SNAT mapuje adres IP zaplecza na publiczny adres IP modułu równoważenia obciążenia. SNAT uniemożliwia źródłom zewnętrznym otrzymanie bezpośredniego adresu dostępu do wystąpień serwera zaplecza.
Metody łączności wychodzącej platformy Azure
Następujące metody to najczęściej używane metody platformy Azure do włączania łączności wychodzącej wymienione w kolejności priorytetu, gdy są używane wiele metod:
# | Metoda | Typ alokacji portów | Klasa produkcyjna? | Ocena |
---|---|---|---|---|
1 | Połącz bramę NAT z podsiecią | Dynamiczne, jawne | Tak | Najlepsze |
2 | Przypisywanie publicznego adresu IP do maszyny wirtualnej | Statyczne, jawne | Tak | OK |
3 | Użyj adresów IP frontonu modułu równoważenia obciążenia dla ruchu wychodzącego za pośrednictwem reguł ruchu wychodzącego | Statyczne, jawne | Tak, ale nie na dużą skalę | OK |
4 | Użyj adresów IP warstwy frontowej modułu równoważenia obciążenia dla ruchu wychodzącego bez reguł wyjściowych. | Statyczne, niejawne | Nie. | Najgorzej |
5 | Domyślny dostęp wychodzący | Niejawnie | Nie. | Najgorzej |
1. Powiąż bramę NAT z podsiecią
Usługa Azure NAT Gateway upraszcza łączność internetową tylko dla ruchu wychodzącego dla sieci wirtualnych. Po skonfigurowaniu w podsieci wszystkie połączenia wychodzące używają określonych statycznych publicznych adresów IP. Łączność wychodząca jest możliwa bez modułu równoważenia obciążenia lub publicznych adresów IP bezpośrednio dołączonych do maszyn wirtualnych. Brama NAT jest w pełni zarządzana i wysoko odporna.
Użycie bramy NAT jest najlepszą metodą łączności wychodzącej. Brama NAT jest elastyczna, niezawodna i nie ma problemów z wyczerpaniem portów SNAT.
Bramka NAT ma pierwszeństwo przed innymi metodami łączności wychodzącej, w tym modułem balansu obciążenia, publicznymi adresami IP przypisanymi do instancji i Azure Firewall.
Aby uzyskać więcej informacji na temat usługi Azure NAT Gateway, zobacz Co to jest usługa Azure NAT Gateway. Aby uzyskać szczegółowe informacje na temat działania SNAT z bramą translatora adresów sieciowych, zobacz SNAT z bramą translatora adresów sieciowych.
2. Przypisywanie publicznego adresu IP do maszyny wirtualnej
Stowarzyszenia | Metoda | Protokoły IP |
---|---|---|
Publiczny adres IP na karcie sieciowej maszyny wirtualnej | Funkcja SNAT (źródłowe tłumaczenie adresów sieciowych) nie jest używana. |
TCP (Transmission Control Protocol) UDP (User Datagram Protocol) ICMP (Internet Control Message Protocol) ESP (hermetyzowanie ładunku zabezpieczeń) |
Ruch wraca do klienta wysyłającego żądanie z publicznego adresu IP maszyny wirtualnej (adres IP na poziomie instancji).
Azure używa publicznego adresu IP przypisanego do konfiguracji IP karty sieciowej wystąpienia do wszelkich połączeń wychodzących. Wystąpienie ma dostępne wszystkie tymczasowe porty. Nie ma znaczenia, czy maszyna wirtualna jest obciążona równomiernie, czy nie. Ten scenariusz ma pierwszeństwo przed innymi, z wyjątkiem bramy NAT.
Publiczny adres IP przypisany do maszyny wirtualnej jest relacją 1:1 (a nie 1: wiele) i zaimplementowana jest jako bezstanowa translacja adresów sieciowych 1:1.
3. Użyj adresu IP frontonu modułu równoważenia obciążenia dla ruchu wychodzącego za pośrednictwem reguł ruchu wychodzącego
Reguły ruchu wychodzącego umożliwiają jawne zdefiniowanie źródłowego tłumaczenia adresów sieciowych (SNAT) dla publicznego modułu równoważenia obciążenia w warstwie standardowej SKU. Ta konfiguracja umożliwia korzystanie z publicznego adresu IP lub adresów IP modułu równoważenia obciążenia dla łączności wychodzącej instancji zaplecza.
Ta konfiguracja umożliwia:
Maskowanie adresów IP
Upraszczanie list dopuszczeń
Zmniejsza liczbę zasobów publicznych adresów IP na potrzeby wdrożenia
W przypadku reguł ruchu wychodzącego masz pełną deklaratywną kontrolę nad wychodzącą łącznością internetową. Reguły ruchu wychodzącego umożliwiają skalowanie i dostrajanie tej możliwości do określonych potrzeb za pośrednictwem ręcznej alokacji portów. Ręczne przydzielanie portu SNAT na podstawie rozmiaru puli zaplecza i liczby frontendIPConfigurations może pomóc uniknąć wyczerpania SNAT.
Porty SNAT można przydzielić ręcznie, korzystając z opcji „porty na wystąpienie” lub „maksymalna liczba wystąpień zaplecza”. Jeśli w zapleczu znajdują się maszyny wirtualne, zaleca się przypisanie portów według zasady "porty na wystąpienie", aby zmaksymalizować wykorzystanie portów SNAT.
Oblicz liczbę portów na instancję w następujący sposób:
Liczba adresów IP frontend * 64K / Liczba wystąpień backend
Jeśli masz zestawy skalowania maszyn wirtualnych w zapleczu, zaleca się przydzielanie portów na podstawie "maksymalnej liczby wystąpień zaplecza". Jeśli do zaplecza zostanie dodanych więcej maszyn wirtualnych niż liczba dostępnych portów SNAT, skalowanie w górę zestawów skalowania maszyn wirtualnych może zostać zablokowane, lub nowe maszyny wirtualne nie otrzymają wystarczającej liczby portów SNAT.
Uwaga
Jeśli wiele adresów IP frontonu jest skonfigurowanych przy użyciu reguł ruchu wychodzącego, połączenia wychodzące mogą pochodzić z dowolnego z tych adresów IP przypisanych do instancji backendu. Nie zalecamy tworzenia żadnych zależności, na których można wybrać adres IP frontonu dla połączeń.
Aby uzyskać więcej informacji na temat reguł ruchu wychodzącego, zobacz Reguły ruchu wychodzącego.
4. Użyj adresu IP frontonu modułu równoważenia obciążenia dla ruchu wychodzącego bez reguł ruchu wychodzącego
Ta opcja jest podobna do poprzedniej, z wyjątkiem sytuacji, gdy nie są tworzone żadne reguły wychodzące. W takim przypadku interfejsy zewnętrzne równoważnika obciążenia są nadal używane dla ruchu wychodzącego, ale odbywa się to automatycznie, bez reguł określających, które interfejsy będą używane. Nieużywanie reguł ruchu wychodzącego zmniejsza również skalowalność ruchu wychodzącego, ponieważ niejawna łączność wychodząca ma stałą liczbę portów SNAT na adres IP frontonu, co może prowadzić do wyczerpania portów w scenariuszach o dużym natężeniu ruchu.
5. Domyślny dostęp wychodzący
Na platformie Azure maszyny wirtualne utworzone w sieci wirtualnej bez jawnej zdefiniowanej łączności wychodzącej są przypisane do domyślnego wychodzącego publicznego adresu IP. Ten adres IP umożliwia łączność wychodzącą z zasobów do Internetu. Ten dostęp jest określany jako domyślny dostęp wychodzący. Ta metoda dostępu nie jest zalecana , ponieważ jest niezabezpieczona, a adresy IP mogą ulec zmianie.
Ważne
30 września 2025 r. zostanie wycofany domyślny dostęp wychodzący dla nowych wdrożeń. Więcej informacji znajdziesz w oficjalnym ogłoszeniu. Zaleca się użycie jednej jawnej formy łączności, jak pokazano w opcjach 1–3 powyżej.
Co to są porty SNAT?
Porty służą do generowania unikatowych identyfikatorów używanych do obsługi odrębnych przepływów. Internet używa pięciokrotki, aby zapewnić to rozróżnienie.
Jeśli port jest używany dla połączeń przychodzących, ma odbiornik dla żądań połączeń przychodzących na tym porcie. Tego portu nie można używać w przypadku połączeń wychodzących. Aby ustanowić połączenie wychodzące, port efemeryczny służy do zapewnienia portu docelowego, za pomocą którego można się komunikować i utrzymywać odrębny przepływ ruchu. Gdy te porty efemeryczne są używane dla protokołu SNAT, są nazywane portami SNAT.
Z definicji każdy adres IP ma 65 535 portów. Każdy port może służyć do połączeń przychodzących lub wychodzących dla protokołu TCP (Transmission Control Protocol) i UDP (User Datagram Protocol). Gdy publiczny adres IP zostanie dodany jako adres IP frontonu do modułu równoważenia obciążenia, 64 000 portów kwalifikuje się do korzystania z protokołu SNAT.
Każdy port używany w równoważeniu obciążenia lub regule NAT dla ruchu przychodzącego korzysta z zakresu ośmiu portów z 64 000 dostępnych portów SNAT. To użycie zmniejsza liczbę portów kwalifikujących się do SNAT, jeśli ten sam adres IP frontonu jest używany do łączności wychodzącej. Jeśli porty używane przez reguły równoważenia obciążenia lub reguły NAT dla ruchu przychodzącego znajdują się w tym samym bloku, który składa się z ośmiu portów używanych przez inną regułę, to te reguły nie wymagają dodatkowych portów.
Uwaga
Jeśli musisz nawiązać połączenie z dowolnymi obsługiwanymi usługami PaaS platformy Azure, takimi jak Azure Storage, Azure SQL lub Azure Cosmos DB, możesz użyć usługi Azure Private Link, aby całkowicie uniknąć SNAT. Usługa Azure Private Link wysyła ruch z sieci wirtualnej do usług platformy Azure za pośrednictwem sieci szkieletowej platformy Azure zamiast przez Internet.
Usługa Private Link jest zalecaną opcją dla punktów końcowych usługi w celu uzyskania prywatnego dostępu do usług hostowanych na platformie Azure. Aby uzyskać więcej informacji na temat różnicy między usługą Private Link i punktami końcowymi usługi, zobacz Porównanie prywatnych punktów końcowych i punktów końcowych usługi.
Jak działa domyślna funkcja SNAT?
Gdy maszyna wirtualna tworzy przepływ wychodzący, platforma Azure tłumaczy źródłowy adres IP na efemeryczny adres IP. To tłumaczenie odbywa się za pośrednictwem protokołu SNAT.
W przypadku korzystania z protokołu SNAT bez reguł ruchu wychodzącego za pośrednictwem publicznego modułu równoważenia obciążenia porty SNAT są wstępnie przydzielane zgodnie z opisem w poniższej domyślnej tabeli alokacji portów SNAT:
Domyślna tabela alokacji portów
Po włączeniu domyślnej alokacji portów porty SNAT będą domyślnie przydzielane na podstawie rozmiaru puli zaplecza. Zaplecza odbierają liczbę portów zdefiniowanych przez tabelę, dla każdego adresu IP frontendu, do maksymalnie 1024 portów. Domyślna alokacja portów NIE jest zalecana w przypadku obciążeń produkcyjnych, ponieważ w ten sposób przydziela minimalną liczbę portów do każdego wystąpienia zaplecza i zwiększa ryzyko wyczerpania portów SNAT. Zamiast tego rozważ użycie NAT Gateway lub ręczne przydzielanie portów w regułach ruchu wychodzącego na równoważniku obciążenia.
Istnieje wiele sposobów włączania domyślnej alokacji portów:
- Konfigurowanie reguły równoważenia obciążenia z wartością disableOutboundSnat ustawioną na wartość false lub wybierając domyślną opcję alokacji portów w regule modułu równoważenia obciążenia w witrynie Azure Portal
- Konfigurowanie reguły ruchu wychodzącego, ale ustawienie właściwości allocatedOutboundPorts na 0 lub wybranie opcji "Włącz domyślną alokację portów" w portalu Azure.
Na przykład, ze 100 maszynami wirtualnymi w puli backendowej i tylko jednym adresem IP frontendowym, każda maszyna wirtualna otrzymuje 512 portów. Jeśli dodawany jest drugi adres IP frontonu, każda maszyna wirtualna otrzymuje dodatkowe 512 portów. Oznacza to, że każda maszyna wirtualna jest przydzielana w sumie 1024 portów. W rezultacie dodanie trzeciego adresu IP frontonu nie zwiększy liczby przydzielonych portów SNAT poza 1024 portami.
Zasadniczo, liczbę dostępnych portów SNAT przy domyślnej alokacji portów można obliczyć jako: MIN(liczba domyślnych portów SNAT udostępnianych na podstawie rozmiaru puli * liczba adresów IP frontendowych skojarzonych z pulą, 1024)
W poniższej tabeli przedstawiono wstępną alokację portów SNAT dla pojedynczego adresu IP front-endu w zależności od rozmiaru puli back-endu.
Rozmiar puli (instancje maszyn wirtualnych) | Domyślne porty SNAT |
---|---|
1-50 | 1,024 |
51–100 | 512 |
101–200 | 256 |
201–400 | 128 |
401-800 | 64 |
801-1,000 | 32 |
Wyczerpanie portów
Każde połączenie z tym samym docelowym adresem IP i portem docelowym używa portu SNAT. To połączenie utrzymuje odrębny przepływ ruchu z wystąpienia zaplecza lub klienta do serwera. Ten proces zapewnia serwerowi odrębny port, na którym ma być kierowany ruch. Bez tego procesu maszyna kliencka nie zna przepływu pakietu.
Wyobraź sobie, że masz otwarte wiele przeglądarek prowadzących do https://www.microsoft.com, co oznacza:
Docelowy adres IP = 23.53.254.142
Port docelowy = 443
Protokół = TCP
Bez portów SNAT dla ruchu powrotnego klient nie ma możliwości oddzielenia jednego wyniku zapytania od drugiego.
Połączenia wychodzące mogą być nagle zwiększone. Instancja zaplecza może mieć niewystarczającą liczbę portów. Użyj funkcji ponownego użycia połączenia w aplikacji. Bez ponownego użycia połączenia zwiększa się ryzyko wyczerpania portów SNAT.
Aby uzyskać więcej informacji na temat buforowania połączeń za pomocą usługi aplikacja systemu Azure Service, zobacz Rozwiązywanie problemów z sporadycznymi błędami połączeń wychodzących w usłudze aplikacja systemu Azure
Nowe połączenia wychodzące z docelowym adresem IP kończą się niepowodzeniem, gdy wystąpi wyczerpanie portów. Połączenia kończą się powodzeniem, gdy port stanie się dostępny. To wyczerpanie występuje, gdy 64 000 portów z adresu IP jest nierównomiernie rozłożonych na wielu serwerach zaplecza. Aby uzyskać wskazówki dotyczące ograniczania wyczerpania portów SNAT, zobacz przewodnik rozwiązywania problemów.
Ponowne użycie portu
W przypadku połączeń TCP moduł równoważenia obciążenia używa jednego portu SNAT dla każdego docelowego adresu IP i portu. W przypadku połączeń z tym samym docelowym adresem IP można użyć pojedynczego portu SNAT, o ile port docelowy się różni. Ponowne użycie nie jest możliwe, gdy istnieje już połączenie z tym samym docelowym adresem IP i portem.
W przypadku połączeń UDP moduł równoważenia obciążenia używa algorytmu NAT z ograniczeniami portów, który zużywa jeden port SNAT na docelowy adres IP, niezależnie od portu docelowego.
Pojedyncze porty mogą być ponownie używane w przypadku nieograniczonej liczby połączeń, gdy ponowne użycie jest dozwolone (gdy docelowy adres IP lub port jest inny).
W przykładzie w poniższej tabeli wystąpienie zaplecza z prywatnym adresem IP 10.0.0.1 wykonuje połączenia TCP z docelowymi adresami IP 23.53.254.142 i 26.108.254.155, podczas gdy moduł równoważenia obciążenia jest skonfigurowany z adresem IP frontonu 192.0.2.0. Ponieważ docelowe adresy IP są różne, ten sam port SNAT może być ponownie używany dla wielu połączeń.
Flow | Krotka źródłowa | Krotka źródłowa po zastosowaniu SNAT | Krotka docelowa |
---|---|---|---|
1 | 10.0.0.1:80 | 192.0.2.0:1 | 23.53.254.142:80 |
2 | 10.0.0.1:80 | 192.0.2.0:1 | 26.108.254.155:80 |
Ograniczenia
Gdy połączenie jest bezczynne bez wysyłania nowych pakietów, porty zostaną zwolnione po 4–120 minutach.
Ten próg można skonfigurować za pośrednictwem reguł ruchu wychodzącego.
Każdy adres IP zawiera 64 000 portów, których można używać dla protokołu SNAT.
Każdy port może być używany zarówno dla połączeń TCP, jak i UDP z docelowym adresem IP
Port SNAT protokołu UDP jest wymagany niezależnie od tego, czy port docelowy jest unikatowy, czy nie. Dla każdego połączenia UDP z docelowym adresem IP jest używany jeden port UDP SNAT.
Port SNAT TCP może służyć do wielu połączeń z tym samym docelowym adresem IP, pod warunkiem że porty docelowe są inne.
Wyczerpanie SNAT występuje, gdy backendowa instancja wykorzysta przydzielone porty SNAT. Moduł równoważenia obciążenia nadal może mieć nieużywane porty SNAT. Jeśli liczba używanych portów SNAT instancji zaplecza przekracza przyznane porty SNAT, instancja nie może ustanowić nowych połączeń wychodzących.
Pofragmentowane pakiety są porzucane, chyba że ruch wychodzący korzysta z publicznego adresu IP na poziomie instancji na interfejsie sieciowym maszyny wirtualnej.
Pomocnicze konfiguracje protokołu IPv4 interfejsu sieciowego nie są obsługiwane w przypadku reguł ruchu wychodzącego. W przypadku łączności wychodzącej w konfiguracjach dodatkowych adresów IPv4 dołącz publiczne adresy IP na poziomie instancji lub zamiast tego użyj bramy NAT Gateway.
Następne kroki
- Rozwiązywanie problemów z błędami połączeń wychodzących z powodu wyczerpania protokołu SNAT
- Przejrzyj metryki SNAT i zapoznaj się z prawidłowym sposobem filtrowania, dzielenia i wyświetlania ich.
- Dowiedz się, jak przeprowadzić migrację istniejącej metody łączności wychodzącej do bramy NAT