가상 머신 네트워크 라우팅 문제 진단 - Azure CLI

이 문서에서는 VM(가상 머신)을 배포한 다음, IP 주소와 URL로 전송되는 통신을 확인합니다. 통신 오류의 원인 및 해결 방법을 확인합니다.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 구성 요소

Azure Cloud Shell 또는 로컬 Azure CLI를 사용할 수 있습니다.

  • Bash 환경이 포함된 Azure Cloud Shell. 또는 여기에서 Cloud Shell을 실행합니다.

    새 창에서 Cloud Shell 시작

  • 로컬 Azure CLI는 Azure CLI 설치 방법을 참조하세요. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.

    • az login 명령을 사용하여 Azure에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.

    • Azure CLI를 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.

    • az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.

  • 이 문서에는 Azure CLI 버전 2.0 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

  • 이 문서에서 Azure CLI 명령은 Bash 셸에서 실행하도록 형식이 지정됩니다.

VM 만들기

VM을 만들려면 먼저 VM이 포함될 리소스 그룹을 만들어야 합니다. az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

az group create --name myResourceGroup --location eastus

az vm create로 VM을 만듭니다. 또한 기본 키 위치에 SSH 키가 없는 경우 해당 명령이 이 키를 만듭니다. 특정 키 집합을 사용하려면 --ssh-key-value 옵션을 사용합니다. 다음 예제에서는 myVm이라는 VM을 만듭니다.

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image UbuntuLTS \
  --generate-ssh-keys

VM을 만드는 데 몇 분이 걸립니다. VM이 만들어지고 Azure CLI에서 출력을 반환할 때까지 나머지 단계를 진행하지 마세요.

네트워크 통신 테스트

Network Watcher와의 네트워크 통신을 테스트하려면 먼저 테스트하려는 VM이 있는 지역에서 네트워크 감시자를 활성화한 다음, Network Watcher의 다음 홉 기능을 사용하여 통신을 테스트해야 합니다.

네트워크 감시자 사용

미국 동부 지역에서 이미 Network Watcher를 사용하도록 설정한 경우, 다음 홉 사용으로 건너뜁니다. az network watcher configure 명령을 사용하여 미국 동부 지역의 네트워크 감시자를 만듭니다.

az network watcher configure \
  --resource-group NetworkWatcherRG \
  --locations eastus \
  --enabled

다음 홉 사용

Azure에서는 기본 대상에 대한 경로를 자동으로 만듭니다. 기본 경로를 재정의하는 사용자 지정 경로를 만들 수 있습니다. 경우에 따라 사용자 지정 경로로 인해 통신이 실패할 수 있습니다. VM에서 라우팅을 테스트하려면 az network watcher show-next-hop을 사용하여 트래픽의 대상이 특정 주소로 지정되는 경우 다음 라우팅 홉을 확인합니다.

VM에서 www.bing.com에 대한 IP 주소 중 하나로 아웃바운드 통신을 테스트합니다.

az network watcher show-next-hop \
  --dest-ip 13.107.21.200 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

몇 초 후에 결과는 nextHopType인터넷이며, routeTableId시스템 경로임을 알려줍니다. 이 출력 결과를 통해 대상에 대한 유효한 경로가 있음을 알 수 있습니다.

VM에서 172.31.0.100으로 아웃바운드 통신을 테스트합니다.

az network watcher show-next-hop \
  --dest-ip 172.31.0.100 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

반환된 결과는 없음nextHopType이며, routeTableId시스템 경로임도 알려줍니다. 이 결과를 사용하면 대상에 대한 유효한 시스템 경로가 있지만, 대상에 트래픽을 라우팅하는 다음 홉이 없음을 알 수 있습니다.

경로의 세부 정보 보기

추가로 라우팅을 분석하려면 az network nic show-effective-route-table 명령으로 네트워크 인터페이스에 대한 유효 경로를 검토합니다.

az network nic show-effective-route-table \
  --resource-group myResourceGroup \
  --name myVmVMNic

반환되는 출력에 다음 텍스트가 포함됩니다.

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
  },
  "addressPrefix": [
    "0.0.0.0/0"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "Internet",
  "source": "Default",
  "state": "Active"
},

다음 홉 사용에서 az network watcher show-next-hop 명령을 사용하여 13.107.21.200에 대한 아웃바운드 통신을 테스트하는 경우 출력의 다른 경로가 주소를 포함하지 않으므로 addressPrefix 0.0.0.0/0** 포함 경로를 사용하여 주소에 트래픽을 라우팅했습니다. 기본적으로 다른 경로의 주소 접두사 내에서 지정되지 않은 모든 주소는 인터넷으로 라우팅됩니다.

그러나 az network watcher show-next-hop 명령을 사용하여 172.31.0.100에 대한 아웃바운드 통신을 테스트하는 경우 결과에서 다음 홉 유형이 없음을 알 수 있습니다. 반환되는 출력에서 다음 텍스트를 볼 수 있습니다.

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
      },
  "addressPrefix": [
    "172.16.0.0/12"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "None",
  "source": "Default",
  "state": "Active"
},

az network watcher nic show-effective-route-table 명령의 출력에서 볼 수 있듯이 172.31.0.100 주소를 포함하는 172.16.0.0/12 접두사에 대한 기본 경로가 있더라도 nextHopType없음입니다. Azure에서는 172.16.0.0/12에 대한 기본 경로를 만들지만 필요가 있을 때까지 다음 홉 형식을 지정하지 않습니다. 예를 들어, 가상 네트워크의 주소 공간에 172.16.0.0/12 주소 범위를 추가한 경우, Azure는 경로의 nextHopType가상 네트워크로 변경합니다. 그런 다음, 검사에서는 가상 네트워크nextHopType으로 표시합니다.

리소스 정리

더 이상 필요하지 않은 경우 az group delete를 사용하여 리소스 그룹 및 해당 그룹에 포함된 모든 리소스를 제거할 수 있습니다.

az group delete --name myResourceGroup --yes

다음 단계

이 문서에서는 VM을 만들고 VM에서 네트워크 라우팅을 진단했습니다. Azure가 여러 개의 기본 경로를 만들고 두 개의 다른 대상에 대한 라우팅을 테스트했음을 알아보았습니다. Azure에서 라우팅사용자 지정 경로를 만드는 방법을 알아봅니다.

아웃바운드 VM 연결의 경우 Network Watcher의 연결 문제 해결 기능을 사용하여 대기 시간 외에도 VM과 엔드포인트 간의 허용 또는 거부되는 네트워크 트래픽을 확인할 수 있습니다. Network Watcher 연결 모니터 기능을 사용하여 시간에 따라 IP 주소 또는 URL과 같은 VM과 엔드포인트 간의 통신을 모니터링할 수 있습니다. 방법을 알아보려면 네트워크 연결 모니터링을 참조하세요.