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

В этой статье описана функция службы приложений Azure — интеграция с виртуальной сетью (VNet). Кроме того, приведены инструкции по ее настройке для приложений в Службе приложений Azure. Виртуальные сети Azure позволяют размещать многие ресурсы Azure в сети, недоступной из Интернета. Возможность "Интеграция с виртуальной сетью" позволяет приложениям получать доступ к ресурсам в виртуальной сети или через нее. Интеграция с виртуальной сетью не обеспечивает частный доступ к приложениям.

Служба приложений Azure реализована в виде двух моделей.

  • Мультитенантные системы с поддержкой всей линейки тарифных планов, кроме плана "Изолированный".
  • Среда службы приложений, которая развертывается в виртуальной сети и поддерживает приложения с планом "Изолированный".

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

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

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

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

  • Требуется тарифный план "Стандартный", "Премиум", "Премиум V2", "Премиум V3" или "Эластичный премиум".
  • Поддерживает TCP и UDP.
  • Работа с приложениями Службы приложений Azure и приложениями-функциями.

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

  • подключение диска;
  • Интеграция служб Active Directory с сервером Windows
  • NetBIOS.

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

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

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

  1. Откройте раздел интерфейса Сеть на портале Службы приложений. В разделе Интеграция виртуальной сети выберите Щелкните здесь для настройки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Требования к подсети

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

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

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

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

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

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

Маршруты

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

Маршрутизация приложений

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

Примечание

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

  • Параметр "Маршрутизировать все" в настоящее время не поддерживается в контейнерах Windows.

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

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

Параметр "Маршрутизировать все" включен

  1. Перейдите в пользовательский интерфейс Интеграция с виртуальной сетью на портале приложения.

  2. Установите для параметра Маршрутизировать все значение Отключено.

    Отключение параметра "Маршрутизировать все"

  3. Выберите ответ Да.

Также можно настроить параметр "Маршрутизировать все" с помощью интерфейса командной строки (примечание: минимальная необходимая версия az version — 2.27.0):

az webapp config set --resource-group myRG --name myWebApp --vnet-route-all-enabled [true|false]

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

Сетевая маршрутизация

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

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

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

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

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

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

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

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

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

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

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

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

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

Частные зоны Azure DNS

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

Примечание

Для приложений Linux частные зоны Azure DNS работают, только если включен параметр "Маршрутизировать все".

Ограничения

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

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

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

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

  • позволяет приложению в один момент времени подключаться только к одной виртуальной сети;
  • позволяет интегрировать до пяти виртуальных сетей в рамках плана службы приложений;
  • позволяет нескольким приложениям использовать одну виртуальную сеть в рамках плана службы приложений, не влияя на общее количество, доступное плану службы приложений (если у вас шесть приложений используют одну виртуальную сеть в рамках одного плана службы приложений, считается, что вы используете одну виртуальную сеть);
  • гарантирует практически постоянную доступность ресурсов (99,9 % по соглашению об уровне обслуживания) благодаря использованию шлюза;
  • позволяет вашим приложениям использовать параметры DNS, настроенные для виртуальной сети;
  • требует настройки сети VPN "точка — сеть" на базе SSTP для шлюза на основе маршрутов перед подключением к приложению.

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

  • для виртуальных сетей с подключением на базе Microsoft Azure ExpressRoute;
  • для приложений Linux;
  • для контейнеров Windows;
  • для доступа к защищенным ресурсам конечной точки службы.
  • в режиме сосуществования со шлюзом, который поддерживает как ExpressRoute, так и VPN типа "точка — сеть" или "сеть — сеть".

Настройка шлюза в виртуальной сети Azure

Создание шлюза:

  1. Создайте подсеть шлюза в виртуальной сети.

  2. Создайте VPN-шлюз. Выберите тип сети VPN на основе маршрутов.

  3. Задайте адреса для подключения "точка — сеть". Если шлюз не входит в базовый SKU, то в конфигурации подключения "точка — сеть" необходимо отключить IKEV2 и выбрать SSTP. Диапазон адресов подключения "точка — сеть" должен находиться в блоках адресов RFC 1918 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16.

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

Принципы интеграции с виртуальной сетью на базе шлюза

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

Принципы интеграции с виртуальной сетью на базе шлюза

Доступ к локальным ресурсам

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

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

Примечание

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

Пиринг

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

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

  1. Добавьте пиринговое подключение в виртуальную сеть, к которой подключается приложение. Добавляя пиринговое подключение, включите параметр Разрешить доступ к виртуальным сетям, а также установите флажки Разрешить перенаправленный трафик и Разрешить транзит шлюзов.
  2. Добавьте пиринговое подключение в виртуальной сети, соединенной с той виртуальной сетью, к которой вы подключены. Добавляя пиринговое подключение к целевой виртуальной сети, включите параметр Разрешить доступ к виртуальным сетям, а также установите флажки Разрешить перенаправленный трафик и Разрешить удаленные шлюзы.
  3. Перейдите в раздел План службы приложений > Сеть > Интеграция виртуальной сети на портале. Выберите виртуальную сеть, к которой подключается приложение. В разделе маршрутизации добавьте диапазон адресов виртуальной сети, для которой установлен пиринг с виртуальной сетью, к которой подключается ваше приложение.

Управление интеграцией виртуальной сети

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

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

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

  • Синхронизировать сеть. Операция синхронизации сети используется только при интеграции с виртуальной сетью на базе шлюза. Эта операция гарантирует, что сертификаты и сведения о сети будут синхронизированы. Если вы добавите или измените DNS виртуальной сети, необходимо выполнить операцию "Синхронизировать сеть". При ее выполнении перезапускаются все приложения, которые используют данную виртуальную сеть. Эта операция не работает для приложения и виртуальной сети, которые относятся к разным подпискам.
  • Добавить маршруты. При добавлении маршрутов исходящий трафик направляется в вашу виртуальную сеть.

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

Примечание

Значение WEBSITE_PRIVATE_IP привязано к изменению. Тем не менее этот IP-адрес будет находиться в диапазоне адресов подсети интеграции или диапазоне адресов подключения типа "точка — сеть", поэтому вам понадобится разрешить доступ из всего диапазона адресов.

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

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

Сертификаты при интеграции с виртуальной сетью на базе шлюза

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

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

Сведения о тарифах

Дополнительная плата за интеграцию с региональной виртуальной сетью (помимо стоимость плана службы приложений соответствующей ценовой категории) не взимается.

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

  • Расходы в рамках ценовой категории плана службы приложений. Приложение должно относиться к SKU одного из следующих планов службы приложений: "Стандартный", "Премиум", "Премиум V2" или "Премиум V3". Дополнительные сведения об этих ценах см. в разделе Цены для Службы приложений.
  • Расходы, связанные с передачей данных. За исходящий трафик взимается плата, даже если виртуальная сеть находится в том же центре обработки данных. Эти тарифы описаны в сведениях о ценах за передачу данных.
  • Расходы, связанные с использованием VPN-шлюза. Взимается плата за шлюз виртуальной сети, необходимый для сети VPN типа "точка — сеть". Дополнительные сведения см. на странице цен на VPN-шлюз.

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

Примечание

Интеграция с виртуальной сетью не поддерживается для сценариев Docker Compose в Службе приложений. При наличии частной конечной точки ограничения доступа для Функций Azure игнорируются.

Эта функция просто настраивается, но это не гарантирует отсутствия проблем при ее использовании. При возникновении проблем с доступом к нужной конечной точке можно воспользоваться некоторыми служебными программами для проверки подключения из консоли приложения. Вы можете использовать две консоли: одной из таких консолей является 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, используя возможности интеграции с региональной виртуальной сетью.

Служба автоматизации

Для интеграции с региональной виртуальной сетью поддерживается интерфейс командной строки (CLI). Для доступа к указанным ниже командам установите Azure CLI.

az webapp vnet-integration --help

Group
    az webapp vnet-integration : Methods that list, add, and remove virtual network
    integrations from a webapp.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    add    : Add a regional virtual network integration to a webapp.
    list   : List the virtual network integrations on a webapp.
    remove : Remove a regional virtual network integration from webapp.

Вы также можете воспользоваться поддержкой PowerShell для региональной интеграции виртуальной сети, но для этого вам понадобится создать универсальный ресурс с массивом свойства resourceID подсети.

# Parameters
$sitename = 'myWebApp'
$resourcegroupname = 'myRG'
$VNetname = 'myVNet'
$location = 'myRegion'
$integrationsubnetname = 'myIntegrationSubnet'
$subscriptionID = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'

# Property array with the SubnetID
$properties = @{
  subnetResourceId = "/subscriptions/$subscriptionID/resourceGroups/$resourcegroupname/providers/Microsoft.Network/virtualNetworks/$VNetname/subnets/$integrationsubnetname"
}

# Creation of the VNet Integration
$vNetParams = @{
  ResourceName = "$sitename/VirtualNetwork"
  Location = $location
  ResourceGroupName = $resourcegroupname
  ResourceType = 'Microsoft.Web/sites/networkConfig'
  PropertyObject = $properties
}
New-AzResource @vNetParams