연습 - Network Watcher 모니터링 및 진단 도구를 사용하여 네트워크 문제 해결

완료됨

Azure Network Watcher는 VM(가상 머신)의 통신을 막는 구성 오류를 보다 쉽게 진단할 수 있습니다.

통신할 수 없는 두 개의 VM이 있다고 가정합니다. 문제를 진단하고 가능한 한 빨리 해결하려고 합니다. Network Watcher를 사용하여 이 작업을 수행하려고 합니다.

여기서는 서로 다른 서브넷에 있는 두 VM 간의 연결 문제를 해결합니다.

중요

이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

가상 네트워크 및 VM 구성

먼저 인프라를 만들어 보겠습니다. 또한 의도적으로 구성 오류를 만들 것입니다.

  1. 브라우저에서 Azure Cloud Shell 세션을 엽니다.

  2. 리소스를 만들 디렉터리를 엽니다.

  3. Cloud Shell 메뉴 모음의 왼쪽 위에서 Bash를 선택합니다.

  4. 구독에 대해 지원되는 지역을 나열합니다.

    az account list-locations
    
  5. <resource group name>을 리소스 그룹의 이름으로 대체하고 <name>을 이전 출력의 지역 이름으로 대체하여 다음 코드를 실행하여 리소스 그룹을 만들고 변수 이름 RG에 할당합니다.

    az group create --name <resource group name> --location <name>
    RG=<resource group name>
    
  6. 이 명령을 실행하여 서브넷 이름이 FrontendSubnetMyVNet1이라는 가상 네트워크를 만듭니다.

    az network vnet create \
        --resource-group $RG \
        --name MyVNet1 \
        --address-prefixes 10.10.0.0/16 \
        --subnet-name FrontendSubnet \
        --subnet-prefixes 10.10.1.0/24
    
  7. 이 명령을 실행하여 BackendSubnet이라는 다른 서브넷을 만듭니다.

    az network vnet subnet create \
    --address-prefixes 10.10.2.0/24 \
    --name BackendSubnet \
    --resource-group $RG \
    --vnet-name MyVNet1
    
  8. <password>를 원하는 복잡한 암호로 대체한 후 이 명령을 실행하여 FrontendSubnet에 VM을 배포합니다.

    az vm create \
        --resource-group $RG \
        --name FrontendVM \
        --vnet-name MyVNet1 \
        --subnet FrontendSubnet \
        --image Win2019Datacenter \
        --admin-username azureuser \
        --admin-password <password>
    

    참고

    “partofthepassword: 이벤트를 찾을 수 없음”과 같은 오류가 발생하면 허용되는 문자를 사용하여 새 암호를 생성합니다.

  9. 다음 코드를 실행하여 FrontendVM에 IIS를 설치합니다.

    az vm extension set \
        --publisher Microsoft.Compute \
        --name CustomScriptExtension \
        --vm-name FrontendVM \
        --resource-group $RG \
        --settings '{"commandToExecute":"powershell.exe Install-WindowsFeature -Name Web-Server"}' \
        --no-wait
    
  10. <password>를 원하는 복잡한 암호로 교체한 후 이 명령을 실행하여 BackendSubnet에 가상 머신을 배포합니다.

    az vm create \
        --resource-group $RG \
        --name BackendVM \
        --vnet-name MyVNet1 \
        --subnet BackendSubnet \
        --image Win2019Datacenter \
        --admin-username azureuser \
        --admin-password <password>
    
  11. 이 명령을 실행하여 BackendVM에 IIS를 설치합니다.

    az vm extension set \
        --publisher Microsoft.Compute \
        --name CustomScriptExtension \
        --vm-name BackendVM \
        --resource-group $RG \
        --settings '{"commandToExecute":"powershell.exe Install-WindowsFeature -Name Web-Server"}' \
        --no-wait
    
  12. 다음 명령을 입력하여 NSG(네트워크 보안 그룹) MyNsg를 만듭니다.

    az network nsg create \
        --name MyNsg \
        --resource-group $RG
    
  13. VM 간의 통신을 차단하는 구성 ‘실수’를 만듭니다.

    az network nsg rule create \
        --resource-group $RG \
        --name MyNSGRule \
        --nsg-name MyNsg \
        --priority 4096 \
        --source-address-prefixes '*' \
        --source-port-ranges '*' \
        --destination-address-prefixes '*' \
        --destination-port-ranges 80 443 3389 \
        --access Deny \
        --protocol TCP \
        --direction Inbound \
        --description "Deny from specific IP address ranges on 80, 443 and 3389."
    
  14. 다음 명령을 실행하여 네트워크 보안 그룹을 서브넷에 연결합니다.

    az network vnet subnet update \
        --resource-group $RG \
        --name BackendSubnet \
        --vnet-name MyVNet1 \
        --network-security-group MyNsg
    

해당 지역에 대한 Network Watcher를 사용으로 설정

이제 Azure CLI를 사용하여 인프라와 동일한 지역에 Network Watcher를 설정하겠습니다.

  1. <location>을 세션 앞부분에서 리소스 그룹을 만들 때 사용한 Azure 지역으로 대체하여 이 명령을 실행함으로써 Network Watcher를 사용하도록 설정합니다.
az network watcher configure \
    --enabled true \
    --resource-group $RG \
    --locations <location>

Network Watcher를 사용하여 토폴로지 표시

이제 Azure Portal에서 Network Watcher를 사용하여 서로 다른 서브넷에 있는 두 VM 간의 연결 문제를 해결할 수 있습니다. 동료가 두 VM 간에 HTTP/HTTPS의 연결 문제를 보고했습니다. 먼저 네트워크 토폴로지를 조사합니다.

  1. Azure Portal에 로그인합니다.

  2. 전역 검색에서 Network Watcher를 입력하고 해당 서비스를 선택합니다. Network Watcher 개요 창이 나타나고 활성 네트워크 감시자가 나열됩니다.

  3. Network Watcher 메뉴의 모니터링에서 토폴로지를 선택합니다. Network Watcher | 토폴로지 창이 나타납니다.

  4. 드롭다운 필드에서 이 연습의 구독리소스 그룹을 선택합니다. MyVNet1의 네트워크 토폴로지에서는 프런트 엔드 및 백 엔드 VM 인터페이스를 표시합니다. 이는 이 연습을 시작할 때 만든 가상 네트워크입니다.

    연습 네트워크 토폴로지를 보여 주는 스크린샷

연결 모니터를 사용하여 백 엔드에서 프런트 엔드로 테스트 실행

토폴로지가 올바른 것으로 보입니다. 추가 정보를 얻기 위해 연결 모니터에서 몇 가지 테스트를 설정해 봅시다. 먼저 백 엔드 VM에서 프런트 엔드 VM으로의 테스트를 만듭니다.

  1. Network Watcher 메뉴의 모니터링 아래에서 연결 모니터를 선택합니다. Network Watcher | 연결 모니터 개요 창이 나타납니다.

  2. 명령 모음에서 만들기를 선택합니다. 연결 모니터 만들기 페이지가 나타납니다.

  3. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    연결 모니터 이름 백 투 프런트-HTTP-테스트
    구독 드롭다운 목록에서 구독을 선택합니다.
    지역 리소스를 배포한 Azure 지역 선택
    작업 영역 구성 연결 모니터에서 생성된 작업 영역 사용(기본값)이 선택됨
  4. 다음: 테스트 그룹을 선택합니다. 테스트 그룹 세부 정보 추가 창이 나타납니다.

  5. 테스트 그룹 이름에 Back-to-front-HTTP-test-group을 입력합니다.

  6. 원본 상자에서 원본 추가를 선택합니다. 원본 추가 창이 나타납니다.

  7. Azure 엔드포인트 탭에서 Subnet을 선택하고 구독을 선택했는지 확인한 다음, 목록에서 BackendSubnet을 선택합니다.

    Network Watcher 백 엔드 서브넷 활성화를 보여 주는 스크린샷.

  8. 엔드포인트 추가를 선택합니다. 소스로 식별된 BackendSubnet이 있는 소스 상자에서. 이 엔드포인트를 선택하고 편집을 선택한 다음 이름을 BackendSubnet으로 변경한 다음 저장을 선택합니다.

    엔드포인트 이름 편집을 보여주는 스크린샷.

  9. 테스트 구성 상자에서 테스트 구성 추가를 선택합니다. 테스트 구성 추가 창이 나타납니다.

  10. 새 구성 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    테스트 구성 이름 백 투 프런트-HTTP-테스트 구성
    프로토콜 HTTP
    대상 포트 80
    테스트 빈도 30초마다
    나머지 설정에 기본값 유지
  11. 테스트 구성 추가를 선택하여 테스트 그룹에 해당 테스트 구성을 추가합니다. 테스트 구성이 식별된 테스트 그룹 세부 정보 추가가 다시 표시됩니다.

  12. 대상 상자에서 대상 추가를 선택합니다. 대상 추가 창이 나타납니다.

  13. Azure 엔드포인트 탭에서 Subnet을 선택하고 구독을 선택했는지 확인한 다음, 목록에서 FrontendSubnet을 선택합니다.

  14. 엔드포인트 추가를 선택합니다. FrontendSubnet이 대상으로 식별된 테스트 그룹 세부 정보 추가가 다시 나타납니다.

  15. 창의 아래쪽에서 테스트 그룹 추가를 선택합니다. 연결 모니터 만들기 창이 나타납니다.

  16. 테스트 그룹 탭에서 테스트 그룹의 원본이 백 엔드로, 대상이 프런트 엔드로 나열되었는지 확인합니다.

  17. 검토 + 만들기만들기를 선택합니다.

테스트가 연결 모니터 창에 표시되지 않으면 새로 고침 버튼을 선택합니다. Back-to-front-HTTP 테스트 결과에는 NSG가 백 엔드 서브넷에 연결되어 있으므로 백 엔드 VM에서 프런트 엔드 VM으로 트래픽이 문제없이 전달되는 것으로 표시되어야 합니다.

연결 모니터를 사용하여 프런트 엔드에서 백 엔드로 테스트 실행

반대 방향으로 동일한 테스트를 실행합니다. 연결 모니터에서 다른 테스트를 설정해 보겠습니다. 먼저 프런트 엔드 VM에서 백 엔드 VM으로의 테스트를 만듭니다.

  1. 연결 모니터 창에서 만들기를 선택합니다.

  2. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    연결 모니터 이름 프런트 엔드-HTTP-테스트
    구독 드롭다운 목록에서 구독을 선택합니다.
    지역 리소스를 배포한 Azure 지역 선택
  3. 다음: 테스트 그룹을 선택합니다. 테스트 그룹 세부 정보 추가 창이 나타납니다.

  4. 테스트 그룹 이름Front-to-back-HTTP-test-group을 입력한 다음, 원본 상자에서 원본 추가를 선택합니다. 원본 추가 창이 나타납니다.

  5. Azure 엔드포인트 탭에서 Subnet을 선택하고 구독을 선택했는지 확인한 다음, 목록에서 FrontSubnet을 선택합니다.

  6. 엔드포인트 추가를 선택합니다. 소스로 식별된 BackendSubnet이 있는 소스 상자에서. 이 엔드포인트를 선택하고 편집을 선택한 다음 이름을 FrontendSubnet으로 변경한 다음 저장을 선택합니다.

  7. 테스트 구성 상자에서 테스트 구성 추가를 선택합니다. 테스트 구성 추가 창이 나타납니다.

  8. 새 구성 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    테스트 구성 이름 프런트 투 백-HTTP-테스트 구성
    프로토콜 HTTP
    대상 포트 80
    테스트 빈도 30초마다
    나머지 설정에 기본값 수락
  9. 테스트 구성 추가를 선택합니다. 테스트 구성이 식별된 테스트 그룹 세부 정보 추가가 다시 표시됩니다.

  10. 대상 상자에서 대상 추가를 선택합니다. 대상 추가 창이 나타납니다.

  11. Azure 엔드포인트 탭에서 Subnet을 선택하고 구독을 선택했는지 확인한 다음, 목록에서 BackendSubnet을 선택합니다.

  12. 엔드포인트 추가를 선택합니다. BackendSubnet이 대상으로 식별되어 테스트 그룹 세부 정보 추가 창이 다시 나타납니다.

  13. 창의 아래쪽에서 테스트 그룹 추가를 선택합니다. 연결 모니터 만들기 창이 나타납니다.

  14. 테스트 그룹 탭에 이제 Front-to-back-HTTP-test-group이 나열된 것을 볼 수 있습니다.

  15. 검토 + 만들기만들기를 선택합니다.

테스트가 연결 모니터 창에 표시되지 않으면 새로 고침 버튼을 선택합니다. Front-to-back-HTTP-test 결과에는 NSG가 백 엔드 서브넷에 연결되어 있으므로 프런트 엔드 VM에서 백 엔드 VM으로 트래픽이 전달되지 않는 것으로 표시되어야 합니다.

IP 흐름 확인을 사용하여 연결 테스트

IP 흐름 확인 도구를 사용하여 자세한 정보를 얻어보겠습니다.

  1. Network Watcher를 선택하고 네트워크 진단 도구 아래의 리소스 메뉴에서 IP 흐름 확인을 선택합니다.

  2. 각 설정에 다음 값을 입력하여 테스트를 구성하고 확인을 선택합니다.

    설정
    Subscription 구독 선택
    리소스 그룹 리소스 그룹 선택
    가상 머신 BackendVM
    네트워크 인터페이스 BackendVMVMNic
    프로토콜 TCP
    Direction 인바운드
    로컬 IP 주소 10.10.2.4
    로컬 포트 3389
    원격 IP 10.10.1.4
    원격 포트 3389

    IP 흐름 테스트를 보여 주는 스크린샷

  3. 결과에는 NSG 및 보안 규칙으로 인해 액세스가 거부되었음이 표시됩니다.

이 연습에서는 성공적으로 Network Watcher 도구를 사용하여 두 서브넷 간의 연결 문제를 발견했습니다. 단방향 통신은 허용되지만, NSG 규칙 때문에 다른 방식은 차단되었습니다.