Szybki start: diagnozowanie problemu z filtrowaniem ruchu sieciowego maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure

W tym przewodniku Szybki start wdrożysz maszynę wirtualną i użyjesz weryfikacji przepływu adresów IP usługi Network Watcher, aby przetestować łączność z różnymi adresami IP i. Korzystając z wyników weryfikacji przepływu adresów IP, należy określić regułę zabezpieczeń blokującą ruch i powodując błąd komunikacji i dowiedzieć się, jak można go rozwiązać. Dowiesz się również, jak używać obowiązujących reguł zabezpieczeń dla interfejsu sieciowego, aby określić, dlaczego reguła zabezpieczeń zezwala na ruch lub odmawia go.

Diagram przedstawia zasoby utworzone w przewodniku Szybki start usługi Network Watcher.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją.

  • Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure.

    Kroki opisane w tym artykule umożliwiają interaktywne uruchamianie poleceń interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz usługę Cloud Shell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod i wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal.

    Możesz również zainstalować interfejs wiersza polecenia platformy Azure lokalnie , aby uruchomić polecenia. Ten przewodnik Szybki start wymaga wersji 2.0 lub nowszej interfejsu wiersza polecenia platformy Azure. Jeśli uruchomisz interfejs wiersza polecenia platformy Azure lokalnie, zaloguj się do platformy Azure przy użyciu polecenia az login .

Tworzenie maszyny wirtualnej

W tej sekcji utworzysz sieć wirtualną i podsieć w regionie Wschodnie stany USA. Następnie utworzysz maszynę wirtualną w podsieci z domyślną sieciową grupą zabezpieczeń.

  1. Utwórz grupę zasobów za pomocą polecenia az group create. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.

    # Create a resource group.
    az group create --name 'myResourceGroup' --location 'eastus'
    
  2. Utwórz sieć wirtualną przy użyciu polecenia 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 
    
  3. Utwórz domyślną sieciową grupę zabezpieczeń przy użyciu polecenia az network nsg create.

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    
  4. Utwórz maszynę wirtualną przy użyciu polecenia az vm create. Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło.

    # 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'
    

Testowanie komunikacji sieciowej przy użyciu weryfikowania przepływu adresów IP

W tej sekcji użyjesz możliwości weryfikacji przepływu adresów IP usługi Network Watcher do testowania komunikacji sieciowej z maszyną wirtualną i z niego.

  1. Użyj polecenia az network watcher test-ip-flow, aby przetestować komunikację wychodzącą z maszyny wirtualnej myVM do 13.107.21.200 przy użyciu weryfikacji przepływu adresów IP (13.107.21.200 jest jednym z publicznych adresów IP używanych przez www.bing.comprogram ):

    # 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'
    

    Po kilku sekundach uzyskasz podobne dane wyjściowe do następującego przykładu:

    Access  RuleName
    ------  --------
    Allow   defaultSecurityRules/AllowInternetOutBound
    

    Wynik testu wskazuje, że dostęp może mieć wartość 13.107.21.200 z powodu domyślnej reguły zabezpieczeń AllowInternetOutBound. Domyślnie maszyny wirtualne platformy Azure mogą uzyskiwać dostęp do Internetu.

  2. Zmień wartość RemoteIPAddress na 10.0.1.10 i powtórz test. 10.0.1.10 to prywatny adres IP w przestrzeni adresowej 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'
    

    Po kilku sekundach uzyskasz podobne dane wyjściowe do następującego przykładu:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/AllowVnetOutBound
    

    Wynik drugiego testu wskazuje, że dostęp może mieć wartość 10.0.1.10 z powodu domyślnej reguły zabezpieczeń AllowVnetOutBound. Domyślnie maszyna wirtualna platformy Azure może uzyskiwać dostęp do wszystkich adresów IP w przestrzeni adresowej sieci wirtualnej.

  3. Zmień wartość RemoteIPAddress na 10.10.10.10 i powtórz test. 10.10.10.10 to prywatny adres IP, który nie znajduje się w przestrzeni adresowej 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'
    

    Po kilku sekundach uzyskasz podobne dane wyjściowe do następującego przykładu:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllOutBound
    

    Wynik trzeciego testu wskazuje, że odmowa dostępu do wersji 10.10.10.10.10 ze względu na domyślną regułę zabezpieczeń DenyAllOutBound.

  4. Zmień kierunek na przychodzący, port lokalny na 80, a port zdalny na 60000, a następnie powtórz test.

    # 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'
    

    Po kilku sekundach uzyskasz podobne dane wyjściowe do następującego przykładu:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllInBound
    

    Wynik czwartego testu wskazuje, że odmowa dostępu z wersji 10.10.10.10.10 ze względu na domyślną regułę zabezpieczeń DenyAllInBound. Domyślnie cały dostęp do maszyny wirtualnej platformy Azure spoza sieci wirtualnej jest blokowany.

Wyświetlanie szczegółów reguły zabezpieczeń

Aby określić, dlaczego reguły w poprzedniej sekcji zezwalają na komunikację lub odmawiają komunikacji, przejrzyj obowiązujące reguły zabezpieczeń dla interfejsu sieciowego maszyny wirtualnej myVM przy użyciu polecenia 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'

Zwrócone dane wyjściowe zawierają następujące informacje dotyczące reguły AllowInternetOutbound , która zezwalała na dostęp wychodzący do elementu 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"
  ]
},

W danych wyjściowych można zobaczyć, że prefiks adresu 13.104.0.0/13 znajduje się wśród prefiksów adresów reguły AllowInternetOutBound. Ten prefiks obejmuje adres IP 13.107.21.200, który został wykorzystany do przetestowania komunikacji wychodzącej z usługą www.bing.com.

Podobnie możesz sprawdzić inne reguły, aby wyświetlić prefiksy źródłowych i docelowych adresów IP w każdej regule.

Czyszczenie zasobów

Gdy grupa zasobów myResourceGroup nie jest już potrzebna, użyj polecenia az group deletei wszystkich zawartych w niej zasobów:

# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes

Następne kroki

W tym przewodniku Szybki utworzono maszynę wirtualną i zdiagnozowano filtry przychodzącego i wychodzącego ruchu sieciowego. Wiesz już, że reguły sieciowej grupy zabezpieczeń zezwalają na lub blokują ruch do i z maszyny wirtualnej. Dowiedz się więcej o regułach zabezpieczeń oraz tworzeniu reguł zabezpieczeń.

Nawet w przypadku odpowiednich filtrów ruchu sieciowego komunikacja z maszyną wirtualną może nadal wieść się niepowodzeniem z powodu konfiguracji routingu. Aby dowiedzieć się, jak diagnozować problemy z routingiem maszyn wirtualnych, zobacz Diagnozowanie problemu z routingiem sieciowym maszyny wirtualnej. Aby zdiagnozować problemy z routingiem, opóźnieniem i filtrowaniem ruchu wychodzącego za pomocą jednego narzędzia, zobacz Rozwiązywanie problemów z połączeniami z usługą Azure Network Watcher.