Поделиться через


Входящие и исходящие IP-адреса в Службе приложений Azure

Azure App Service — это мультитенантная служба, за исключением App Service Environments. Приложения, не находящиеся в среде службы приложений (не в Изолированном уровне), делят сетевую инфраструктуру с другими приложениями. Это означает, что входящий и исходящий IP-адреса в приложении могут различаться, а в определенных ситуациях даже изменяться по ходу работы.

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

Как в службе приложений IP-адреса работают

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

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

Примечание.

Уровень Premium V4 не предоставляет стабильный набор исходящих IP-адресов. Это поведение является преднамеренным. Хотя приложения, работающие на уровне Premium V4, могут выполнять исходящие вызовы к конечным точкам, подключенным к Интернету, платформа службы приложений не предоставляет стабильный набор исходящих IP-адресов для уровня Premium V4. Это изменение поведения по сравнению с предыдущими уровнями ценообразования службы приложений. На портале отображается надпись "Dynamic" для исходящих IP-адресов, а также дополнительная информация об исходящих IP-адресах для приложений, использующих Premium V4. Вызовы Azure Resource Manager (ARM) и CLI возвращают пустые строки для значений outboundIpAddresses и possibleOutboundIpAddresses. Если для приложений, работающих в Premium V4, требуется стабильный исходящий IP-адрес или адреса, разработчики должны использовать такое решение, как шлюз NAT Azure , чтобы получить прогнозируемый IP-адрес для исходящего трафика, доступного к Интернету.

Если изменяется входящий IP-адрес

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

  • Удалите приложение и повторно создайте его в другой группе ресурсов (единица развертывания может измениться).
  • Удалите последнее приложение в сочетании групп ресурсов и региона и повторно создайте его (единица развертывания может измениться).
  • Удалите существующую привязку TLS на основе IP-адресов, например во время продления сертификата (см. раздел "Продление сертификата").

Поиск входящего IP-адреса

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

nslookup <app-name>.azurewebsites.net

Получите выделенный входящий IP-адрес

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

Если изменяются исходящие IP-адреса

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

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

  • Удалите приложение и повторно создайте его в другой группе ресурсов (единица развертывания может измениться).
  • Удалите последнее приложение в сочетании групп ресурсов и региона и повторно создайте его (единица развертывания может измениться).
  • Масштабируйте приложение между нижними уровнями (базовый, стандартный и премиум), уровнем PremiumV2 , уровнем PremiumV3 и параметрами Pmv3 в уровне PremiumV3 (IP-адреса могут быть добавлены или вычитаются из набора).

Вы можете найти набор всех возможных исходящих IP-адресов, которые ваше приложение может использовать, независимо от ценовых категорий, посмотрев на свойство possibleOutboundIpAddresses или в поле Дополнительные исходящие IP-адреса на странице Свойств в портале Azure. См. также раздел Поиск исходящих IP-адресов.

Набор всех возможных исходящих IP-адресов может увеличиваться со временем, если App Service добавляет новые ценовые категории или параметры в существующие развертывания App Service. Например, если Служба приложений добавляет уровень PremiumV3 в существующее развертывание Службы приложений, то увеличивается набор всех возможных исходящих IP-адресов. Аналогичным образом, если Служба приложений добавляет новые параметры Pmv3 в развертывание, которое уже поддерживает уровень PremiumV3, то увеличивается набор всех возможных исходящих IP-адресов. Добавление IP-адресов в развертывании не оказывает непосредственного влияния, так как исходящие IP-адреса для работающих приложений не изменяются при добавлении новой ценовой категории или варианта в развертывание службы приложений App Service. Однако если приложения переключятся на новую ценовую категорию или вариант, который ранее недоступен, используются новые исходящие адреса, а клиенты должны обновить правила брандмауэра нижнего уровня и ограничения IP-адресов.

Поиск исходящих IP-адресов

Чтобы узнать исходящие IP-адреса, используемые приложением в портале Azure, выберите Свойства в области навигации слева. Они перечислены в поле исходящих IP-адресов.

Эти же сведения можно получить, выполнив следующую команду в Cloud Shell.

az webapp show --resource-group <group_name> --name <app_name> --query outboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).OutboundIpAddresses

Чтобы найти все возможные исходящие IP-адреса для приложения, независимо от ценовых категорий, выберите "Свойства " в области навигации слева. Они перечислены в поле "Дополнительные исходящие IP-адреса ".

Эти же сведения можно получить, выполнив следующую команду в Cloud Shell.

az webapp show --resource-group <group_name> --name <app_name> --query possibleOutboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).PossibleOutboundIpAddresses

Сведения о приложениях-функциях см. в разделе "Исходящие IP-адреса приложения-функции".

Получение статического исходящего IP-адреса

Вы можете управлять IP-адресом исходящего трафика из приложения с помощью интеграции виртуальной сети и шлюза NAT виртуальной сети для перенаправления трафика через статический общедоступный IP-адрес. Интеграция виртуальной сети доступна в планах "Базовый", "Стандартный", "Премиум", "ПремиумV2" и "ПремиумV3" службы приложений. Дополнительные сведения об этой настройке см. в разделе Интеграция шлюза NAT.

Свойства IP-адреса на портале Azure

IP-адреса отображаются в нескольких местах на портале Azure. На странице свойств показаны необработанные выходные данные из inboundIpAddress, possibleInboundIpAddresses, outboundIpAddresses и possibleOutboundIpAddresses. На странице обзора также отображаются те же значения, но не включены возможные входящие IP-адреса.

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

Снимок экрана: отображение IP-адресов на странице обзора сети.

Тег службы

С помощью тега службы AppService можно определить сетевой доступ для службы Azure App Service без указания отдельных IP-адресов. Тег службы — это группа префиксов IP-адресов, используемых для минимизации сложности создания правил безопасности. При использовании тегов служб Azure автоматически обновляет IP-адреса по мере их изменения для службы. Однако тег службы не является механизмом управления безопасностью. Тег службы — это просто список IP-адресов.

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

Тег можно использовать, чтобы разрешить исходящий трафик в группе безопасности сети (NSG) для приложений. Если приложение использует ПРОТОКОЛ TLS на основе IP-адресов или приложение развертывается в изолированном режиме, необходимо использовать выделенный IP-адрес. Так как тег содержит только входящий IP-адрес, тег нельзя использовать в ограничениях доступа, чтобы ограничить доступ к приложению из других приложений в Службе приложений.

Примечание.

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

Поддержка IPv6 для входящих подключений

Служба приложений Azure поддерживает IPv6 для входящего трафика на всех номерах SKU "Базовый", "Стандартный" и "Премиум", а также "Потребление функций", "Функции elastic Premium" и "Стандартные планы Logic Apps". Приложения могут получать трафик через протоколы IPv4 и IPv6, обеспечивая совместимость с современными сетями и клиентами, которым требуется подключение IPv6.

Примечание.

Поддержка исходящего IPv6 доступна в общедоступной предварительной версии только для приложений Windows. Дополнительные сведения о поддержке исходящего IPv6 см. в статье Объявление об исходящей поддержке IPv6 службы приложений в общедоступной предварительной версии. Все исходящие подключения из приложений Linux по-прежнему используют IPv4.

Предпосылки

Чтобы использовать входящий трафик IPv6, вам потребуется:

  • IPv6-адрес, принимаюющий входящий трафик
  • Запись DNS, возвращающая запись IPv6 (AAAA)
  • Клиент, который может отправлять и получать IPv6-трафик

Это важно

Многие локальные сети и среды разработки поддерживают только IPv4, что может повлиять на возможность проверки подключения IPv6 с локального компьютера.

Как работает адресация IPv6

Все единицы развертывания службы приложений включают IPv6-адреса, что позволяет приложению получать трафик как по IPv4, так и по IPv6-адресам. Для обеспечения обратной совместимости DNS-ответ для имени узла <app-name>.azurewebsites.net по умолчанию возвращает только IPv4-адрес.

Вы можете настроить поведение режима IP с помощью свойства IPMode.

  • IPv4 (по умолчанию): DNS возвращает только IPv4-адрес
  • IPv6: DNS возвращает только IPv6-адрес
  • IPv4AndIPv6: DNS возвращает как IPv4, так и IPv6-адреса

IPMode — это функция только для DNS. Каждый сайт службы приложений может получать запросы через конечные точки IPv4 и IPv6 независимо от настроенного IpMode. IpMode влияет только на то, как DNS разрешает конечную точку, поэтому он влияет на клиентов, которые используют разрешение DNS (что должно касаться большинства клиентов), но не ограничивает доступность конечных точек протокола.

Настройка поддержки IPv6

Чтобы обновить приложение для возврата записей DNS IPv6 на портале Azure, перейдите на страницу "Конфигурация " для приложения службы приложений и задайте свойство режима входящего IP-адреса .

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

Проверка подключения IPv6

Чтобы проверить подключение IPv6 к приложению, используйте следующую команду curl:

curl -6 https://<app-name>.azurewebsites.net

Пользовательские домены и IPv6

При использовании пользовательских доменов можно настроить записи DNS для поддержки IPv6:

  • Только IPv6: добавьте запись AAAA, указывающую на IPv6-адрес приложения. Клиенты должны поддерживать IPv6.
  • Двойной стек: добавьте записи A (IPv4) и AAAA (IPv6) или используйте запись CNAME в имя узла по умолчанию, которое наследует IPMode поведение.