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


Параметры сети для Функций Azure

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

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

Функция План потребления План потребления Flex План категории "Премиум" Выделенный план/ASE Приложения-контейнеры*
Ограничения для входящих IP-адресов ✅Да ✅Да ✅Да ✅Да ✅Да
Частные конечные точки входящего трафика ❌Нет ✅Да ✅Да ✅Да ❌Нет
Интеграция с виртуальной сетью ❌Нет ✅Да (Региональный) ✅Да (Региональный) ✅Да (Региональный и шлюз) ✅Да
Триггеры виртуальной сети (без HTTP) ❌Нет ✅Да ✅Да ✅Да ✅Да
Гибридные подключения (только для Windows) ❌Нет ❌ Нет ✅Да ✅Да ❌Нет
Ограничения исходящих IP-адресов ❌Нет ✅Да ✅Да ✅Да ✅Да

*Дополнительные сведения см. в разделе "Сеть" в среде "Приложения контейнеров Azure".

Ресурсы для работы с кратким руководством

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

Функции входящего сетевого подключения

Следующие функции позволяют фильтровать входящие запросы к приложению-функции.

Ограничения входящего доступа

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

Ограничения доступа доступны в плане потребления Flex, эластичном премиуме, потреблении и Служба приложений.

Примечание.

С учетом ограничений сети можно выполнять развертывание только из виртуальной сети или указать IP-адрес компьютера, который используется для доступа к порталу Azure, в списке "Надежные получатели". Тем не менее этой функцией можно по-прежнему управлять с помощью портала.

Дополнительные сведения см. в статье Azure App Service static access restrictions (Ограничения статического доступа для Службы приложений Azure).

Частные конечные точки

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

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

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

  • Настроить интеграцию с частными зонами Azure DNS. Если в виртуальной сети нет настраиваемого DNS-сервера, это выполняется автоматически.
  • Управлением частной конечной точкой на DNS-сервере, используемом приложением. Для этого необходимо узнать адрес частной конечной точки, а затем указать конечную точку, к которой вы пытаетесь связаться по этому адресу, ч помощью записи типа A.
  • Настройка собственного DNS-сервера для перенаправления в частные зоны Azure DNS.

Дополнительные сведения см. в статье Использование частных конечных точек для веб-приложений.

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

Конечные точки служб

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

  1. Настройте интеграцию вашего приложения-функции с региональной виртуальной сетью для подключения к определенной подсети.
  2. Перейти в целевую службу и настроить конечные точки службы для подсети интеграции.

Дополнительные сведения см. в статье Конечные точки служб для виртуальной сети.

Использование конечных точек служб

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

Если конечные точки службы еще не включены Microsoft.Web для выбранной подсети, они автоматически включены, если не установлен флажок "Игнорировать отсутствующие конечные точки microsoft.Web service". Ситуация, в которой в приложении может потребоваться включить конечные точки служб, но не подсеть, зависит главным образом от наличия разрешений на их включение в подсети.

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

Снимок экрана: панель

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

Узнайте, как настроить конечные точки служб, в разделе Руководство по установке закрытого доступа к сайту для Функций Azure.

Интеграция виртуальной сети

Интеграция виртуальной сети позволяет приложению-функции получить доступ к ресурсам внутри виртуальной сети. Функции Azure поддерживают два вида интеграции виртуальной сети:

  • Ценовые категории выделенных вычислительных ресурсов, включая "Базовый", "Стандартный", "Премиум", "Премиум v2" и "Премиум v3".
  • Среда службы приложений, которая развертывается непосредственно в виртуальной сети с выделенной вспомогательной инфраструктурой и использует ценовые категории "Изолированный" и "Изолированный v2".

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

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

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

Функция интеграции с виртуальной сетью:

Функции, не поддерживаемые при интеграции с виртуальной сетью:

  • подключение диска;
  • присоединение к домену Active Directory на Windows Server;
  • NetBIOS.

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

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

Интеграция виртуальной сети в Функциях Azure использует общую инфраструктуру с веб-приложениями Службы приложений. Дополнительные сведения о двух типах интеграции виртуальной сети см. в следующих статьях:

Сведения о настройке интеграции виртуальной сети см. в статье Осуществление интеграции виртуальной сети.

Включение интеграции с виртуальной сетью

  1. В приложении-функции в портал Azure выберите "Сеть", а затем в разделе "Интеграция виртуальной сети" щелкните здесь, чтобы настроить.

  2. Выберите Добавить виртуальную сеть.

    Выберите

  3. Раскрывающийся список содержит все виртуальные сети Azure Resource Manager в рамках вашей подписки для данного региона. Выберите виртуальную сеть, интеграцию с которой вы хотите выполнить.

    Выберите виртуальную сеть

    • Планы "Функции Flex Consumption" и Elastic Premium поддерживают только интеграцию региональной виртуальной сети. Если виртуальная сеть находится в том же регионе, создайте новую или выберите пустую существующую подсеть.

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

Во время интеграции приложение перезапускается. После завершения интеграции вы увидите сведения о виртуальной сети, с которыми вы интегрированы. По умолчанию включена функция Route All, а весь трафик направляется в виртуальную сеть.

Если вы хотите маршрутизировать только частный трафик (RFC1918 ), выполните действия, описанные в документации по службе приложений.

Интеграция региональной виртуальной сети

Использование интеграции c региональной виртуальной сетью позволяет приложению получить доступ к следующим ресурсам:

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

При использовании интеграции с региональной виртуальной сетью можно использовать следующие сетевые функции Azure:

  • Группы безопасности сети (NSG). Можно блокировать исходящий трафик с помощью NSG, размещенного в подсети интеграции. Правила для входящих подключений не применяются, так как вы не можете использовать интеграцию с виртуальной сетью для предоставления входящего доступа к своему приложению.
  • Таблицы маршрутов (UDR). Можно поместить таблицу маршрутов в подсеть интеграции для отправки исходящего трафика.

Примечание.

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

Интеграция с региональной виртуальной сетью не может использовать порт 25.

Для плана потребления Flex:

  1. Убедитесь, что Microsoft.App поставщик ресурсов Azure включен для подписки, выполнив следующие инструкции. Делегирование подсети, необходимое для приложений Microsoft.App/environmentsFlex Consumption.
  2. Делегирование подсети, необходимое для приложений Microsoft.App/environmentsFlex Consumption. Это изменение от Elastic Premium и Служба приложений которые имеют другое требование делегирования.
  3. Вы можете запланировать использование 40 IP-адресов в максимальной степени для одного приложения-функции, даже если приложение масштабируется более 40. Например, если у вас есть пятнадцать приложений функций Flex Consumption, которые будут интегрированы в одну подсеть, можно спланировать максимальное использование 15x40 = 600 IP-адресов. Это ограничение подлежит изменению и не применяется.
  4. Подсеть не может использоваться для других целей (например, частных или конечных точек службы или делегирована любому другому плану размещения или службе). Хотя вы можете совместно использовать одну подсеть с несколькими приложениями Flex Consumption, сетевые ресурсы будут совместно использоваться в этих приложениях-функциях, и это может привести к тому, что одно приложение-функция влияет на производительность других пользователей в одной подсети.

Существует несколько ограничений, касающихся использования виртуальной сети:

  • Эта функция доступна из Flex Consumption, Elastic Premium и Служба приложений Premium версии 2 и Premium V3. Она также доступна в плане "Стандартный", но только в новых развертываниях Службы приложений. Если вы используете более раннее развертывание, эту функцию можно использовать только начиная с плана "Премиум V2" службы приложений. Если вы хотите проверить, можете ли вы использовать эту функцию в стандартном плане, создайте приложение в плане "Премиум V3" Службы приложений. Эти планы поддерживаются только в новых развертываниях. После этого при необходимости вы можете уменьшить масштаб обратно.
  • Подсеть интеграции может использоваться только одним планом службы приложений.
  • Эта функция не может использоваться приложениями плана "Изолированный", которые находятся в Среде службы приложений.
  • Для этой функции требуется неиспользуемая подсеть размером /28 или больше в виртуальной сети Azure Resource Manager.
  • Приложение и виртуальная сеть должны находиться в одном регионе.
  • Невозможно удалить виртуальную сеть с интегрированным приложением. Перед удалением виртуальной сети необходимо удалить интеграцию.
  • Для каждого плана Служба приложений можно выполнить до двух интеграции региональной виртуальной сети. Несколько приложений в рамках плана службы приложений могут использовать одну интеграцию с подсетью.
  • Невозможно изменить подписку приложения или плана, пока есть приложение, использующее интеграцию с региональной виртуальной сетью.

подсети;

Интеграция виртуальной сети зависит от выделенной подсети. При подготовке подсети подсеть Azure теряет пять IP-адресов в начале диапазона. Для планов Elastic Premium и Служба приложений один адрес используется из подсети интеграции для каждого экземпляра плана. При масштабировании приложения до четырех экземпляров используются четыре адреса. Для потребления Flex это не применяется, а экземпляры используют IP-адреса.

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

Размер блока CIDR Макс. доступных адресов Макс. масштабирование по горизонтали (экземпляры)*
/28 11 5
/27 27 13
/26 59 29

*Предполагается, что вам нужно увеличить или уменьшить размер или номер SKU в какой-либо момент.

Так как размер подсети нельзя изменить после назначения, используйте подсеть, которая достаточно велика для размещения любого масштаба, которого может достигнуть ваше приложение. Чтобы избежать проблем с емкостью подсети для планов Elastic Premium функций, следует использовать /24 с 256 адресами для Windows и /26 с 64 адресами для Linux. При создании подсетей на портале Azure в рамках интеграции с виртуальной сетью требуемый минимальный размер составляет /24 для Windows и /26 для Linux.

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

Эта функция полностью поддерживается для приложений Windows и Linux, включая пользовательские контейнеры. Все эти особенности работы действуют одинаково в приложениях Windows и Linux.

Группы безопасности сети

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

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

Маршруты

Таблицы маршрутов можно использовать для маршрутизации исходящего трафика из приложения в нужное место. По умолчанию таблицы маршрутов влияют только на трафик с частных адресов (RFC1918). Если включен параметр Route All, все исходящие вызовы будут затронуты. Если параметрRoute All отключен, таблицы маршрутов затрагивают только частный трафик (RFC1918). Маршруты, настроенные в подсети интеграции, не повлияют на ответы на входящие запросы приложений. Местами назначения часто являются брандмауэры и шлюзы.

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

Маршруты протокола BGP также влияют на трафик приложения. Если у вас есть маршруты BGP, например для шлюза ExpressRoute, они повлияют на исходящий трафик приложения. По умолчанию маршруты BGP влияют только на трафик с частных адресов (RFC1918). Если приложение-функция интегрировано с виртуальной сетью с включенной функцией Route All, весь исходящий трафик будет затронут маршрутами BGP.

частные зоны Azure DNS;

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

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

Примечание.

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

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

Эта функция поддерживается для всех номеров SKU, поддерживаемых виртуальной сетью Windows и Linux, в плане выделенных (Служба приложений) и для планов Elastic Premium, а также для плана потребления Flex. План "Потребление" не поддерживается. Сведения о настройке функции в учетной записи хранения с ограничением в пределах частной сети, см. в статье Ограничение учетной записи хранения пределами виртуальной сети.

Использование возможностей Key Vault

Вы можете использовать возможности Azure Key Vault, чтобы извлекать секреты из Azure Key Vault в приложении Функций Azure без каких-либо изменений кода. Azure Key Vault — это служба, которая обеспечивает централизованное управление секретами с полным контролем над политиками доступа и журналом аудита.

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

Триггеры виртуальной сети (без HTTP)

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

План Elastic Premium с триггерами виртуальной сети

План Elastic Premium позволяет создавать функции, которые активируются службами в виртуальной сети. Эти триггеры, отличные от HTTP, называются триггерами виртуальной сети.

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

  1. На портале Azure перейдите к своему приложению-функции.

  2. В разделе "Параметры" выберите "Конфигурация", а затем на вкладке "Параметры среды выполнения" установите для параметра "Мониторинг масштаба среды выполнения" значение "Вкл.".

  3. Нажмите кнопку "Сохранить", чтобы обновить конфигурацию приложения-функции и перезапустить приложение.

VNETToggle

Совет

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

Поддержка динамического мониторинга триггеров виртуальной сети недоступна в среде выполнения Функций версии 1.x.

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

Расширение (минимальная версия) Только мониторинг масштабирования среды выполнения Масштабирование на основе целевого объекта
Microsoft.Azure.WebJobs.Extensions.CosmosDB > 3.0.5 > 4.1.0
Microsoft.Azure.WebJobs.Extensions.DurableTask > 2.0.0 Н/Д
Microsoft.Azure.WebJobs.Extensions.EventHubs > 4.1.0 > 5.2.0
Microsoft.Azure.WebJobs.Extensions.ServiceBus > 3.2.0 > 5.9.0
Microsoft.Azure.WebJobs.Extensions.Storage > 3.0.10 > 5.1.0*

* Только хранилище очередей.

Внимание

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

План службы приложений и среда службы приложений с триггерами виртуальной сети

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

Например, предположим, что вам нужно настроить Azure Cosmos DB для приема трафика только из виртуальной сети. В этом случае приложение-функцию необходимо развернуть в плане службы приложений, который обеспечивает интеграцию виртуальной сети с этой виртуальной сетью. Интеграция включает функцию, чтобы она была активирована через ресурс Azure Cosmos DB.

Гибридные подключения

Гибридные подключения — это функция Azure Relay, которую можно использовать для доступа к ресурсам приложения в других сетях. Они обеспечивают доступ из вашего приложения к конечной точке приложения. Она не может быть использована для доступа к приложению. Гибридные подключения доступны для функций, которые везде работают в Windows, кроме плана потребления.

При использовании в Функциях Azure каждое гибридное подключение коррелирует с одной комбинацией узла TCP и TCP-порта. Это означает, что конечная точка гибридного подключения может быть размещена в любой операционной системе и приложении, пока вы предоставляете доступ к TCP-порту прослушивания. Гибридным подключениям не важен используемый протокол приложения или ресурсы, к которым вы обращаетесь. Они просто предоставляют доступ к сети.

Дополнительные сведения см. в App Service documentation for Hybrid Connections (Документация по Службе приложений для гибридных подключений). Эти же шаги конфигурации поддерживают Функции Azure.

Внимание

Гибридные подключения поддерживаются только в планах Windows. ОС Linux не поддерживается.

Ограничения исходящих IP-адресов

Ограничения исходящего IP-адреса доступны в плане потребления Flex, плане elastic Premium, плане Служба приложений или Среда службы приложений. Вы можете настроить ограничения исходящего трафика для виртуальной сети, в которой развернута Среда службы приложений.

Если вы интегрируете приложение-функцию в план Elastic Premium или план Служба приложений с виртуальной сетью, приложение по-прежнему может выполнять исходящие вызовы в Интернет по умолчанию. Интеграция приложения-функции с виртуальной сетью с включенной функцией Route All позволяет принудительно отправлять весь исходящий трафик в виртуальную сеть, где правила группы безопасности сети можно использовать для ограничения трафика. Для Flex Consumption весь трафик уже направляется через виртуальную сеть и маршрут all не нужен.

Инструкции по управлению исходящим IP-адресом с помощью виртуальной сети см. в разделе Учебник. Управление исходящим IP-адресом Функций Azure с помощью шлюза NAT виртуальной сети Azure.

Автоматизация

Следующие API позволяют программно управлять интеграцией региональных виртуальных сетей.

  • Azure CLI. Используйте команды az functionapp vnet-integration для добавления, перечисления или удаления интеграции региональной виртуальной сети.
  • Шаблоны ARM. Интеграцию региональной виртуальной сети можно включить с помощью шаблона Azure Resource Manager. Полный пример см. в этом шаблоне быстрого запуска функций.

Рекомендации по тестированию

При тестировании функций в приложении-функции с частными конечными точками необходимо выполнить тестирование из одной виртуальной сети, например на виртуальной машине в этой сети. Чтобы использовать параметр Code + Test на портале на этой виртуальной машине, необходимо добавить следующие источники CORS в приложение-функцию:

  • https://functions-next.azure.com
  • https://functions-staging.azure.com
  • https://functions.azure.com
  • https://portal.azure.com

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

  1. Перейдите к приложению-функции и выберите "Параметры>сети", а затем выберите "Входящий доступ к конфигурации>общедоступной сети".

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

  3. Добавьте правило в разделе "Доступ к сайту" и правила:

    1. Выберите Service Tag в качестве типа параметров источника и AzureCloud в качестве тега службы.

    2. Убедитесь, что действие разрешено, и задайте требуемое имя и приоритет.

Устранение неполадок

Эта функция просто настраивается, но это не гарантирует отсутствия проблем при ее использовании. При возникновении проблем с доступом к нужной конечной точке можно воспользоваться некоторыми служебными программами для проверки подключения из консоли приложения. Вы можете использовать две консоли: одной из таких консолей является Kudu, а другая консоль находится на портале Azure. Чтобы открыть консоль Kudu из приложения, выберите последовательно пункты Инструменты>Kudu. Доступ к консоли Kudu можно также получить по адресу [sitename].scm.azurewebsites.net. После загрузки веб-сайта перейдите на вкладку Консоль отладки. Чтобы получить доступ к консоли на портале Azure из приложения, перейдите по пунктам Инструменты>Консоль.

Инструменты

В собственных приложениях Windows такие инструменты, как ping, nslookup и tracert не будут работать в консоли из-за ограничений безопасности (они работают в пользовательских контейнерах Windows). Для устранения этого недостатка добавлены два других инструмента. Для проверки работоспособности DNS добавлен инструмент с именем nameresolver.exe. Синтаксис:

nameresolver.exe hostname [optional: DNS Server]

Для проверки имен узлов, которые использует ваше приложение, можно использовать команду nameresolver. Таким образом можно обнаруживать ошибки в настройке DNS-сервера или проблемы с доступом к DNS-серверу. DNS-сервер, используемый приложением, можно посмотреть в консоли с помощью переменных среды WEBSITE_DNS_SERVER и WEBSITE_DNS_ALT_SERVER.

Примечание.

Средство nameresolver.exe в настоящее время не работает в пользовательских контейнерах Windows.

Чтобы проверить TCP-подключение по комбинации "узел: порт", можно воспользоваться следующим инструментом. Этот инструмент называется tcpping.exe и использует следующий синтаксис.

tcpping.exe hostname [optional: port]

Служебная программа tcpping сообщает, возможно ли получить доступ к определенному узлу и порту. Сообщение об успешном выполнении отображается только с том случае, когда приложение ожидает передачи данных по комбинации "узел: порт", а также есть доступ по сети из приложения к указанным узлу и порту.

Доступ для отладки к ресурсам, размещенным в виртуальной сети

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

  • Брандмауэр блокирует доступ. Если используется брандмауэр, может быть превышено время ожидания для протокола TCP. В нашем случае это 21 секунда. Проверьте подключение с помощью средства tcpping. Время ожидания для протокола TCP может быть превышено и по многим другим причинам, но начать стоит именно с этой.
  • Служба DNS недоступна. Время ожидания для DNS составляет 3 секунды на каждый DNS-сервер. Если у вас два DNS-сервера, то время ожидания составляет 6 секунд. Используйте средство nameresolver для проверки работы DNS. Инструмент nslookup нельзя использовать, так как он игнорирует настройки DNS для виртуальной сети. Если DNS-сервер недоступен, возможно, что он либо заблокирован брандмауэром или NSG, либо не работает.

Если эти рекомендации не помогут вам решить проблему, проверьте еще несколько факторов:

Интеграция региональной виртуальной сети

  • Ваш целевой адрес не соответствует требованиям RFC1918, а параметр Маршрутизировать весь трафик не включен?
  • Блокируется ли исходящий трафик из вашей подсети интеграции с помощью NSG?
  • Если вы работаете через Azure ExpressRoute или VPN, настроена ли на вашем локальном шлюзе обратная маршрутизация трафика для Azure? Если к конечным точкам в виртуальной сети вы можете получить доступ, а в локальной среде нет, то следует проверить настройку маршрутов.
  • Имеются ли у вас достаточные разрешения для настройки делегирования в подсети интеграции? Во время настройки интеграции с региональной виртуальной сетью ваша подсеть интеграции делегируется ресурсу Microsoft.Web/serverFarms. Пользовательский интерфейс интеграции с виртуальной сетью делегирует подсеть ресурсу Microsoft.Web/serverFarms автоматически. Если у вашей учетной записи нет достаточных сетевых разрешений для настройки делегирования, вам следует обратиться к пользователю, который может задать в подсети интеграции атрибуты, необходимые для делегирования подсети. Чтобы вручную делегировать подсеть интеграции, перейдите в пользовательский интерфейс подсети виртуальной сети Azure и задайте делегирование для ресурса Microsoft.Web/serverFarms.

Интеграция с виртуальной сетью на базе шлюза

  • Находится ли диапазон адресов "точка — сеть" в диапазонах, предусмотренных требованиями RFC 1918 (10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255)?
  • Отображается ли на портале шлюз как работающий? Если шлюз не работает, восстановите его работоспособность.
  • Отображаются ли сертификаты как синхронизированные или можно предположить, что конфигурация сети была изменена? Если сертификаты не синхронизированы или вы предполагаете, что в конфигурацию виртуальной сети были внесены изменения, не синхронизированные с планами ASP, выберите Синхронизировать сеть.
  • Если вы работаете через VPN, настроена ли на вашем локальном шлюзе обратная маршрутизация трафика для Azure? Если к конечным точкам в виртуальной сети вы можете получить доступ, а в локальной среде нет, то следует проверить настройку маршрутов.
  • Вы используете шлюз с реализацией совместной работы, поддерживающий сразу два таких варианта, как "точка — сеть" и ExpressRoute? Шлюзы с режимом сосуществования не поддерживаются при интеграции с виртуальной сетью.

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

  • На узле запущен брандмауэр, который блокирует доступ к порту приложения для диапазона IP-адресов "точка — сеть". Для реализации подключения между подсетями часто требуется разрешить общий доступ.
  • Целевой узел не работает.
  • Приложение не работает.
  • Указан неверный IP-адрес или неверное имя узла.
  • Приложение ожидает передачи данных не по тому порту, который предполагается. Вы можете сопоставить ИД процесса с портом прослушивания при помощи команды "netstat -aon" в узле конечной точки.
  • Группы безопасности сети настроены на блокирование доступа к узлу и порту приложения для диапазона IP-адресов "точка — сеть".

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

Можно выполнить дополнительные действия по отладке:

  • Войдите на виртуальную машину в вашей виртуальной сети и попробуйте из нее обратиться к нужной комбинации "узел: порт". Чтобы проверить доступ TCP, используйте команду PowerShell Test-NetConnection. Синтаксис:
Test-NetConnection hostname [optional: -Port]
  • Откройте приложение на виртуальной машине и проверьте из консоли приложения доступ к узлу и порту с помощью инструмента tcpping.

Локальные ресурсы

Если приложение не может перейти к ресурсу локально, проверьте, можно ли перейти к ресурсу через виртуальную сеть. Чтобы проверить доступ по протоколу TCP, используйте команду PowerShell Test-NetConnection. Если виртуальная машина не может подключиться к локальному ресурсу, возможно, неправильно настроено подключение VPN или ExpressRoute.

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

  • Не настроена маршрутизация для подсети или для диапазонов адресов подключений "точка — сеть" в локальном шлюзе.
  • Группы безопасности сети блокируют доступ к диапазону IP-адресов подключений "точка — сеть".
  • Локальные брандмауэры блокируют трафик из диапазона IP-адресов подключений "точка — сеть".
  • Вы пытаетесь обратиться к адресу, не соответствующему требованиям RFC 1918, используя возможности интеграции с региональной виртуальной сетью.

Удаление плана службы приложений или веб-приложения перед отключением интеграции с виртуальной сетью

Если вы удалили веб-приложение или план службы приложений без предварительного отключения интеграции с виртуальной сетью, то не сможете выполнять операции обновления или удаления в виртуальной сети или подсети, которая использовалась для интеграции с удаленным ресурсом. Делегирование подсети "Microsoft.Web/serverFarms" по-прежнему останется назначенным вашей подсети и будет препятствовать операциям обновления и удаления.

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

  1. Повторно создайте план службы приложений и веб-приложение (обязательно используйте точно такое же имя веб-приложения, как и раньше).
  2. Перейдите в колонку "Сеть" в веб-приложении и настройте интеграцию с виртуальной сетью.
  3. После настройки интеграции с виртуальной сетью нажмите кнопку "Отключить".
  4. Удалите план службы приложений или веб-приложение.
  5. Обновите или удалите подсеть или виртуальную сеть.

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

Средство устранения неполадок сети

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

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

Снимок экрана: средство устранения неполадок с подключением.

Проблемы с конфигурацией. Этот средство устранения неполадок проверяет допустимость подсети для интеграции виртуальной сети.

Снимок экрана: средство устранения неполадок с конфигурацией.

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

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

Дополнительные сведения о сети и Функциях Azure: