Краткое руководство. Диагностика проблемы фильтра сетевого трафика виртуальной машины с помощью Azure CLI
В этом кратком руководстве вы развертываете виртуальную машину и используете Наблюдатель за сетями IP-поток проверки подключения к разным IP-адресам и из разных IP-адресов. Используя результаты проверки IP-потока, вы определяете правило безопасности, блокирующее трафик и вызывающее сбой связи, и узнайте, как его можно устранить. Вы также узнаете, как использовать действующие правила безопасности для сетевого интерфейса, чтобы определить, почему правило безопасности разрешает или запрещает трафик.
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Необходимые компоненты
Учетная запись Azure с активной подпиской.
Azure Cloud Shell или Azure CLI
Действия, описанные в этой статье, выполняют команды Azure CLI интерактивно в Azure Cloud Shell. Чтобы выполнить команды в Cloud Shell, выберите Open Cloud Shell в правом верхнем углу блока кода. Выберите "Копировать ", чтобы скопировать код и вставить его в Cloud Shell, чтобы запустить его. Вы также можете запустить Cloud Shell из портал Azure.
Вы также можете установить Azure CLI локально для выполнения команд. Для работы с этим кратким руководством требуется Azure CLI версии 2.0 или более поздней. При локальном запуске Azure CLI войдите в Azure с помощью команды az login .
Создание виртуальной машины
В этом разделе описано, как создать виртуальную сеть и подсеть в регионе "Восточная часть США". Затем вы создадите виртуальную машину в подсети с группой безопасности сети по умолчанию.
Создайте группу ресурсов, используя команду az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.
# Create a resource group. az group create --name 'myResourceGroup' --location 'eastus'
Создайте виртуальную сеть с помощью команды az network vnet create.
# Create a virtual network and a subnet. az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24
Создайте группу безопасности сети по умолчанию с помощью az network nsg create.
# Create a default network security group. az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
Создайте виртуальную машину с помощью команды az vm create. При появлении запроса введите имя пользователя и пароль.
# Create a Linux virtual machine using the latest Ubuntu 20.04 LTS image. az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest'
Проверка сетевого взаимодействия с помощью проверки IP-потока
В этом разделе описано, как проверить возможность Наблюдатель за сетями ip-потока для проверки сетевого взаимодействия с виртуальной машиной и из нее.
Используйте команду az network watcher test-ip-flow для проверки исходящего трафика от myVM до 13.107.21.200 с помощью проверки ПОТОКА IP (
13.107.21.200
является одним из общедоступных IP-адресов, используемыхwww.bing.com
):# Start the IP flow verify session to test outbound flow to www.bing.com. az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '13.107.21.200:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Через несколько секунд вы получите аналогичные выходные данные в следующем примере:
Access RuleName ------ -------- Allow defaultSecurityRules/AllowInternetOutBound
Результат теста указывает, что доступ разрешен к 13.107.21.200 из-за правила безопасности AllowInternetOutBound по умолчанию. По умолчанию виртуальные машины Azure могут получить доступ к Интернету.
Измените RemoteIPAddress на 10.0.1.10 и повторите тест. 10.0.1.10 — это частный IP-адрес в адресном пространстве myVNet .
# Start the IP flow verify session to test outbound flow to 10.0.1.10. az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.0.1.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Через несколько секунд вы получите аналогичные выходные данные в следующем примере:
Access RuleName ------ -------- Allow defaultSecurityRules/AllowVnetOutBound
Результат второго теста указывает, что доступ разрешен к 10.0.1.10 из-за правила безопасности AllowVnetOutBound по умолчанию. По умолчанию виртуальная машина Azure может получить доступ ко всем IP-адресам в адресном пространстве своей виртуальной сети.
Измените RemoteIPAddress на 10.10.10.10 и повторите тест. 10.10.10 — это частный IP-адрес, который не находится в адресном пространстве myVNet .
# Start the IP flow verify session to test outbound flow to 10.10.10.10. az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.10.10.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Через несколько секунд вы получите аналогичные выходные данные в следующем примере:
Access RuleName ------ -------- Allow defaultSecurityRules/DenyAllOutBound
Результат третьего теста указывает, что доступ запрещен в 10.10.10.10 из-за правила безопасности DenyAllOutBound по умолчанию.
Измените направление на входящий трафик, локальный порт на 80 и удаленный порт на 60000, а затем повторите тест.
# Start the IP flow verify session to test inbound flow from 10.10.10.10. az network watcher test-ip-flow --direction 'inbound' --protocol 'TCP' --local '10.0.0.4:80' --remote '10.10.10.10:6000' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Через несколько секунд вы получите аналогичные выходные данные в следующем примере:
Access RuleName ------ -------- Allow defaultSecurityRules/DenyAllInBound
Результат четвертого теста указывает, что доступ запрещен в версии 10.10.10.10 из-за правила безопасности DenyAllInBound по умолчанию. По умолчанию доступ ко всей виртуальной машине Azure за пределами виртуальной сети запрещен.
Просмотр сведений о правиле безопасности
Чтобы определить, почему правила в предыдущем разделе разрешают или запрещают обмен данными, просмотрите действующие правила безопасности сетевого интерфейса виртуальной машины myVM с помощью команды az network nic list-effective-nsg :
# Get the effective security rules for the network interface of myVM.
az network nic list-effective-nsg --resource-group 'myResourceGroup' --name 'myVmVMNic'
Возвращаемые выходные данные содержат следующие сведения для правила AllowInternetOutbound , разрешающего исходящий доступ к www.bing.com
:
{
"access": "Allow",
"destinationAddressPrefix": "Internet",
"destinationAddressPrefixes": [
"Internet"
],
"destinationPortRange": "0-65535",
"destinationPortRanges": [
"0-65535"
],
"direction": "Outbound",
"expandedDestinationAddressPrefix": [
"1.0.0.0/8",
"2.0.0.0/7",
"4.0.0.0/9",
"4.144.0.0/12",
"4.160.0.0/11",
"4.192.0.0/10",
"5.0.0.0/8",
"6.0.0.0/7",
"8.0.0.0/7",
"11.0.0.0/8",
"12.0.0.0/8",
"13.0.0.0/10",
"13.64.0.0/11",
"13.104.0.0/13",
"13.112.0.0/12",
"13.128.0.0/9",
"14.0.0.0/7",
...
...
...
"200.0.0.0/5",
"208.0.0.0/4"
],
"name": "defaultSecurityRules/AllowInternetOutBound",
"priority": 65001,
"protocol": "All",
"sourceAddressPrefix": "0.0.0.0/0",
"sourceAddressPrefixes": [
"0.0.0.0/0",
"0.0.0.0/0"
],
"sourcePortRange": "0-65535",
"sourcePortRanges": [
"0-65535"
]
},
В выходных данных, которые префикс адреса 13.104.0.0/13 входит в число префиксов адреса правила AllowInternetOutBound. Этот префикс охватывает IP-адрес 13.107.21.200, который использовался для тестирования исходящего взаимодействия www.bing.com
.
Аналогичным образом можно проверить другие правила, чтобы просмотреть префиксы исходного и целевого IP-адресов в каждом правиле.
Очистка ресурсов
Если больше не требуется, используйте az group delete для удаления группы ресурсов myResourceGroup и всех ресурсов, содержащихся в ней:
# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes