VPN 연결에서 패킷 손실 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2018년 7월 27일

VPN 연결에서 지속적으로 또는 간헐적으로 패킷 손실 및 긴 지연 시간 문제가 발생합니다. Amazon Virtual Private Cloud(Amazon VPC) 내에서 문제가 발생하지 않는지 확인하려면 어떤 테스트를 실행해야 합니까?

해결 방법

성능 테스트를 시작하기 전에 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 시작하고 구성합니다.

  1. 인스턴스 시작의 단계에 따라 네트워크 성능 테스트를 실행할 수 있는 동일한 VPC에 있는 2개 이상의 가용 영역에서 Linux 인스턴스를 시작합니다.
  2. 최상의 네트워크 성능을 얻으려면 인스턴스가 Linux용 향상된 네트워킹을 지원해야 하며 동일한 VPC에서 인스턴스가 시작되어야 합니다.
  3. 동일한 배치 그룹에 공존하지 않거나 점보 프레임을 지원하지 않는 인스턴스 간에 네트워크 테스트를 수행하는 경우 Linux 인스턴스에서 MTU 확인 및 설정의 단계를 따르십시오.
  4. Linux 인스턴스에 연결의 단계를 완료하여 인스턴스에 액세스할 수 있는지 확인합니다.

mtr을 사용하여 ICMP 또는 TCP 패킷 손실 및 지연 시간 확인

두 인스턴스에 mtr 네트워크 도구를 설치하여 ICMP 또는 TCP 패킷 손실 및 지연 시간을 확인합니다. mtr은 시간 경과에 따른 네트워크 성능을 분석할 수 있도록 출력을 지속적으로 업데이트합니다. mtr은 traceroute 기능과 ping 기능을 네트워크 진단 도구 하나로 통합한 것입니다.

Amazon Linux에 mtr을 설치합니다.

sudo yum install mtr

Ubuntu에 mtr을 설치합니다.

sudo apt-get install mtr

EC2 인스턴스 및 온프레미스 호스트의 프라이빗 IP 주소와 퍼블릭 IP 주소 간에 다음 테스트를 양방향으로 실행합니다. 방향을 바꾸면 TCP/IP 네트워크의 노드 간 경로가 바뀔 수 있으므로 양방향에서 mtr의 결과를 얻는 것이 중요합니다.

첫 번째 mtr테스트는 ICMP 기반이지만 두 번째 테스트에는 TCP 기반 결과를 제공하는 -T 옵션이 있습니다. TCP 기반 결과는 연결 시 애플리케이션 기반 패킷 손실 또는 지연 시간이 있는지 확인하는 데 도움이 됩니다. MTR 버전 0.85 이상에는 TCP 옵션이 있습니다.

프라이빗 IP 테스트:

mtr -n -c 200 <Private IP EC2 instance/on-premises host> --report
mtr -n -T -c 200 <Private IP EC2 instance/on-premises host> --report

퍼블릭 IP 테스트:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report
mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

Linux traceroute 유틸리티를 사용하여 지연 시간 또는 라우팅 문제 확인

Linux traceroute 유틸리티는 클라이언트 노드에서 지정된 대상 노드로의 경로와 경로에서 식별된 각 라우터가 요청에 응답하는 시간(밀리초)을 식별합니다. 또한 이 유틸리티는 대상에 도달하기 전에 각 홉에서 소요되는 시간을 계산하고 표시합니다. traceroute가 설치되지 않은 경우 인스턴스에 설치해야 합니다.

Amazon Linux에 traceroute를 설치합니다.

sudo yum install traceroute

Ubuntu에 traceroute를 설치합니다.

sudo apt-get install traceroute

EC2 인스턴스 및 온프레미스 호스트의 프라이빗 IP 주소와 퍼블릭 IP 주소 간에 다음 테스트를 양방향으로 실행합니다. 방향을 바꾸면 TCP/IP 네트워크의 노드 간 경로가 바뀔 수 있으므로 양방향에서 traceroute의 결과를 얻는 것이 중요합니다.

프라이빗 IP 테스트:

sudo traceroute <private IP of EC2 instance/on-premises host>
sudo traceroute -T -p 80 <private IP of EC2 instance/on-premises host>

퍼블릭 IP 테스트:

sudo traceroute <public IP of EC2 instance/on-premises host>
sudo traceroute -T -p 80 <public IP of EC2 instance/on-premises host>

참고: -T -p 80 -n 인수는 포트 80에서 TCP 기반 추적을 수행합니다. 포트 80 또는 테스트 중인 포트가 양방향으로 열려 있는지 확인하십시오.

대부분의 인터넷 디바이스에서는 ICMP 기반의 추적 요청을 낮은 우선 순위로 처리하므로 ICMP 대신 TCP 기반 추적을 지정하는 Linux traceroute 옵션이 유용합니다. 요청 중 일부는 시간 초과되는 것이 일반적이므로 대상 또는 경로의 마지막 홉에서 패킷 손실이 발생하는지 확인하십시오. 여러 홉에서 누적되는 패킷 손실은 문제가 될 수 있습니다.

참고: traceroute를 사용하여 네트워크 연결 문제를 해결할 때는 클라이언트에서 서버로, 이어서 서버에서 클라이언트로의 양방향으로 명령을 실행하는 것이 좋습니다.

hping3를 사용하여 지연 시간 또는 TCP 패킷 손실 문제 확인

hping은 명령줄에서 시작되는 TCP/IP 패킷 조립기/분석기입니다. ICMP 에코 요청 외에 TCP, UDP, RAW-IP 프로토콜도 지원하며, traceroute 모드, 대상 채널 간에 파일을 전송하는 기능 및 기타 다수의 기능을 제공합니다.

hping3가 설치되지 않은 경우 Amazon Linux에서 다음 명령을 실행합니다.

sudo yum --enablerepo=epel install hping3

이어서 다음 명령을 실행합니다.

hping3 -S -c 50 -V <Public IP of EC2 instance or on-premises host>
hping3 -S -c 50 -V <Private IP of EC2 instance or on-premises host>

참고: 기본적으로 hping3는 tcp 플래그를 설정하지 않고 winsize 64로 TCP 헤더를 대상 호스트의 포트 0으로 전송합니다.

tcpdump를 사용한 패킷 캡처 샘플

문제를 재현할 때 EC2 인스턴스(여러 가용 영역에 존재)와 온프레미스 호스트에서 패킷 캡처를 수행하면 VPN 연결에 애플리케이션 문제 또는 네트워크 계층 문제가 있는지 파악하는 데 도움이 됩니다. 패킷 캡처를 수행하려면 인스턴스에 tcpdump를 설치하십시오.

Amazon Linux에 tcpdump를 설치합니다.

sudo yum install tcpdump

Ubuntu에 tcpdump를 설치합니다.

sudo apt-get install tcpdump

참고: 분석 및 문제 해결을 위해 네트워크 디바이스를 확인하는 방법에 대한 지침은 해당 공급업체의 설명서를 참조하십시오


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?