Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для некоторых сценариев требуется, чтобы виртуальные машины или вычислительные экземпляры имели исходящее подключение к Интернету. IP-адреса фронтенда общедоступной подсистемы балансировки нагрузки можно использовать для обеспечения исходящего подключения к интернету для экземпляров бэкенда. Эта конфигурация использует преобразование сетевых адресов источника (SNAT) для перевода частного IP-адреса виртуальной машины в общедоступный IP-адрес подсистемы балансировки нагрузки. SNAT сопоставляет IP-адрес серверной части с общедоступным IP-адресом подсистемы балансировки нагрузки. SNAT предотвращает прямой доступ внешним источникам к backend экземплярам.
Выберите метод исходящей связности
Выберите явный исходящий метод подключения перед развертыванием рабочей нагрузки:
- Используйте Azure NAT Gateway для масштабируемого, исходящего подключения из подсети.
- Используйте публичный IP на уровне экземпляра, когда виртуальной машине нужен собственный публичный адрес.
- Используйте исходящие правила , когда бэкенд-инстансы используют фронтенд-IP балансировщика нагрузки для исходящей связи.
- Избегайте исходящего доступа по умолчанию для рабочих нагрузок в производственной среде. Новые виртуальные сети по умолчанию используют частные подсети.
Методы исходящего подключения Azure
Ниже перечислены наиболее часто используемые методы Azure для включения исходящего подключения, перечисленные в порядке приоритета при использовании нескольких методов:
| # | Метод | Тип выделения портов | Промышленного уровня? | Рейтинг |
|---|---|---|---|---|
| 1 | Подключите шлюз NAT Azure к подсети | Динамический, явный | Yes | С уважением |
| 2 | Назначение общедоступного IP-адреса виртуальной машине | Статический, явный | Yes | OK |
| 3 | Использование интерфейсных IP-адресов подсистемы балансировки нагрузки для исходящего трафика с помощью правил исходящего трафика | Статический, явный | Да, но не в масштабе | OK |
| 4 | Использование внешних IP-адресов подсистемы балансировки нагрузки для исходящего трафика без правил исходящего трафика | Статический, неявный | Нет | Худший |
| 5 | Исходящий доступ по умолчанию | Неявный | Нет | Худший |
1. Подключите Azure NAT Gateway к подсети
Azure NAT Gateway упрощает подключение к Интернету только для исходящего трафика в виртуальных сетях. Когда вы настроите его в подсети, вся исходящая связь использует указанные вами статические публичные IP-адреса. Вы можете иметь исходящее соединение без балансировщика нагрузки или без публичных IP-адресов, напрямую привязанных к виртуальным машинам. Шлюз NAT полностью управляемый и высоко устойчивый.
Использование NAT Gateway — лучший способ для исходящей связи. NAT Gateway очень расширяемый, надёжный и не вызывает таких проблем с истощением портов SNAT.
NAT Gateway имеет приоритет над другими методами исходящей связи, включая балансировщик нагрузки, публичные IP-адреса на уровне экземпляра и Брандмауэр Azure.
Дополнительные сведения об Azure NAT Gateway см. в разделе Что такое Azure NAT Gateway. Дополнительные сведения о том, как работает SNAT с шлюзом NAT, см. в статье SNAT с шлюзом NAT.
2. Назначение общедоступного 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 балансировщика нагрузки Azure
Порты создают уникальные идентификаторы, поддерживающие различные потоки. Интернет использует пятеричный кортеж, чтобы обеспечить это различие.
Если вы используете порт для входящих подключений, он имеет прослушиватель для входящих запросов на подключение на этом порту. Этот порт нельзя использовать для исходящих подключений. Чтобы установить исходящее подключение, используйте эфемерный порт, чтобы указать узлу назначения порт, через который можно обмениваться данными и поддерживать отдельный поток трафика. Когда эти временные порты используются для 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 Load Balancer
Когда виртуальная машина создает исходящий поток, Azure преобразует исходный IP-адрес в временный IP-адрес. Azure выполняет этот перевод через SNAT.
Если вы используете SNAT без правил исходящего трафика через общедоступную подсистему балансировки нагрузки, система предварительно выделяет порты SNAT, как описано в следующей таблице выделения портов SNAT по умолчанию:
Таблица выделения портов по умолчанию
Если включить выделение портов по умолчанию, система выделяет порты SNAT на основе размера внутреннего пула. Каждому внутреннему серверу назначается количество портов, определенное таблицей, на каждый внешний IP-адрес, но не более 1024 портов. Не используйте выделение портов по умолчанию для рабочих нагрузок в продуктивной среде, поскольку при нем каждому экземпляру серверной части выделяется минимальное количество портов, что повышает риск исчерпания SNAT-портов. Вместо этого рассмотрите возможность использования Azure NAT Gateway или ручного выделения портов в исходящих правилах балансировщика нагрузки.
Вы можете включить выделение портов по умолчанию несколькими способами:
- Настройте правило балансировки нагрузки с параметром
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 каждое активное соединение требует отдельного преобразованного кортежа источника для конкретного кортежа назначения, который состоит из IP-адреса и порта назначения. Вы можете повторно использовать SNAT-порт для подключения к другому IP-адресу назначения или другому порту. Вы не можете использовать его повторно для другого активного соединения с того же бэкенда на тот же 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 |
Ограничения
К Azure Load Balancer SNAT применимы следующие ограничения. Отдельные ограничения определяют, когда они применяются только к TCP, UDP, исходящим правилам или публичным IP-конфигурациям на уровне экземпляра.
Если соединение неактивно и новые пакеты не передаются, порты освобождаются через 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-адреса на уровне экземпляра или используйте Azure NAT Gateway.
Дальнейшие шаги
- Support и устранение неполадок для Azure Load Balancer
- Просмотрите метрики SNAT и ознакомьтесь с правильным способом фильтрации, разделения и просмотра.
- Узнайте, как мигрировать ваш существующий метод исходящего подключения на Azure NAT Gateway.