ICMP 문제해결

이 가이드에서는 연결 테스트를 반복적으로 사용하여 네트워크 연결 문제를 파악하고 수정하는 방법을 보여줍니다.

이 경우 Virtual Private Cloud 방화벽 규칙은 한 VM (가상 머신) 인스턴스의 외부 IP 주소가 ICMP 프로토콜을 사용하여 다른 VM의 외부 IP 주소를 핑하는 것을 방지합니다.

VM 간 통신 문제는 종종 네트워크 연결 문제이므로 연결 테스트는 가능한 구성 문제에 대한 정보를 제공하여 문제를 해결할 수 있습니다. 그런 다음 연결 테스트를 다시 실행하여 수정 사항을 확인할 수 있습니다.

개요

이 경우 Virtual Private Cloud 네트워크의 동일한 서브넷에 두 개의 VM 인스턴스를 구성했습니다. 두 VM 모두 외부 IP 주소가 있습니다. 핑 패킷을 vm1에서 vm2의 외부 IP 주소로 전송하여 이들 간의 연결을 테스트하면 핑이 작동하지 않습니다.

두 VM 간의 핑 거부 문제해결
두 VM 간의 핑 거부 문제해결

시작하기 전에

가이드를 시작하기 전에 연결 테스트 실행Before you begin 섹션에 있는 모든 단계를 수행하세요.

방화벽 규칙 작동 방식을 검토하는 것도 도움이 될 수 있습니다.

네트워크 리소스 구성

이 섹션에서는 테스트 경로에서 Google Cloud 리소스를 구성합니다.

VPC 네트워크 구성

VM이 포함된 기존 네트워크 및 서브넷을 사용하거나 새 네트워크 및 서브넷을 생성할 수 있습니다.

두 개의 VM 인스턴스 구성

  1. 이 가이드의 VM 인스턴스는 동일한 VPC 네트워크 및 서브넷에 있습니다. 기존 VM을 사용하거나 새 VM을 생성할 수 있습니다.
  2. vm1vm2를 만들 때 외부 IP 주소를 할당합니다. 나중에 사용할 수 있도록 주소를 기록해 둡니다.

방화벽 규칙 default-deny-outgoing-ping 만들기

VM을 생성하면 default-deny-outgoing-ping이라는 이그레스 VPC 방화벽 규칙을 생성합니다. 이 규칙은 ICMP 프로토콜을 vm1에서 vm2까지 거부합니다.

이 네트워크에 이 규칙보다 우선하는 기존 방화벽 규칙이 없는지 확인합니다.

이 방화벽 규칙을 구성하려면 다음 표의 값을 사용합니다.

방화벽 규칙 필드
이름 default-deny-outgoing-ping
네트워크 VM이 있는 VPC 네트워크를 사용합니다.
우선순위 1000
방향 egress
일치 시 작업 deny
대상 All instances in the network을 선택합니다.
대상 IP 범위 vm2의 외부 IP 주소를 사용합니다.
지정된 프로토콜 및 포트 other protocols를 확인하고 icmp을 입력합니다.

방화벽 규칙 default-deny-ingress-to-vm2 만들기

default-deny-ingress-to-vm2라는 인그레스 방화벽 규칙을 만들어 vm2의 외부 IP 주소에 대한 ICMP 프로토콜을 거부합니다.

이 네트워크에 이 규칙보다 우선하는 기존 방화벽 규칙이 없는지 확인합니다. 다음 표의 값을 사용하여 규칙을 작성합니다.

방화벽 규칙 필드
이름 default-deny-ingress-to-vm2
네트워크 VM이 있는 VPC 네트워크를 사용합니다.
우선순위 65534
방향 ingress
일치 시 작업 deny
대상 All instances in the network을 선택합니다.
소스 IP 범위 vm1의 외부 IP 주소를 사용합니다.
지정된 프로토콜 및 포트 other protocols를 확인하고 icmp을 입력합니다.

첫 번째 추적 실행

Cloud Console을 사용하여 추적을 실행하여 ICMP(핑) 패킷이 vm1에서 vm2의 외부 IP 주소로 이동할 수 있는지 파악합니다. 추적에 대한 입력값은 다음 표를 사용합니다.

이 추적을 실행한 후 연결 테스트는 방화벽 규칙 default-deny-outgoing-ping으로 인해 추적 패킷이 삭제되었음을 알려줍니다.

필드 이름
프로토콜 icmp
소스 IP 주소 vm1의 외부 IP 주소를 사용합니다.
This is an external IP address used in Google Cloud. 박스를 선택합니다.
소스 IP 주소 프로젝트 vm1의 프로젝트 이름을 확인합니다.
대상 IP 주소 vm2의 외부 IP 주소를 사용합니다.
This is an external IP address used in Google Cloud. 박스를 선택합니다.
대상 IP 주소 프로젝트 vm2의 프로젝트 이름을 확인합니다.

다음 Cloud Console 스냅샷은 방화벽 규칙 default-deny-outgoing-ping으로 인해 추적 패킷이 삭제되었음을 알려줍니다.

거부된 발신 핑이 포함된 추적의 Console UI 스냅샷
거부된 발신 핑을 포함하는 추적의 Console UI 스냅샷

방화벽 규칙 default-deny-outgoing-ping을 중지한 후 두 번째 추적 실행

  1. 핑 테스트를 vm2에 허용하려면 방화벽 규칙 default-deny-outgoing-ping일시 중지합니다.
  2. 구성 업데이트가 완료되면 추적을 다시 실행합니다.
  3. 추적이 다시 실패합니다. vm2의 외부 IP 주소에 대한 인그레스 ICMP 패킷을 거부하는이 방화벽 규칙으로 인해 패킷이 삭제되었습니다.

다음 Cloud Console 스냅샷은 인바운드 추적 패킷이 Cloud NAT를 통과할 수 있지만 앞에서 언급한 방화벽 규칙으로 인해 vm2에 도달할 수 없음을 보여줍니다.

도달에 실패하는 추척의 Console UI 스냅샷
거부된 발신 핑을 포함하는 추적의 Console UI 스냅샷

방화벽 규칙 allow-ping-from-known-ranges 만들기

vm2의 외부 IP 주소에 대한 인그레스를 허용하려면 allow-ping-from-known-ranges라는 새 방화벽 규칙을 구성합니다.

모든 인그레스 ICMP 패킷을 VPC 네트워크에 허용하는 것은 보안 위험이므로 ICMP 패킷을 vm2의 외부 IP로 보낼 수 있는 소스 범위의 작은 세트만 지정합니다.

이 가이드의 목적을 위해 이 소스 범위에는 vm1의 외부 IP 주소만 포함되어 있지만 기존 방화벽 규칙 또는 규칙 우선순위를 확인하여 이 새 규칙보다 우선하지 않도록 합니다.

다음 표의 값을 사용하여 규칙을 구성합니다.

방화벽 규칙 필드
이름 allow-ping-from-known-ranges
네트워크 두 VM이 모두 포함된 네트워크 이름을 사용합니다.
우선순위 1000
방향 수신
일치 시 작업 allow
대상 All instances in the network을 선택합니다.
소스 필터 IP 범위
소스 IP 범위 vm1의 외부 IP 주소를 사용합니다.
지정된 프로토콜 및 포트 Other protocols를 확인하고 ICMP을 입력합니다.

세 번째 추적 실행

allow-ping-from-known-ranges 방화벽 규칙을 작성한 후 vm2의 외부 IP 주소를 다시 핑합니다. 핑이 작동하고 문제가 해결됩니다.

두 VM 간에 허용되는 핑
두 VM간에 허용되는 핑

새 방화벽 규칙이 포함된 업데이트된 구성에 대해 다른 추적을 수행하여 이 결과를 확인할 수 있습니다. 이번에는 연결 테스트에서 패킷이 vm2에 전달되었고 일치하는 방화벽 규칙 allow-ping-from-known-rangesvm2의 외부 IP 주소에 대한 인바운드 ICMP 패킷을 허용함을 알려줍니다.

vm2에 대한 성공적인 추적의 Console UI 스냅샷
vm2에 대한 성공적인 추적의 Console UI 스냅샷

정리

필요한 경우 이 가이드를 위해 생성한 다음 Google Cloud 리소스를 비활성화하거나 삭제할 수 있습니다. 이들이 프로덕션 리소스가 아닌지 확인합니다. 리소스를 사용 중지하려는 경우, 요금이 청구되지 않도록 Compute Engine 가격 책정 페이지모든 네트워킹 가격 책정 페이지에서 확인하세요.

  1. 방화벽 규칙 사용 중지 또는 삭제
  2. VM 사용 중지 또는 삭제
  3. VPC 서브넷 삭제
  4. VPC 네트워크 삭제

다음 단계