Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из этой статьи вы узнаете, как диагностировать проблемы с фильтрацией сетевого трафика для виртуальной машины. Процесс включает просмотр эффективных правил безопасности, применяемых группой безопасности сети (NSG).
Группы NSG позволяют управлять типами входящего и исходящего трафика виртуальной машины. Вы можете связать NSG с подсетью в виртуальной сети Azure и (или) с сетевым интерфейсом, присоединенным к виртуальной машине. Действующие правила безопасности, применяемые к сетевому интерфейсу, представляют собой комбинацию правил безопасности в группе NSG, присоединенной к сетевому интерфейсу и подсети, в которой он находится. Правила в разных группах безопасности сети иногда конфликтуют друг с другом и влияют на сетевое подключение виртуальной машины. Вы можете просмотреть все действующие правила безопасности из NSG, применяемых к интерфейсам виртуальной машины в сети. Если вы не знакомы с упоминающимися здесь понятиями, см. общие сведения о виртуальных сетях, сетевом интерфейсе и группах безопасности сети.
Сценарий
При попытке подключения к виртуальной машине через порт 80 из Интернета происходит сбой соединения. Чтобы определить, почему не удается получить доступ к порту 80 из Интернета, вы можете просмотреть правила безопасности для сетевого интерфейса с помощью портала Azure, PowerShell или Azure CLI.
Для выполнения следующих действий предполагается, что у вас уже есть виртуальная машина, для которой можно просмотреть эффективные правила безопасности. Если у вас ее нет, разверните виртуальную машину Linux или Windows для выполнения задач, описанных в этой статье. Примеры в этой статье относятся к виртуальной машине myVM с сетевым интерфейсом myVMVMNic. Виртуальная машина и сетевой интерфейс находятся в группе ресурсов myResourceGroup в регионе Восточная часть США. Измените значения в шагах, как это уместно, для виртуальной машины, для которую вы диагностировали проблему.
Диагностика с помощью портала Azure
Войдите на портал Azure с помощью учетной записи Azure, которая предоставляет необходимые разрешения.
В верхней части окна портала Azure введите в поле поиска имя виртуальной машины. Когда в результатах поиска появится имя виртуальной машины, щелкните его.
Разверните сеть в левой области. Выберите параметры сети. На следующих рисунках показаны параметры группы безопасности сети для сетевого интерфейса виртуальной машины.
Правила, которые вы видите на предыдущих цифрах, предназначены для сетевого интерфейса с именем vm-1445. Вы видите, что для сетевого интерфейса существуют правила входящего порта из двух разных групп безопасности сети:
- nsg-subnet: связана с подсетью, в которую находится сетевой интерфейс.
- nsg-nic: связан с сетевым интерфейсом в виртуальной машине с именем vm-1445.
Правило с именем DenyAllInBound запрещает входящий трафик к виртуальной машине через порт 80 из Интернета, как указано в сценарии. В правиле указано значение 0.0.0.0/0 для источника, к которому относится Интернет. Правило с более высоким приоритетом (меньшее число), которое разрешает входящий трафик через порт 80, отсутствует. Чтобы разрешить входящий трафик к виртуальной машине через порт 80 из Интернета, см. раздел Решение проблемы. Дополнительные сведения о правилах безопасности и их применении в Azure см. в разделе Группы безопасности сети.
В нижней части рисунка также отображаются правила исходящего порта. Перечислены правила исходящего порта для сетевого интерфейса.
Хотя на рисунке показаны только четыре правила входящего трафика для каждой группы безопасности, в ваших группах безопасности сети может быть гораздо больше правил. На рисунке вы увидите VirtualNetwork в разделе Source и Destination и AzureLoadBalancer в разделе SOURCE. VirtualNetwork и AzureLoadBalancer являются тегами службы. Теги службы представляют группу префиксов IP-адресов, чтобы упростить создание правила безопасности.
Чтобы просмотреть действующие правила безопасности, выберите интерфейс в параметрах сети виртуальной машины. Перед продолжением убедитесь, что виртуальная машина работает.
В параметрах сетевого интерфейса разверните раздел "Справка", а затем выберите "Действующие правила безопасности".
В следующем примере показан пример сетевого интерфейса vm-1445, с выбранными эффективными правилами безопасности.
Перечислены те же правила, что и на этапе 3. Но есть различные вкладки для группы NSG, связанной с сетевым интерфейсом и подсетью. Как видите, отображаются только первые 50 правил. Чтобы скачать CSV-файл, который содержит все правила, выберите Скачать.
Предыдущие шаги показали правила безопасности сетевого интерфейса с именем vm-1445. Что делать, если у виртуальной машины есть два сетевых интерфейса? В этом примере к виртуальной машине подключено два сетевых интерфейса. Действующие правила безопасности могут быть индивидуальными для каждого сетевого интерфейса.
Чтобы просмотреть правила сетевого интерфейса vm-nic-2 , выберите его. Как показано в следующем примере, сетевой интерфейс имеет те же правила, связанные с подсетью, что и сетевой интерфейс vm-1445 , так как оба сетевых интерфейса находятся в одной подсети. Когда вы связываете NSG с подсетью, ее правила применяются ко всем сетевым интерфейсам в подсети.
В отличие от сетевого интерфейса vm-1445 , сетевой интерфейс vm-nic-2 не связан с ней группой безопасности сети. Каждому сетевому интерфейсу и каждой подсети может быть сопоставлена одна группа безопасности сети (NSG), либо NSG могут отсутствовать вовсе. С сетевыми интерфейсами или подсетями могут быть связаны одинаковые или разные NSG. Вы можете связать одну и ту же группу безопасности с любым выбранным числом сетевых интерфейсов или подсетей.
Хотя эффективные правила безопасности были просмотрены через виртуальную машину, их также можно просмотреть через отдельного пользователя.
- Сетевой интерфейс. Узнайте, как просмотреть сведения о сетевом интерфейсе.
- NSG. Узнайте, как просмотреть сведения об NSG.
Диагностика с помощью PowerShell
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. Перенос Azure PowerShell с AzureRM на Az.
Вы можете выполнить приведенные ниже команды в Azure Cloud Shell или с помощью PowerShell на своем компьютере. Azure Cloud Shell — это бесплатная интерактивная оболочка. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью. Если вы выполняете PowerShell на локальном компьютере, вам потребуется модуль Azure PowerShell 1.0.0 или более поздней версии. Выполните Get-Module -ListAvailable Az
на компьютере, чтобы получить сведения об установленной версии. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. Если вы используете PowerShell локально, вам также необходимо выполнить Connect-AzAccount
вход в Azure с учетной записью, которая имеет необходимые разрешения].
Получите действующие правила безопасности для сетевого интерфейса с помощью Get-AzEffectiveNetworkSecurityGroup. В следующем примере возвращаются эффективные правила безопасности для сетевого интерфейса с именем vm-nic, который находится в группе ресурсов под названием test-rg.
$Params = @{
NetworkInterfaceName = "vm-nic"
ResourceGroupName = "test-rg"
}
Get-AzEffectiveNetworkSecurityGroup @Params
Выходные данные возвращаются в формате JSON. Чтобы понять выходные данные, см. раздел Интерпретация выходных данных команды. Выходные данные возвращаются, только если группа NSG связана с сетевым интерфейсом и (или) с подсетью, в которой находится сетевой интерфейс. Виртуальная машина должна быть запущена. У виртуальной машины может быть несколько сетевых интерфейсов с разными группами безопасности сети (NSG). При устранении неполадок выполните эту команду отдельно для каждого сетевого интерфейса.
Если у вас по-прежнему возникает проблема с подключением, ознакомьтесь с дополнительными рекомендациями по диагностике и устранению неполадок.
Если вы знаете только имя виртуальной машины, используйте следующие команды для перечисления всех идентификаторов сетевых интерфейсов, подключенных к виртуальной машине.
$Params = @{
Name = "vm-1"
ResourceGroupName = "test-rg"
}
$VM = Get-AzVM @Params
$VM.NetworkProfile
Вы получите примерно такой результат:
NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-nic
В предыдущих выходных данных имя сетевого интерфейса — vm-nic.
Диагностика с помощью Azure CLI
При использовании команд Azure CLI для решения задач в этой статье запускайте эти команды в Azure Cloud Shell или в Azure CLI на своем компьютере. Для этой статьи требуется Azure CLI 2.0.32 или более поздней версии. Выполните команду az --version
, чтобы узнать установленную версию. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0. Если Azure CLI работает локально, необходимо также выполнить команду az login
и войти в Azure с учетной записью, предоставляющей необходимые разрешения.
Получите эффективные правила безопасности для сетевого интерфейса с помощью az network nic list-effective-nsg. В следующем примере получены действующие правила безопасности для сетевого интерфейса с именем vm-nic, который находится в группе ресурсов с именем test-rg.
az network nic list-effective-nsg \
--name vm-nic \
--resource-group test-rg
Выходные данные возвращаются в формате JSON. Чтобы понять выходные данные, см. раздел Интерпретация выходных данных команды. Выходные данные возвращаются только в том случае, если группа NSG связана с сетевым интерфейсом, с подсетью, в которой находится сетевой интерфейс, или с обоими. Виртуальная машина должна быть запущена. У виртуальной машины может быть несколько сетевых интерфейсов с различными сетевыми группами безопасности. При устранении неполадок выполните эту команду отдельно для каждого сетевого интерфейса.
Если у вас по-прежнему возникает проблема с подключением, ознакомьтесь с дополнительными рекомендациями по диагностике и устранению неполадок.
Если вы знаете только имя виртуальной машины, используйте следующие команды для перечисления всех идентификаторов сетевых интерфейсов, подключенных к виртуальной машине.
az vm show \
--name vm-1 \
--resource-group test-rg
В возвращенном результате отобразятся примерно такие сведения:
"networkProfile": {
"additionalProperties": {},
"networkInterfaces": [
{
"additionalProperties": {},
"id": "/subscriptions/<ID>/resourceGroups/test-rg/providers/Microsoft.Network/networkInterfaces/vm-nic",
"primary": true,
"resourceGroup": "test-rg"
},
В предыдущих выходных данных имя сетевого интерфейса — vm-nic
Интерпретация выходных данных команды
Если для диагностики проблемы используется PowerShell или Azure CLI, результат выполнения команды содержит следующие сведения:
- NetworkSecurityGroup — идентификатор группы безопасности сети.
- Связь: Указывает, связана ли группа безопасности сети с сетевым интерфейсом или подсетью. Если статус ассоциации группы безопасности сети изменится прямо перед выполнением команды, подождите несколько секунд, чтобы выходные данные отразили обновление.
- EffectiveSecurityRules — каждое свойство подробно описано в разделе о создании правила безопасности. Правила, имена которых начинаются с defaultSecurityRules/ — это правила по умолчанию, которые установлены в каждой группе NSG. Имена правил, начинающиеся с securityRules/ создаются пользователем. Правила, определяющие теги служб, такие как Internet, VirtualNetwork и AzureLoadBalancer, для свойств destinationAddressPrefix или sourceAddressPrefix, также имеют значения для свойства expandedDestinationAddressPrefix. Свойство expandedDestinationAddressPrefix предназначено для перечисления всех префиксов адресов, представленных тегом службы.
Повторяющиеся правила отображаются в выходных данных, когда группа безопасности сети связана как с сетевым интерфейсом, так и с подсетью. Правила по умолчанию и любые пользовательские правила, общие для групп безопасности сети (NSG), вызывают эти дубли.
Правило с именем defaultSecurityRules/DenyAllInBound запрещает входящий трафик к виртуальной машине через порт 80 из Интернета, как указано в сценарии. Правило с более высоким приоритетом (меньшее число), которое разрешает входящий трафик через порт 80 из Интернета, отсутствует.
Решение проблемы
Вы можете диагностировать проблему, описанную в сценарии , с помощью портала Azure, PowerShell или Azure CLI. Решение состоит в создании правила безопасности сети со следующими свойствами:
Свойство | Значение |
---|---|
Оригинал | Любое |
Диапазоны исходных портов | Любое |
Назначение | IP-адрес виртуальной машины, диапазон IP-адресов или все адреса в подсети. |
Диапазоны портов назначения | 80 |
Протокол | TCP |
Действие | Разрешить |
Приоритет | 100 |
Имя. | Разрешить-HTTP-Все |
После создания правила порт 80 разрешен входящий трафик из Интернета, так как его приоритет выше правила DenyAllInBound по умолчанию. Если группы безопасности сети связаны как с сетевым интерфейсом, так и с подсетью, создайте одно правило в обеих группах безопасности сети. Узнайте, как создать правило безопасности.
Когда Azure обрабатывает входящий трафик, он сначала обрабатывает правила в группе безопасности сети, связанной с подсетью (если такая группа безопасности сети существует), а затем обрабатывает правила в группе безопасности сети, связанной с сетевым интерфейсом. Если есть группа безопасности сети, связанная с сетевым интерфейсом и подсетью, порт должен быть открыт в обоих группах безопасности сети, чтобы трафик достиг виртуальной машины. Чтобы упростить решение проблем с администрированием и обменом данными, рекомендуем связать NSG с подсетью, а не с отдельными сетевыми интерфейсами. Если для виртуальных машин в подсети требуются разные правила безопасности, можно сделать сетевые интерфейсы членами группы безопасности приложения (ASG) и указать ASG в качестве источника и назначения для правила безопасности. Дополнительные сведения см. в статье о группах безопасности приложений.
Если у вас по-прежнему возникают проблемы с общением, ознакомьтесь с соображениями и дополнительной диагностикой.
Рекомендации
При устранении проблем с подключением необходимо учитывать следующие аспекты:
Правила безопасности по умолчанию блокируют входящий доступ из Интернета. Разрешается только входящий трафик из виртуальной сети. Чтобы разрешить входящий трафик из Интернета, добавьте правила безопасности с более высоким приоритетом, чем у правил по умолчанию. См. дополнительные сведения о правилах безопасности по умолчанию и о том, как добавить правило безопасности.
По умолчанию для одноранговых виртуальных сетей тег службы VIRTUAL_NETWORK автоматически расширяется, чтобы включить префиксы для одноранговых виртуальных сетей. Устранить неполадки, связанные с пирингом между виртуальными сетями, можно с помощью сведений о префиксах в списке ExpandedAddressPrefix. См. дополнительные сведения о пиринге виртуальных сетей и тегах служб.
Azure показывает только действующие правила безопасности для сетевого интерфейса, если с сетевым интерфейсом или подсетью виртуальной машины связана группа безопасности сети (NSG). Кроме того, виртуальная машина должна находиться в состоянии выполнения.
Если сетевой интерфейс или подсеть не имеет связанной группы безопасности сети, все порты остаются открытыми для входящего и исходящего доступа при наличии у виртуальной машины общедоступного IP-адреса. Эта конфигурация обеспечивает неограниченный доступ к и из любого места. Чтобы защитить виртуальную машину, примените группу безопасности сети к подсети, в котором размещен сетевой интерфейс, если он имеет общедоступный IP-адрес.
Дополнительные диагностики
- Чтобы быстро проверить, разрешен ли входящий или исходящий трафик виртуальной машины, воспользуйтесь функцией проверки IP-потока в Наблюдателе за сетями Azure. Проверка IP-потока покажет, разрешен или запрещен трафик. Если трафик запрещен, с помощью проверки IP-потока можно узнать, какое правило безопасности блокирует трафик.
- Если нет правил безопасности, вызывающих сбой сетевого подключения виртуальной машины, может возникнуть проблема:
- Брандмауэр, запущенный в операционной системе виртуальной машины.
- Маршруты, настроенные для виртуальных устройств или локального трафика. Интернет-трафик перенаправляется в вашу локальную сеть путем принудительного туннелирования. При принудительном туннелировании интернет-трафика в виртуальный модуль или локальное расположение иногда не удается подключиться к виртуальной машине из Интернета. Чтобы узнать, как диагностировать проблемы маршрутизации, которые могут препятствовать потоку трафика из виртуальной машины, см. статью "Диагностика проблемы маршрутизации сетевого трафика виртуальной машины".
Следующие шаги
- См. дополнительные сведения обо всех задачах, свойствах и параметрах для группы безопасности сети и правил безопасности.
- См. сведения о правилах безопасности по умолчанию, тегах служб и о том, как в Azure обрабатываются правила безопасности для входящего и исходящего трафика виртуальной машины.