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


Устранение неполадок интеграции виртуальной сети со службой приложений Azure

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

Примечание.

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

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

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

Для этого используйте один из следующих методов.

Проверка частного IP-адреса в консоли отладки Kudu

Чтобы получить доступ к консоли Kudu, выберите службу приложений в портал Azure, перейдите в раздел "Средства разработки", выберите "Дополнительные инструменты" и нажмите кнопку "Перейти". На странице службы Kudu выберите "Сервис>отладки консоли>CMD".

Снимок экрана: открытие страницы службы Kudu в портал Azure.

Вы также можете перейти в консоль отладки Kudu непосредственно по URL-адресу [sitename].scm.azurewebsites.net/DebugConsole.

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

Приложения на основе ОС Windows

SET WEBSITE_PRIVATE_IP

Если частный IP-адрес назначен успешно, вы получите следующие выходные данные:

WEBSITE_PRIVATE_IP=<IP address>

Приложения на основе ОС Linux

set| egrep --color 'WEBSITE_PRIVATE_IP'

Проверка частного IP-адреса в среде Kudu

Перейдите в среду [sitename].scm.azurewebsites.net/Env Kudu и выполните поиск WEBSITE_PRIVATE_IP.

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

Устранение неполадок с исходящим подключением в приложениях Windows

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

Перейдите в консоль Kudu непосредственно в [sitename].scm.azurewebsites.net/DebugConsole.

Для тестирования функциональных возможностей 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. Синтаксис имеет значение.

tcpping.exe hostname [optional: port]

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

Устранение неполадок с исходящим подключением в приложениях Linux

Перейдите в Kudu напрямую [sitename].scm.azurewebsites.net. На странице службы Kudu выберите "Сервис>отладки консоли>CMD".

Для проверки функциональности DNS можно использовать команду nslookup. Синтаксис:

nslookup hostname [optional:DNS Server]

В зависимости от приведенных выше результатов можно проверить, неправильно ли настроено на DNS-сервере.

Примечание.

В настоящее время средство nameresolver.exe не работает в приложениях Linux.

Для проверки подключения можно использовать команду Curl . Синтаксис:

curl -v https://hostname
curl hostname:[port]

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

Ряд факторов может препятствовать приложению достичь определенного узла и порта. Большую часть времени это одно из следующих:

  • Брандмауэр блокирует доступ. Если используется брандмауэр, может быть превышено время ожидания для протокола TCP. В нашем случае это 21 секунда. Проверьте подключение с помощью средства tcpping. Время ожидания для протокола TCP может быть превышено и по многим другим причинам, но начать стоит именно с этой.
  • Служба DNS недоступна. Время ожидания для DNS составляет три секунды на каждый DNS-сервер. Если у вас есть два DNS-сервера, время ожидания составляет шесть секунд. Используйте nameresolver, чтобы узнать, работает ли DNS. Не удается использовать nslookup, так как он не использует DNS, с которым настроена виртуальная сеть. Если это недоступно, у вас может быть брандмауэр или группа безопасности сети, блокирующая доступ к DNS, или она может быть отключена. Некоторые архитектуры DNS, использующие пользовательские DNS-серверы, могут быть сложными и иногда могут возникать время ожидания. Чтобы определить, является ли это так, можно задать переменную WEBSITE_DNS_ATTEMPTS среды. Дополнительные сведения о DNS в Служба приложений см. в разделе "Разрешение имен" (DNS) в Служба приложений.

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

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

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

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

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

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

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

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

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

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

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

Примечание.

Сценарий проблем с подключением пока не поддерживает приложения linux или контейнеры.

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

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

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

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

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

Снимок экрана, на котором показано, как запустить средство устранения неполадок при удалении подсети или виртуальной сети.

Сбор сетевых трассировок

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

Примечание.

Трафик виртуальной сети не фиксируется в трассировках сети.

Служба приложений Windows

Чтобы собрать трассировки сети для Служба приложений Windows, выполните следующие действия.

  1. В портал Azure перейдите к веб-приложению.
  2. В области навигации слева выберите " Диагностика и решение проблем".
  3. В поле поиска введите "Сбор сетевой трассировки" и выберите "Собрать сетевую трассировку", чтобы запустить коллекцию сетевой трассировки.

Снимок экрана: запись трассировки сети.

Чтобы получить файл трассировки для каждого экземпляра, обслуживаемого веб-приложением, в браузере перейдите в консоль Kudu для веб-приложения (https://<sitename>.scm.azurewebsites.net). Скачайте файл трассировки из папки C:\home\LogFiles\networktrace или D:\home\LogFiles\networktrace .

Служба приложений Linux

Чтобы собирать трассировки сети для Служба приложений Linux, которые не используют пользовательский контейнер, выполните следующие действия.

  1. Установите служебную программу командной tcpdump строки, выполнив следующие команды:

    apt-get update
    apt install tcpdump
    
  2. Подключитесь к контейнеру через протокол Secure Shell (SSH).

  3. Определите интерфейс, который выполняется и запущен, выполнив следующую команду (например, eth0):

    root@<hostname>:/home# tcpdump -D
    
    1.eth0 [Up, Running, Connected]
    2.any (Pseudo-device that captures on all interfaces) [Up, Running]
    3.lo [Up, Running, Loopback]
    4.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless]
    5.nflog (Linux netfilter log (NFLOG) interface) [none]
    6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
    7.dbus-system (D-Bus system bus) [none]
    8.dbus-session (D-Bus session bus) [none]
    
  4. Запустите коллекцию трассировки сети, выполнив следующую команду:

    root@<hostname>:/home# tcpdump -i eth0 -w networktrace.pcap
    

    Замените eth0 именем фактического интерфейса.

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

https://<sitename>.scm.azurewebsites.net/api/vfs/<path to the trace file in the /home directory>/filename

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.