Используйте трансляцию сетевых адресов источника (SNAT) для исходящих подключений.

Для некоторых сценариев требуется, чтобы виртуальные машины или вычислительные экземпляры имели исходящее подключение к Интернету. IP-адреса фронтенда общедоступной подсистемы балансировки нагрузки можно использовать для обеспечения исходящего подключения к интернету для экземпляров бэкенда. Эта конфигурация использует преобразование сетевых адресов источника (SNAT) для перевода частного IP-адреса виртуальной машины в общедоступный IP-адрес подсистемы балансировки нагрузки. SNAT сопоставляет IP-адрес серверной части с общедоступным IP-адресом подсистемы балансировки нагрузки. SNAT предотвращает прямой доступ внешним источникам к backend экземплярам.

Методы исходящего подключения Azure

Ниже перечислены наиболее часто используемые методы Azure для включения исходящего подключения, перечисленные в порядке приоритета при использовании нескольких методов:

# Метод Тип выделения портов Промышленного уровня? Рейтинг
1 Связывание шлюза NAT с подсетью Динамический, явный Yes С уважением
2 Назначение общедоступного IP-адреса виртуальной машине Статический, явный Yes OK
3 Использование интерфейсных IP-адресов подсистемы балансировки нагрузки для исходящего трафика с помощью правил исходящего трафика Статический, явный Да, но не в масштабе OK
4 Использование внешних IP-адресов подсистемы балансировки нагрузки для исходящего трафика без правил исходящего трафика Статический, неявный Нет Худший
5 Исходящий доступ по умолчанию Неявный Нет Худший

Диаграмма вариантов исходящих соединений Azure.

1. Связывание шлюза NAT с подсетью

Схема шлюза NAT и общедоступной подсистемы балансировки нагрузки.

Azure NAT Gateway упрощает исходящее подключение к Интернету для виртуальных сетей. При настройке подсети все исходящие подключения используют указанные статические общедоступные IP-адреса. Исходящее подключение возможно без подсистемы балансировки нагрузки или общедоступных IP-адресов, непосредственно подключенных к виртуальным машинам. Шлюз NAT полностью управляемый и высоко устойчивый.

Использование шлюза NAT — это лучший метод для исходящего подключения. Шлюз NAT является высоко расширяемым, надежным и не имеет одинаковых проблем с исчерпанием портов SNAT.

Шлюз NAT имеет приоритет над другими методами исходящего подключения, включая подсистему балансировки нагрузки, общедоступные IP-адреса уровня экземпляра и Брандмауэр Azure.

Дополнительные сведения об Azure NAT Gateway см. в разделе Что такое Azure NAT Gateway. Дополнительные сведения о том, как работает SNAT с шлюзом NAT, см. в статье SNAT с шлюзом NAT.

2. Назначение общедоступного IP-адреса виртуальной машине

Схема виртуальных машин с общедоступными IP-адресами уровня экземпляра.

Associations Метод IP-протоколы
Общедоступный IP-адрес сетевой карты виртуальной машины SNAT (Source Network Address Translation - Преобразование исходных сетевых адресов)
не используется.
Протокол TCP (протокол управления передачей)
UDP (протокол дейтаграмм пользователя)
ICMP (протокол сообщений управления интернетом)
ESP (инкапсулирование полезных данных безопасности)

Трафик возвращается клиенту запроса с общедоступного IP-адреса виртуальной машины (IP-адрес уровня экземпляра).

Azure использует общедоступный IP-адрес, назначенный IP-конфигурации сетевого интерфейса экземпляра для всего исходящего трафика. Экземпляр имеет все эфемерные порты. Не имеет значения, находится ли виртуальная машина под балансировкой нагрузки или нет. Этот сценарий имеет приоритет над другими, за исключением шлюза NAT.

Общедоступный IP-адрес, назначенный виртуальной машине, имеет соотношение 1:1 (вместо 1: много) и реализован как статический NAT 1:1.

3. Используйте внешний IP-адрес подсистемы балансировки нагрузки для исходящего трафика через правила исходящего трафика.

Схема общедоступной подсистемы балансировки нагрузки с правилами исходящего трафика.

Правила исходящего трафика позволяют явно определять SNAT (преобразование исходных сетевых адресов) для стандартного общедоступного балансировщика нагрузки SKU. Эта конфигурация позволяет использовать общедоступный IP-адрес или IP-адреса вашего балансировщика нагрузки для исходящих подключений экземпляров серверов в бекенде.

Эта конфигурация включает следующее:

  • Маскирование IP-адресов

  • Упрощение списков разрешений

  • Сокращает количество ресурсов общедоступного IP-адреса для развертывания

При использовании правил исходящего трафика у вас есть полный декларативный контроль над исходящим подключением к Интернету. Правила исходящего трафика позволяют масштабировать и настраивать эту возможность с учетом конкретных потребностей с помощью выделения портов вручную. Выделение порта SNAT вручную на основе размера внутреннего пула и количества интерфейсных конфигураций может помочь избежать нехватки SNAT.

Вы можете вручную выделить порты SNAT, либо указывая "количество портов на экземпляр", либо "максимальное число экземпляров бэкэнда". Если у вас есть виртуальные машины в бэкэнде, рекомендуется выделять порты по количеству портов на экземпляр, чтобы максимизировать использование портов SNAT.

Определите количество портов на один экземпляр следующим образом:

Количество интерфейсных IP-адресов * 64K / Число внутренних экземпляров

Если у вас в бэкенде есть Масштабируемые наборы виртуальных машин, рекомендуется выделять порты по "максимальному количеству экземпляров в бэкенде". Если в серверную часть добавляются больше виртуальных машин, чем разрешены остальные порты SNAT, масштабирование Масштабируемые наборы виртуальных машин может быть заблокировано, или новые виртуальные машины не получат достаточных портов SNAT.

Примечание

При настройке нескольких интерфейсных IP-адресов с помощью правил исходящего трафика исходящие подключения могут поступать из любого из интерфейсных IP-адресов, настроенных для внутреннего экземпляра. Мы не рекомендуем создавать зависимости, от которых можно выбрать внешний IP-адрес для подключений.

Дополнительные сведения о правилах исходящего трафика см. в разделе "Правила исходящего трафика".

4. Используйте фронтенд IP-адрес(а) балансировщика нагрузки для исходящего трафика без правил на исходящий трафик.

Этот параметр аналогичен предыдущему, за исключением случаев, когда правила исходящего трафика не создаются. В этом случае интерфейсные интерфейсы подсистемы балансировки нагрузки по-прежнему используются для исходящего трафика, но это делается неявно без правил, определяющих, какой интерфейс будет использоваться. Не используя правила исходящего трафика, также уменьшает масштабируемость исходящего трафика, так как неявное исходящее подключение имеет фиксированное количество портов SNAT на внешний IP-адрес, что может привести к исчерпанию портов в сценариях с высоким трафиком.

5. Исходящий доступ по умолчанию

Схема исходящего доступа по умолчанию.

В Azure виртуальные машины, созданные в виртуальной сети без явного исходящего подключения, назначаются исходящему общедоступному IP-адресу по умолчанию. Этот IP-адрес обеспечивает исходящее подключение из ресурсов к Интернету. Этот доступ называется исходящим доступом по умолчанию. Этот метод доступа не рекомендуется , так как он незащищен, и IP-адреса подлежат изменению.

Важно

31 марта 2026 г. новые виртуальные сети по умолчанию используют частные подсети. Дополнительные сведения см. в официальном объявлении. Используйте одну из явных форм подключения, как показано в параметрах 1–3 выше.

Что такое порты SNAT?

Порты создают уникальные идентификаторы, поддерживающие различные потоки. Интернет использует пятеричный кортеж, чтобы обеспечить это различие.

Если вы используете порт для входящих подключений, он имеет прослушиватель для входящих запросов на подключение на этом порту. Этот порт нельзя использовать для исходящих подключений. Чтобы установить исходящее подключение, используйте эфемерный порт, чтобы указать узлу назначения порт, через который можно обмениваться данными и поддерживать отдельный поток трафика. Когда эти временные порты используются для SNAT, они называются портами SNAT.

По определению каждый IP-адрес имеет 65 535 портов. Каждый порт можно использовать для входящих или исходящих подключений для TCP (протокол управления передачей) и UDP (протокол пользовательской диаграммы данных). При добавлении общедоступного IP-адреса в качестве внешнего IP-адреса в подсистему балансировки нагрузки 64 000 портов могут быть доступны для SNAT.

Каждый порт, используемый в балансировке нагрузки или правиле NAT для входящего трафика, использует диапазон из восьми портов из 64 000 доступных для SNAT. Это использование сокращает количество портов, подходящих для SNAT, если один и тот же внешний IP-адрес используется для исходящего подключения. Если правила NAT для балансировки нагрузки или входящих соединений используют те же блоки из восьми портов, что и другое правило, то эти правила не требуют дополнительных портов.

Примечание

Если необходимо подключиться к любым поддерживаемым службам PaaS Azure, таким как служба хранилища Azure, Azure SQL или Azure Cosmos DB, используйте Приватный канал Azure, чтобы избежать SNAT полностью. Приватный канал Azure отправляет трафик из виртуальной сети в службы Azure через магистральную сеть Azure, а не через Интернет.

Приватный канал является рекомендуемым вариантом по сравнению с конечными точками службы для частного доступа к размещенным в Azure службам. Дополнительные сведения о разнице между Приватный канал и конечными точками службы см. в разделе Compare Private Endpoints and Service Endpoints.

Как работает SNAT по умолчанию?

Когда виртуальная машина создает исходящий поток, Azure преобразует исходный IP-адрес в временный IP-адрес. Azure выполняет этот перевод через SNAT.

Если вы используете SNAT без правил исходящего трафика через общедоступную подсистему балансировки нагрузки, система предварительно выделяет порты SNAT, как описано в следующей таблице выделения портов SNAT по умолчанию:

Таблица выделения портов по умолчанию

Если включить выделение портов по умолчанию, система выделяет порты SNAT на основе размера внутреннего пула. Каждому внутреннему серверу назначается количество портов, определенное таблицей, на каждый внешний IP-адрес, но не более 1024 портов. Не используйте выделение портов по умолчанию для рабочих нагрузок в продуктивной среде, поскольку при нем каждому экземпляру серверной части выделяется минимальное количество портов, что повышает риск исчерпания SNAT-портов. Вместо этого рекомендуется использовать шлюз NAT или вручную распределить порты в правилах исходящего трафика подсистемы балансировки нагрузки.

Вы можете включить выделение портов по умолчанию несколькими способами:

  • Настройте правило балансировки нагрузки с параметром disableOutboundSnat, для которого задано значение false, или выберите параметр выделения портов по умолчанию в правиле балансировки нагрузки на портале Azure.
  • Настройте правило исходящего трафика, но задайте свойству allocatedOutboundPorts значение 0, или выберите Включить выделение портов по умолчанию на портале Azure.

Например, с 100 виртуальными машинами в серверном пуле и только одним интерфейсным IP-адресом каждая виртуальная машина получает 512 портов. При добавлении второго внешнего IP-адреса каждая виртуальная машина получает дополнительные 512 портов. Это означает, что каждая виртуальная машина выделяется в общей сложности 1024 портов. В результате добавление третьего внешнего IP-адреса не увеличивает количество выделенных портов SNAT за пределами 1024 портов.

Как правило, можно вычислить количество портов SNAT, предоставляемых при применении выделения портов по умолчанию: MIN(# of default SNAT ports provided based on pool size * number of frontend IPs associated with the pool, 1024)

В следующей таблице показаны предварительные расположения портов SNAT для одного внешнего IP-адреса в зависимости от размера внутреннего пула:

Размер пула (экземпляры виртуальных машин) Порты SNAT по умолчанию
1-50 1,024
51-100 512
101-200 256
201-400 128
401-800 64
801-1,000 32

Исчерпание портов

Каждое соединение с одинаковым IP-адресом назначения и конечным портом использует порт SNAT. Это подключение поддерживает отдельный поток трафика от клиента или серверной части к серверу. Этот процесс предоставляет серверу отдельный порт для передачи данных. Без этого процесса клиентский компьютер не знает, какой поток является частью пакета.

Представьте себе, что несколько браузеров переходят на https://www.microsoft.com.

  • Конечный IP-адрес = 23.53.254.142

  • Порт назначения = 443

  • Протокол = TCP

Без портов SNAT для возвращаемого трафика клиент не может отделять один результат запроса от другого.

Исходящие подключения могут сбой. Серверный экземпляр может быть выделен недостаточно портов. Используйте функцию повторного использования подключения в приложении. Без повторного использования подключения риск исчерпания портов SNAT увеличивается.

Дополнительные сведения об использовании пула подключений в Служба приложений Azure см. в статье Устранение неполадок, связанных с периодически возникающими ошибками исходящих подключений в Служба приложений Azure.

При возникновении нехватки портов новые исходящие подключения к целевому IP-адресу завершаются сбоем. Подключения завершаются успешно, когда порт становится доступным. Эти исчерпания происходят, когда 64 000 портов из IP-адреса распределяются по множеству серверных экземпляров. Рекомендации по устранению нехватки портов SNAT см. в разделе Support и устранение неполадок для Azure Load Balancer.

Повторное использование порта

Для TCP-подключений подсистема балансировки нагрузки использует один порт SNAT для каждого конечного IP-адреса и порта. Для подключений к одному и тому же целевому IP-адресу один порт SNAT можно повторно использовать, если порт назначения отличается. Повторное использование невозможно, если уже существует подключение к тому же IP-адресу и порту назначения.

Для подключений UDP подсистема балансировки нагрузки использует алгоритм NAT с ограниченным портом, который использует один порт SNAT на IP-адрес назначения независимо от конечного порта.

Можно повторно использовать отдельные порты для неограниченного количества подключений, где разрешено повторное использование (если конечный IP-адрес или порт отличаются).

В примере в следующей таблице внутренний экземпляр с частным IP-адресом 10.0.0.1 делает TCP-подключения к конечным IP-адресам 23.53.254.142 и 26.108.254.155, а подсистема балансировки нагрузки настроена с интерфейсным IP-адресом 192.0.2.0. Так как IP-адреса назначения отличаются, один и тот же порт SNAT можно повторно использовать для нескольких подключений.

Flow Исходный кортеж Исходный кортеж после SNAT Целевой кортеж
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

Ограничения

  • Если соединение неактивно и новые пакеты не передаются, порты освобождаются через 4–120 минут.

  • Это пороговое значение можно настроить с помощью правил исходящего трафика.

  • Каждый IP-адрес предоставляет 64 000 портов, которые можно использовать для SNAT.

  • Каждый порт можно использовать для подключений TCP и UDP к целевому IP-адресу.

  • Вам нужен порт SNAT UDP независимо от того, является ли конечный порт уникальным или нет. Для каждого подключения UDP к целевому IP-адресу используется один порт SNAT UDP.

  • Порт TCP SNAT можно использовать для нескольких подключений к одному и тому же IP-адресу назначения, если порты назначения отличаются.

  • Исчерпание портов SNAT происходит, когда у серверного экземпляра заканчиваются выделенные ему порты SNAT. Подсистема балансировки нагрузки по-прежнему может иметь неиспользуемые порты SNAT. Если используемые порты SNAT внутреннего экземпляра превышают заданные порты SNAT, он не может устанавливать новые исходящие подключения.

  • Система отбрасывает фрагментированные пакеты, если исходящий трафик не проходит через общедоступный IP-адрес уровня экземпляра, назначенный сетевому интерфейсу виртуальной машины.

  • Правила исходящего трафика не поддерживают вторичные конфигурации IPv4 сетевого интерфейса. Для исходящего трафика по вторичным конфигурациям IPv4 назначьте публичные IP-адреса уровня виртуальной машины или используйте шлюз NAT.

Дальнейшие шаги