Устранение неполадок интеграции виртуальной сети со службой приложений Azure
В этой статье описаны средства, которые можно использовать для устранения проблем с подключением в службе приложение Azure, которая интегрируется с виртуальной сетью.
Примечание.
Интеграция с виртуальной сетью не поддерживается для сценариев Docker Compose в Службе приложений. Политики ограничений доступа игнорируются, если частная конечная точка присутствует.
Проверка интеграции виртуальной сети
Чтобы устранить проблемы с подключением, сначала необходимо проверить правильность настройки интеграции виртуальной сети и назначать ли частный IP-адрес всем экземплярам плана Служба приложений.
Для этого используйте один из следующих методов.
Проверка частного IP-адреса в консоли отладки Kudu
Чтобы получить доступ к консоли Kudu, выберите службу приложений в портал Azure, перейдите в раздел "Средства разработки", выберите "Дополнительные инструменты" и нажмите кнопку "Перейти". На странице службы Kudu выберите "Сервис>отладки консоли>CMD".
Вы также можете перейти в консоль отладки 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. Выберите диагностику и решить проблему, а затем найдите средство устранения неполадок сети.
Примечание.
Сценарий проблем с подключением пока не поддерживает приложения linux или контейнеры.
Проблемы с подключением. Он проверяет состояние интеграции виртуальной сети, включая проверку того, назначен ли частный IP-адрес всем экземплярам плана Служба приложений и параметров DNS. Если настраиваемое DNS не настроено, будет применена служба Azure DNS по умолчанию. Вы также можете выполнять тесты с определенной конечной точкой, к которой требуется проверить подключение.
Проблемы с конфигурацией. Этот средство устранения неполадок проверяет допустимость подсети для интеграции виртуальной сети.
Проблема с удалением подсети или виртуальной сети. Этот средство устранения неполадок проверяет наличие блокировок подсети, а также наличие неиспользуемых ссылок связи служб, которые могут блокировать удаление виртуальной сети или подсети.
Сбор сетевых трассировок
Сбор сетевых трассировок может оказаться полезным при анализе проблем. В службах приложение Azure трассировка сети берется из процесса приложения. Чтобы получить точные сведения, воспроизвести проблему при запуске коллекции трассировки сети.
Примечание.
Трафик виртуальной сети не фиксируется в трассировках сети.
Служба приложений Windows
Чтобы собрать трассировки сети для Служба приложений Windows, выполните следующие действия.
- В портал Azure перейдите к веб-приложению.
- В области навигации слева выберите " Диагностика и решение проблем".
- В поле поиска введите "Сбор сетевой трассировки" и выберите "Собрать сетевую трассировку", чтобы запустить коллекцию сетевой трассировки.
Чтобы получить файл трассировки для каждого экземпляра, обслуживаемого веб-приложением, в браузере перейдите в консоль Kudu для веб-приложения (https://<sitename>.scm.azurewebsites.net
). Скачайте файл трассировки из папки C:\home\LogFiles\networktrace или D:\home\LogFiles\networktrace .
Служба приложений Linux
Чтобы собирать трассировки сети для Служба приложений Linux, которые не используют пользовательский контейнер, выполните следующие действия.
Установите служебную программу командной
tcpdump
строки, выполнив следующие команды:apt-get update apt install tcpdump
Подключитесь к контейнеру через протокол Secure Shell (SSH).
Определите интерфейс, который выполняется и запущен, выполнив следующую команду (например,
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]
Запустите коллекцию трассировки сети, выполнив следующую команду:
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.