Правила исходящего трафика Azure Load Balancer

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

Эта конфигурация обеспечивает:

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

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

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

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

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

Правила для исходящего трафика позволяют управлять следующим:

  • Какие виртуальные машины сопоставляются с какими общедоступными IP-адресами.
    • При этом используются два правила: для серверного пула 1 используется оба синих IP-адреса, а для серверного пула 2 используется желтый префикс IP-адреса.
  • Как выделяются исходящие порты SNAT.
    • Если внутренний пул 2 является единственным пулом, выполняющим исходящие подключения, предоставьте все порты SNAT серверному пулу 2 и ни одного — серверному пулу 1.
  • Протоколы, для которых требуется обеспечить исходящее преобразование.
    • Если серверному пулу 2 требуются UDP-порты для исходящего трафика, а серверному пулу 1 требуется протокол TCP, присвойте портам TCP значение 1, а порту UDP значение 2.
  • Какую продолжительность использовать для тайм-аута простоя исходящего подключения (от 4 до 120 минут).
    • Если существуют длительные подключения, поддерживаемые keepalive-пакетами, следует резервировать неактивные порты для таких подключений на срок до 120 минут. Предполагается, что устаревшие подключения отброшены, а порты освобождаются в течение 4 минут для новых подключений.
  • Отправлять ли сброс TCP при завершении времени ожидания.
    • Если истекло время ожидания простаивающих подключений, нужно ли отправлять TCP RST клиенту и серверу, чтобы они знали, что поток завершён?

Внимание

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

Определение правила для исходящего трафика

Во всех правилах для исходящего трафика используется тот же синтаксис, что и в правилах балансировки нагрузки и правилах NAT для входящего трафика: внешний интерфейс + параметры + серверный пул.

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

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

Масштабирование NAT для исходящего трафика с несколькими IP-адресами

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

Используйте несколько IP-адресов для планирования крупномасштабных сценариев. Используйте исходящие правила для предотвращения исчерпания SNAT, как описано в Поддержке и устранении неполадок для Azure Load Balancer.

Можно также использовать префикс общедоступного IP-адреса непосредственно с правилом для исходящего трафика.

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

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

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

Тайм-аут простоя исходящего потока и сброс TCP

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

Поведение подсистемы балансировки нагрузки по умолчанию заключается в том, что поток автоматически отключается перед переходом в режим тайм-аута простоя для исходящего трафика. Параметр enableTCPReset обеспечивает предсказуемое поведение приложения и управление им. Этот параметр определяет, следует ли отправлять двунаправленный сигнал TCP-сброс (TCP RST) при достижении времени простоя тайм-аута для исходящего соединения.

Ознакомьтесь с разделом Сброс TCP по истечении тайм-аута простоя для получения подробной информации, включая доступность в разных регионах.

Явная защита исходящих подключений и управление ими

Правила балансировки нагрузки обеспечивают автоматическое программирование NAT для исходящего трафика. В некоторых сценариях есть преимущество или требование отключить автоматическое программирование NAT для исходящего трафика с помощью правила балансировки нагрузки. Такое отключение с помощью правила позволяет управлять поведением или уточнять его.

Этот параметр можно использовать двумя способами:

  1. Предотвращение использования исходящего IP-адреса для SNAT. Отключите исходящие SNAT-подключения в правиле балансировки нагрузки.

  2. Настройте параметры SNAT исходящего трафика для IP-адреса, используемого одновременно для входящего и исходящего трафика. Автоматический NAT для исходящего трафика должен быть отключен, чтобы предоставить возможность правилу управлять исходящим трафиком. Чтобы изменить назначение порта адреса SNAT, также используемого для входящего трафика, параметр disableOutboundSnat должен иметь значение true.

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

Внимание

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

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

При использовании NSG для виртуальной машины с балансировкой нагрузки обратите внимание на теги службы и правила безопасности по умолчанию.

Убедитесь, что виртуальная машина может получать запросы проверки работоспособности из Azure Load Balancer.

Если NSG блокирует такие запросы от тега по умолчанию AZURE_LOADBALANCER, проба работоспособности виртуальной машины завершается сбоем, а машина помечается как недоступная. Подсистема балансировки нагрузки прекращает отправку новых потоков на эту виртуальную машину.

Сценарии исходящих правил

Сценарий 1. Привязка исходящих подключений к определенному набору общедоступных IP-адресов или префиксу

Настройте публичные IP-адреса, используемые для исходящих соединений

Этот сценарий применим к серверным виртуальным машинам на публичном Load Balancer (цен. категория "Стандартный"). Используйте его, чтобы исходящие соединения исходили с определённого набора публичных IP-адресов или публичного IP-префикса. Затем вы можете добавить эти адреса или префикс в список разрешений или блокировку.

Этот общедоступный IP-адрес или префикс может совпадать с тем, который используется правилом балансировки нагрузки.

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

  1. Создайте публичный IP-префикс или публичный IP-адрес.
  2. Создайте публичный стандартный балансировщик нагрузки.
  3. Создайте внешний интерфейс, ссылающийся на префикс общедоступного IP-адреса или общедоступный IP-адрес, который хотите использовать.
  4. Повторно используйте серверный пул или создайте его и разместите в этом пуле общедоступной подсистемы балансировки нагрузки виртуальные машины.
  5. Настройте правило для исходящего трафика на общедоступный балансировщик нагрузки, чтобы включить исходящий NAT для виртуальных машин, использующих фронтенд. Не рекомендуется использовать правило балансировки нагрузки для исходящего трафика. Отключите SNAT для исходящего трафика в правиле балансировки нагрузки.

Сценарий 2. Изменение выделения SNAT-портов

Настройте порты SNAT для каждого экземпляра серверной части

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

Правило распределения Behavior
Порты, доступные для каждого фронтенда Каждый общедоступный IP-адрес предоставляет до 64 000 эфемерных портов.
Порты, доступные для каждой виртуальной машины Разделите общее количество доступных портов между виртуальными машинами в бэкенд-пуле. Например, одна виртуальная машина может принимать до 64 000 портов с одного IP-адреса фронтенда, а две VM — до 32 000 портов каждая.
Прирост распределения Указывайте количество портов кратно восьми. Azure отклоняет значения, которые не делятся на восемь. Правила балансировки нагрузки и правила входящего NAT потребляют диапазон из восьми портов, но правила с одинаковым диапазоном не потребляют дополнительных портов.
Валидация пропускной способности Порты, выделенные для каждой виртуальной машины, умноженные на количество виртуальных машин, не могут превышать порты, доступные со всех IP-адресов фронтенда. Azure отклоняет выделения, превышающие эту ёмкость.
Восстановление автоматического распределения Укажите 0 количество портов.

Например, выделение 10 000 портов на VM для семи VM требует 70 000 портов. Один фронтенд-IP-адрес содержит только 64 000 портов, поэтому Azure отклоняет эту конфигурацию. Добавьте ещё один публичный IP-адрес на фронтенд или уменьшите выделение на одну VM.

Для получения дополнительной информации см. таблицу распределения портов SNAT.

Сценарий 3. Включение только исходящего трафика

Обеспечение исходящей связи без входящих правил

Этот сценарий применим к публичному Load Balancer (цен. категория "Стандартный"), чьи бэкэнд-виртуальные машины требуют исходящей связи без входящих правил балансировки нагрузки. Настройте исходящее правило отдельно, не настраивая дополнительные правила.

Примечание.

Azure NAT Gateway может предоставлять исходящее подключение для виртуальных машин без необходимости подсистемы балансировки нагрузки. Дополнительные сведения см. в разделе Что такое Azure NAT Gateway?.

Сценарий 4. NAT для исходящего трафика только для виртуальных машин (без входящего трафика)

Примечание.

Azure NAT Gateway может предоставлять исходящее подключение для виртуальных машин без необходимости подсистемы балансировки нагрузки. Дополнительные сведения см. в разделе Что такое Azure NAT Gateway?.

Настройте подключение только для исходящего трафика для виртуальных машин серверной части

Этот сценарий применим к виртуальным машинам, которым необходим выход из виртуальной сети без входящего подключения. Azure Load Balancer outbound rules и Azure NAT Gateway — доступные варианты.

  1. Создайте общедоступный IP-адрес или префикс.
  2. Создайте общедоступный стандартный балансировщик нагрузки.
  3. Создайте интерфейс, связанный с общедоступным IP-адресом или префиксом, выделенным для исходящего трафика.
  4. Создайте серверный пул для виртуальных машин.
  5. Разместите виртуальные машины в серверном пуле.
  6. Настройте правило для исходящего трафика, чтобы разрешить NAT для исходящего трафика.

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

Сценарий 5: Исходящий NAT для внутреннего стандартного балансировщика нагрузки

Примечание.

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

Обеспечить исходящее подключение для внутреннего стандартного балансировщика нагрузки

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

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

Сценарий 6. Включение протоколов TCP и UDP для исходящего NAT с использованием общедоступного стандартного балансировщика нагрузки

Включите TCP и UDP для исходящего NAT

Этот сценарий применим к публичному Load Balancer (цен. категория "Стандартный"). Автоматический исходящий NAT соответствует транспортному протоколу правила балансировки нагрузки. Для обеспечения как TCP, так и UDP исходящей связи, настройте исходящее правило, использующее все протоколы.

  1. Отключите исходящий SNAT в правиле балансировки нагрузки.
  2. Настройте правило для исходящего трафика в той же подсистеме балансировки нагрузки.
  3. Повторно используйте серверный пул, уже использованный вашими ВМ.
  4. Укажите для протокола значение "Все" как часть правила для исходящего трафика.

Если используются только правила NAT для входящего трафика, NAT для исходящего трафика обеспечиваться не будет.

  1. Поместите виртуальные машины в серверный пул.
  2. Определение одной или нескольких интерфейсных IP-конфигураций с общедоступными IP-адресами или префиксом общедоступного IP-адреса
  3. Настройте правило для исходящего трафика в той же подсистеме балансировки нагрузки.
  4. Укажите для протокола значение "Все" как часть правила для исходящего трафика.

Ограничения

  • Максимальное количество используемых эфемерных портов на один интерфейсный IP-адрес составляет 64 000.
  • Диапазон настраиваемого времени ожидания перед переходом исходящих подключений в режим простоя составляет 4–120 минут (240–7200 секунд).
  • Подсистема балансировки нагрузки не поддерживает ICMP для исходящего NAT, единственными поддерживаемыми протоколами являются TCP и UDP.
  • Правила исходящего трафика можно применять только к основной конфигурации IPv4 сетевого адаптера. Невозможно создать правило исходящего трафика для дополнительных конфигураций IPv4 виртуальной машины или NVA. Поддерживается несколько сетевых карт.
  • Правила исходящего трафика для вторичной IP-конфигурации поддерживаются только для IPv6.
  • Все виртуальные машины в группе доступности должны быть добавлены во внутренний пул для исходящих подключений.
  • Все виртуальные машины в масштабируемом наборе виртуальных машин должны быть добавлены во внутренний пул для исходящих подключений.

Следующие шаги