VPN 연결에서 패킷 손실 문제는 어떻게 해결합니까?

최종 업데이트 날짜: 2022년 7월 18일

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

해결 방법

성능 테스트를 시작하기 전에, 다음과 같이 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 시작하고 구성하십시오.

  1. 인스턴스 시작의 단계에 따라 동일 VPC에 속하는 두 개 이상의 가용 영역에서 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 기반으로 이루어지지만 두 번째 테스트에는 -T 옵션이 있어 TCP 기반의 결과를 얻게 됩니다. 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 네트워크의 노드 간 경로가 바뀔 수 있습니다. 양방향으로 경로 추적 결과를 얻는 것이 중요합니다.

프라이빗 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

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