빠른 시작: Azure PowerShell을 사용하여 가상 머신 네트워크 트래픽 필터 문제 진단

이 빠른 시작에서는 가상 머신을 배포하고 Network Watcher IP 흐름 확인을 사용하여 다른 IP 주소와의 연결을 테스트합니다. IP 흐름 확인 결과를 사용하여 트래픽을 차단하고 통신 실패를 일으키는 보안 규칙을 확인하고 이를 해결하는 방법을 알아봅니다. 네트워크 인터페이스에 대한 효과적인 보안 규칙을 사용하여 보안 규칙이 트래픽을 허용하거나 거부하는 이유를 확인하는 방법도 알아봅니다.

Network Watcher 빠른 시작에서 만든 리소스를 보여 주는 다이어그램

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

필수 조건

  • 활성 구독이 있는 Azure 계정.

  • Azure Cloud Shell 또는 Azure PowerShell.

    이 문서의 단계에서는 Azure Cloud Shell에서 Azure PowerShell cmdlet을 대화형으로 실행합니다. Cloud Shell에서 명령을 실행하려면 코드 블록의 오른쪽 위 모서리에서 Cloud Shell을 엽니다. 복사를 선택하여 코드를 복사한 다음, 복사한 코드를 Cloud Shell에 붙여넣어 실행합니다. Azure Portal 내에서 Cloud Shell을 실행할 수도 있습니다.

    Azure PowerShell을 로컬로 설치하여 cmdlet을 실행할 수도 있습니다. 이 빠른 시작에는 Az PowerShell 모듈이 필요합니다. 자세한 내용은 Azure PowerShell 설치 방법을 참조하세요. 설치되어 있는 버전을 확인하려면 Get-InstalledModule -Name Az을 실행합니다. PowerShell을 로컬로 실행하는 경우 Connect-AzAccount cmdlet을 사용하여 Azure에 로그인합니다.

가상 머신 만들기

이 섹션에서는 미국 동부 지역에 가상 네트워크와 서브넷을 만듭니다. 그런 다음, 기본 네트워크 보안 그룹을 사용하여 서브넷에 가상 머신을 만듭니다.

  1. New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다.

    # Create a resource group.
    New-AzResourceGroup -Name 'myResourceGroup' -Location 'eastus' 
    
  2. New-AzVirtualNetworkSubnetConfig를 사용하여 가상 머신 서브넷과 Bastion 호스트 서브넷에 대한 서브넷 구성을 만듭니다.

    # Create subnets configuration.
    $Subnet = New-AzVirtualNetworkSubnetConfig -Name 'mySubnet' -AddressPrefix '10.0.0.0/24'
    
  3. New-AzVirtualNetwork를 사용하여 가상 네트워크를 만듭니다.

    # Create a virtual network.
    New-AzVirtualNetwork -Name 'myVNet' -ResourceGroupName 'myResourceGroup' -Location 'eastus' -AddressPrefix '10.0.0.0/16' -Subnet $Subnet
    
  4. New-AzNetworkSecurityGroup을 사용하여 기본 네트워크 보안 그룹을 만듭니다.

    # Create a network security group. 
    New-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup' -Location  'eastus'
    
  5. New-AzVM을 사용하여 가상 머신을 만듭니다. 메시지가 표시되면 사용자 이름과 암호를 입력합니다.

    # Create a Linux virtual machine using the latest Ubuntu 20.04 LTS image.
    New-AzVm -ResourceGroupName 'myResourceGroup' -Name 'myVM' -Location 'eastus' -VirtualNetworkName 'myVNet' -SubnetName 'mySubnet' -SecurityGroupName 'myVM-nsg' -Image 'Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest'
    

IP 흐름 확인을 사용하여 네트워크 통신 테스트

이 섹션에서는 Network Watcher IP 흐름 확인 기능을 사용하여 가상 머신과 네트워크 통신을 테스트합니다.

  1. Test-AzNetworkWatcherIPFlow를 통해 IP 흐름 확인을 사용하여 myVM에서 13.107.21.200으로의 아웃바운드 통신을 테스트합니다(13.107.21.200www.bing.com에서 사용하는 공용 IP 주소 중 하나임).

    # Place myVM configuration into a variable.
    $vm = Get-AzVM -ResourceGroupName 'myResourceGroup' -Name 'myVM'
    
    # Start the IP flow verify session to test outbound flow to www.bing.com.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Outbound' -Protocol 'TCP' -RemoteIPAddress '13.107.21.200' -RemotePort '80' -LocalIPAddress '10.0.0.4' -LocalPort '60000'
    

    몇 초 후에 다음 예제와 비슷한 출력이 표시됩니다.

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

    테스트 결과는 기본 보안 규칙 AllowInternetOutBound로 인해 액세스가 13.107.21.200으로 허용됨을 나타냅니다. 기본적으로 Azure 가상 머신은 인터넷에 액세스할 수 있습니다.

  2. RemoteIPAddress10.0.1.10으로 변경하고 테스트를 반복합니다. 10.0.1.10myVNet 주소 공간에 있는 개인 IP 주소입니다.

    # Start the IP flow verify session to test outbound flow to 10.0.1.10.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Outbound' -Protocol 'TCP' -RemoteIPAddress '10.0.1.10' -RemotePort '80' -LocalIPAddress '10.0.0.4' -LocalPort '60000'
    

    몇 초 후에 다음 예제와 비슷한 출력이 표시됩니다.

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

    두 번째 테스트 결과는 기본 보안 규칙 AllowVnetOutBound로 인해 액세스가 10.0.1.10으로 허용됨을 나타냅니다. 기본적으로 Azure 가상 머신은 가상 네트워크의 주소 공간에 있는 모든 IP 주소에 액세스할 수 있습니다.

  3. RemoteIPAddress10.10.10.10으로 변경하고 테스트를 반복합니다. 10.10.10.10myVNet 주소 공간에 없는 개인 IP 주소입니다.

    # Start the IP flow verify session to test outbound flow to 10.10.10.10.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Outbound' -Protocol 'TCP' -RemoteIPAddress '10.10.10.10' -RemotePort '80' -LocalIPAddress '10.0.0.4' -LocalPort '60000'
    

    몇 초 후에 다음 예제와 비슷한 출력이 표시됩니다.

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

    세 번째 테스트의 결과는 기본 보안 규칙 DenyAllOutBound로 인해 액세스가 10.10.10.10으로 거부되었음을 나타냅니다.

  4. 방향인바운드로, LocalPort80으로, RemotePort60000으로 변경한 다음, 테스트를 반복합니다.

    # Start the IP flow verify session to test inbound flow from 10.10.10.10.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Inbound' -Protocol 'TCP' -RemoteIPAddress '10.10.10.10' -RemotePort '60000' -LocalIPAddress '10.0.0.4' -LocalPort '80'
    

    몇 초 후에 다음 예제와 비슷한 출력이 표시됩니다.

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

    네 번째 테스트 결과는 기본 보안 규칙 DenyAllInBound로 인해 액세스가 10.10.10.10에서 거부되었음을 나타냅니다. 기본적으로 가상 네트워크 외부에서 Azure 가상 머신에 대한 모든 액세스는 거부됩니다.

보안 규칙의 세부 정보 보기

이전 섹션의 규칙이 통신을 허용하거나 거부하는 이유를 확인하려면 Get-AzEffectiveNetworkSecurityGroup cmdlet을 사용하여 myVM 가상 머신의 네트워크 인터페이스에 대한 효과적인 보안 규칙을 검토합니다.

# Get the effective security rules for the network interface of myVM.
Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName 'myVM' -ResourceGroupName 'myResourceGroup'

반환된 출력은 www.bing.com에 대한 아웃바운드 액세스를 허용한 AllowInternetOutbound 규칙에 대한 다음 정보를 포함합니다.

{
 "Name": "defaultSecurityRules/AllowInternetOutBound",
 "Protocol": "All",
 "SourcePortRange": [
   "0-65535"
 ],
 "DestinationPortRange": [
   "0-65535"
 ],
 "SourceAddressPrefix": [
   "0.0.0.0/0",
   "0.0.0.0/0"
 ],
 "DestinationAddressPrefix": [
   "Internet"
 ],
 "ExpandedSourceAddressPrefix": [],
 "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"
 ],
 "Access": "Allow",
 "Priority": 65001,
 "Direction": "Outbound"
},

출력에서 주소 접두사 13.104.0.0/13AllowInternetOutBound 규칙의 주소 접두사 중 하나임을 확인할 수 있습니다. 이 접두사는 www.bing.com에 대한 아웃바운드 통신을 테스트하는 데 활용한 IP 주소 13.107.21.200을 포함합니다.

마찬가지로 다른 규칙을 확인하여 각 규칙 아래의 원본 및 대상 IP 주소 접두사를 볼 수 있습니다.

리소스 정리

더 이상 필요하지 않은 경우 Remove-AzResourceGroup을 사용하여 리소스 그룹과 그룹에 포함된 모든 리소스를 삭제합니다.

# Delete the resource group and all resources it contains.
Remove-AzResourceGroup -Name 'myResourceGroup' -Force

다음 단계

이 빠른 시작에서는 VM을 만들고 인바운드 및 아웃바운드 네트워크 트래픽 필터를 진단했습니다. VM 간 트래픽을 허용하거나 거부하는 네트워크 보안 그룹 규칙을 배웠습니다. 보안 규칙보안 규칙을 만드는 방법에 대해 자세히 알아봅니다.

적절한 네트워크 트래픽 필터가 설치되어 있더라도 라우팅 구성으로 인해 가상 머신과의 통신이 여전히 실패할 수 있습니다. 가상 머신 라우팅 문제를 진단하는 방법을 알아보려면 가상 머신 네트워크 라우팅 문제 진단을 참조하세요. 하나의 도구로 아웃바운드 라우팅, 대기 시간, 트래픽 필터링 문제를 진단하려면 Azure Network Watcher와의 연결 문제 해결을 참조하세요.