구성 문제 해결

이 가이드는 Cloud NAT의 일반적인 문제 해결을 위한 도움을 제공합니다.

일반적인 문제

VM에서 Cloud NAT를 사용하지 않고 예기치 않게 인터넷에 연결할 수 있음

가상 머신(VM) 인스턴스나 컨테이너 인스턴스에서 Cloud NAT를 사용하지 않고 인터넷에 연결할 수 있지만 이를 원하지 않으면 다음 문제를 확인합니다.

  • VM 네트워크 인터페이스에 외부 IP 주소가 있는지 확인합니다. 네트워크 인터페이스에 할당된 외부 IP 주소가 있으면 Google Cloud에서 소스가 인터페이스의 기본 내부 IP 주소와 일치하는 패킷에 일대일 NAT를 자동으로 수행합니다. 자세한 내용은 Cloud NAT 사양을 참조하세요.

    VM에 외부 IP 주소가 있는지 확인하려면 외부 IP 주소 변경 또는 기존 인스턴스에 할당을 참조하세요.

  • Google Kubernetes Engine(GKE) 클러스터가 비공개 클러스터인지 확인합니다. 비공개가 아닌 클러스터의 각 노드 VM에는 외부 IP 주소가 있으므로 각 노드는 다음 홉이 Cloud NAT에 의존하지 않는 기본 인터넷 게이트웨이인 가상 프라이빗 클라우드(VPC) 네트워크의 경로를 사용할 수 있습니다. 비공개가 아닌 클러스터가 Cloud NAT 게이트웨이와 상호작용하는 방법을 포함한 자세한 내용은 Compute Engine 상호작용을 참조하세요.

  • 가상 프라이빗 클라우드 네트워크의 경로를 나열하여 기본 인터넷 게이트웨이와 다른 다음 홉을 통해 인터넷 연결을 제공할 수 있는 경로를 찾습니다. 예를 들면 다음과 같습니다.

    • 다음 홉이 VM, 내부 패스 스루 네트워크 부하 분산기 또는 Cloud VPN 터널인 정적 경로는 인터넷 연결을 간접적으로 제공할 수 있습니다. 예를 들어 내부 패스 스루 네트워크 부하 분산기의 다음 홉 VM 또는 백엔드 VM에 외부 IP 주소 자체가 있거나 Cloud VPN 터널이 인터넷 액세스를 제공하는 네트워크에 연결될 수도 있습니다.

    • VPC 네트워크의 Cloud Router에 의해 온프레미스 네트워크에서 학습된 동적 경로가 인터넷 액세스를 제공하는 네트워크에 연결할 수 있습니다.

  • VPC 네트워크의 다른 커스텀 경로는 다음 홉이 기본 인터넷 게이트웨이인 경로보다 우선순위가 높을 수 있습니다.Google Cloud 에서 경로를 평가하는 방법은 라우팅 적용성 및 순서를 참조하세요.

생성된 로그 없음

  • NAT 로깅이 사용 설정되었는지 확인합니다.
  • 보려는 로그가 필터링되지 않은 로그 뷰가 표시되었는지 다시 한번 확인합니다. 안내는 로그 보기를 참조하세요.

  • 방화벽 규칙이 트래픽을 차단하지 않는지 확인합니다. 이그레스(아웃바운드) 트래픽을 차단하는 방화벽 규칙은 트래픽이 NAT 게이트웨이에 전송되기 전에 적용됩니다. 방화벽 규칙 로깅을 사용하여 커스텀 이그레스 규칙에서 아웃바운드 트래픽을 차단하고 있는지 확인할 수 있습니다.

  • Cloud NAT 유형을 검토합니다. 트래픽 대상이 NAT에서 처리되지 않을 수 있습니다.

특정 로그가 제외됨

  • NAT 로깅이 사용 설정되어 있는지 확인하고 로그 필터에서 보관할 로그를 제외하지 않는지 확인합니다. 어떤 항목도 제외되지 않도록 로그 필터를 삭제할 수 있습니다.

  • Cloud NAT는 모든 단일 이벤트를 로깅하지 않습니다. 이그레스 트래픽이 많은 기간 동안 NAT 로깅은 VM 머신 유형에 비례해서 제한됩니다. 변환 또는 오류 로그가 삭제될 수 있으며 제한 중에 생략된 항목을 확인할 수 없습니다.

리소스 없음 이유로 패킷이 삭제됨

Cloud NAT를 사용하는 VM에서 패킷이 손실되는 경우 이는 패킷 손실(포트 소모) 시점에 사용할 VM에 사용할 수 있는 NAT 소스 IP 주소와 소스 포트 튜플이 부족하기 때문일 수 있습니다. 5-튜플(NAT 소스 IP 주소, 소스 포트, 대상 3-튜플)은 TCP TIME_WAIT 제한 시간 내에 재사용될 수 없습니다.

사용 가능한 NAT 튜플이 부족하면 dropped_sent_packets_count 이유OUT_OF_RESOURCES입니다. 측정항목에 대한 자세한 내용은 VM 인스턴스 측정항목 사용을 참조하세요.

포트 사용량을 줄이는 방법은 포트 사용량 줄이기를 참조하세요.

동적 포트 할당을 사용하는 경우 동적 포트 할당이 사용될 때 패킷 손실을 줄이는 방법은 다음 섹션을 참조하세요.

동적 포트 할당이 구성될 때 패킷이 손실됨

VM이 포트를 거의 소진하면 동적 포트 할당에서 이를 감지하여 VM에 할당되는 포트 수를 두 배로 늘립니다. 이렇게 하면 포트 낭비를 막는 데 도움이 될 수 있지만 할당된 포트 수가 늘어날 때 패킷이 손실될 수 있습니다.

손실되는 패킷 수를 줄이려면 다음을 고려하세요.

  • 연결을 더 느리게 확대할 수 있으면 Cloud NAT에서 추가 포트 할당 시간을 더 늘릴 수 있습니다.

  • VM이 TCP 연결을 수행할 경우 tcp_syn_retries에 더 큰 값을 사용하여 VM을 구성할 수 있습니다. 이렇게 하면 시스템이 연결을 설정하는 데 더 많은 시간을 할애하고 연결이 성공할 가능성이 높아집니다.

    예를 들어 Linux VM의 경우 현재 설정을 볼 수 있습니다.

      sysctl net.ipv4.tcp_syn_retries
      

    필요한 경우 설정을 늘릴 수 있습니다.

      sudo sysctl -w net.ipv4.tcp_syn_retries=NUM
      

  • 워크로드가 갑자기 증가하고 더 많은 포트를 빠르게 할당해야 할 경우 VM당 최소 포트 수를 조정해야 할 수 있습니다. 포트 사용량을 보고 적합한 VM당 최소 포트 수를 결정합니다.

엔드포인트 독립 충돌로 인해 패킷이 삭제됨