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 frontonu publicznego modułu równoważenia obciążenia mogą służyć do zapewnienia łączności wychodzącej z Internetem dla wystąpień 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 posiadanie bezpośredniego adresu do wystąpień 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:
# | Method | Typ alokacji portów | Klasa produkcyjna? | Rating |
---|---|---|---|---|
1 | 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 |
2 | Kojarzenie bramy translatora adresów sieciowych z podsiecią | Dynamiczne, jawne | Tak | Najlepsze |
3 | Przypisywanie publicznego adresu IP do maszyny wirtualnej | Statyczne, jawne | Tak | OK |
100 | Domyślny dostęp wychodzący | Niejawnie | Nie. | Najgorzej |
1. 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 translatora adresów sieciowych (źródłowego tłumaczenia adresów sieciowych) dla publicznego modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Ta konfiguracja umożliwia użycie publicznego adresu IP lub adresów IP modułu równoważenia obciążenia na potrzeby łączności wychodzącej wystąpień zaplecza.
Ta konfiguracja umożliwia:
Maskowanie adresów IP
Upraszczanie list dozwolonych
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 za pomocą „portów na wystąpienie” lub „maksymalnej liczby wystąpień wewnętrznej bazy danych”. Jeśli w wewnętrznej bazie danych znajdują się maszyny wirtualne, zaleca się przydzielenie portów przy użyciu opcji „porty na wystąpienie”, aby zmaksymalizować użycie portów SNAT.
Oblicz porty na wystąpienie w następujący sposób:
Liczba adresów IP frontonu * 64K / liczba wystąpień zaplecza
Jeśli masz zestawy skalowania maszyn wirtualnych w zapleczu, zaleca się przydzielenie portów przez "maksymalną liczbę wystąpień zaplecza". Jeśli do zaplecza zostanie dodanych więcej maszyn wirtualnych niż pozostałe dozwolone porty SNAT, skalowanie w poziomie zestawów skalowania maszyn wirtualnych może zostać zablokowane lub nowe maszyny wirtualne nie otrzymają wystarczających portów SNAT.
Jeśli wiele adresów IP frontonu jest skonfigurowanych przy użyciu reguł ruchu wychodzącego, połączenia wychodzące mogą pochodzić z dowolnego adresu IP frontonu skonfigurowanego do wystąpienia zaplecza. 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.
2. Kojarzenie bramy translatora adresów sieciowych 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 translatora adresów sieciowych jest w pełni zarządzana i wysoce odporna.
Użycie bramy translatora adresów sieciowych jest najlepszą metodą łączności wychodzącej. Brama translatora adresów sieciowych jest wysoce rozszerzalna, niezawodna i nie ma takich samych problemów z wyczerpaniem portów SNAT.
Brama translatora adresów sieciowych ma pierwszeństwo przed innymi metodami łączności wychodzącej, w tym modułem równoważenia obciążenia, publicznymi adresami IP na poziomie wystąpienia i usługą Azure Firewall.
Aby uzyskać więcej informacji na temat usługi Azure NAT Gateway, zobacz Co to jest usługa Azure NAT Gateway.
3. Przypisywanie publicznego adresu IP do maszyny wirtualnej
Stowarzyszenia | Method | 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 powraca do klienta żądającego z publicznego adresu IP maszyny wirtualnej (adres IP poziomu wystąpienia).
Platforma Azure używa publicznego adresu IP przypisanego do konfiguracji adresu IP karty sieciowej wystąpienia dla wszystkich przepływów wychodzących. Wystąpienie ma dostępne wszystkie efemeryczne porty. Nie ma znaczenia, czy maszyna wirtualna jest zrównoważona, czy nie. Ten scenariusz ma pierwszeństwo przed innymi, z wyjątkiem bramy translatora adresów sieciowych.
Publiczny adres IP przypisany do maszyny wirtualnej to relacja 1:1 (a nie 1: wiele) i zaimplementowana jako bezstanowa translator adresów sieciowych 1:1.
4. 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 krotki z pięcioma krotkami, 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 udostępniania miejsca docelowego portowi, na którym można komunikować się i obsługiwać 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 używane porty równoważenia obciążenia lub reguł NAT dla ruchu przychodzącego znajdują się w tym samym bloku ośmiu portów używanych przez inną regułę, 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
Gdy reguły równoważenia obciążenia są wybrane do używania domyślnej alokacji portów lub reguły ruchu wychodzącego są konfigurowane z ustawieniem "Użyj domyślnej liczby portów wychodzących", porty SNAT są domyślnie przydzielane na podstawie rozmiaru puli zaplecza. Zaplecza odbierają liczbę portów zdefiniowanych przez tabelę, na adres IP frontonu, maksymalnie 1024 porty.
Na przykład z 100 maszynami wirtualnymi w puli zaplecza i tylko jednym adresem IP frontonu 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.
Jako reguła kciuka liczba portów SNAT podanych podczas stosowania domyślnej alokacji portów można obliczyć jako: MIN(# domyślnych portów SNAT udostępnianych na podstawie rozmiaru puli * liczba adresów IP frontonu skojarzonych z pulą, 1024)
W poniższej tabeli przedstawiono wstępne alokacje portów SNAT dla pojedynczego adresu IP frontonu w zależności od rozmiaru puli zaplecza:
Rozmiar puli (wystąpienia 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 wiele przeglądarek przechodzących do https://www.microsoft.comusługi , czyli:
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ć skalowane. Wystąpienie zaplecza można przydzielić niewystarczające porty. 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 rozłożonych cienko w wielu wystąpieniach 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 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 wystąpienie zaplecza kończy się z podanych portów SNAT. Moduł równoważenia obciążenia nadal może mieć nieużywane porty SNAT. Jeśli używane porty SNAT wystąpienia zaplecza przekraczają podane porty SNAT, nie może ustanowić nowych połączeń wychodzących.
Pofragmentowane pakiety są porzucane, chyba że wychodzący jest za pośrednictwem publicznego adresu IP na poziomie wystąpienia na karcie sieciowej 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 pomocniczych konfiguracjach protokołu IPv4 dołącz publiczne adresy IP na poziomie wystąpienia lub zamiast tego użyj bramy translatora adresów sieciowych.
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 translatora adresów sieciowych