AWS 가상 프라이빗 네트워크(AWS VPN) 연결에서 지속적이거나 간헐적인 패킷 손실과 높은 지연 시간 문제가 발생합니다. AWS 가상 프라이빗 네트워크(AWS VPN) 내에서 문제가 발생하지 않는지 확인하려면 어떤 테스트를 실행해야 하는지 알고 싶습니다.
간략한 설명
패킷 손실의 원인은 AWS VPN 인터넷 트래픽이 온프레미스 네트워크와 Amazon VPC 간에 이동함에 따라 달라질 수 있습니다. 패킷 손실의 원인을 분리하고 확인하는 것이 가장 좋습니다.
해결 방법
네트워크 제한에 도달했는지 확인하려면 소스 및 대상 호스트에서 리소스 사용률 문제를 확인합니다. 리소스 사용률 문제는 CPUUtilization, NetworkIn 및 NetworkOut, 또는 NetworkPacketsIn 및 NetworkPacketsOut과 같은 값에서 찾을 수 있습니다.
MTR을 사용하여 ICMP 또는 TCP 패킷 손실 및 지연 시간을 확인합니다.
MTR은 시간 경과에 따른 네트워크 성능을 분석할 수 있도록 지속적으로 업데이트되는 출력을 제공합니다. 단일 네트워크 진단 도구에 traceroute 및 ping 기능을 결합합니다. ICMP 또는 TCP 패킷 손실과 지연 시간을 확인하려면 VPC에 있는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 MTR 네트워크 도구를 설치하세요.
Amazon Linux:
sudo yum install mtr
Ubuntu:
sudo apt-get install mtr
Windows:
WinMTR 설치를 위해서는 SourceForge 웹사이트를 참조하세요.
참고: Windows 운영 체제(OS)의 경우, WinMTR은 TCP 기반 MTR을 지원하지 않습니다.
EC2 인스턴스와 온프레미스 호스트의 프라이빗 및 퍼블릭 IP 주소 사이에서 다음 테스트를 실행합니다. 방향이 바뀌면 TCP/IP 네트워크의 노드 간 경로가 변경될 수 있으므로 양방향에서 MTR 결과를 얻으세요.
테스트를 실행하기 전에 다음 구성을 확인하세요.
- 보안 그룹 및 네트워크 액세스 제어 목록(네트워크 ACL) 규칙이 원본 인스턴스의 ICMP 트래픽을 허용하는지 확인합니다.
- 대상 인스턴스에서 테스트 포트가 열려 있는지 확인합니다. 보안 그룹 및 네트워크 ACL 규칙이 프로토콜 및 포트의 소스로부터의 트래픽을 허용하는지 확인합니다.
TCP 기반 결과에 따라 연결에 애플리케이션 기반 패킷 손실 또는 지연 시간이 있는지 확인할 수 있습니다. MTR 버전 0.85 이상인 경우 TCP 옵션이 있습니다.
프라이빗 IP 주소 EC2 인스턴스 온프레미스 호스트 보고서:
mtr -n -c 200
프라이빗 IP 주소 EC2 인스턴스 온프레미스 호스트 보고서:
mtr -n -T -c 200 -P 443 -m 60
퍼블릭 IP 주소 EC2 인스턴스 온프레미스 호스트 보고서:
mtr -n -c 200
퍼블릭 IP 주소 EC2 인스턴스 온프레미스 호스트 보고서:
mtr -n -T -c 200 -P 443 -m 60
traceroute를 사용하여 지연 시간 또는 라우팅 문제를 확인합니다.
Linux traceroute 유틸리티는 클라이언트 노드에서 대상 노드까지의 경로를 식별합니다. 유틸리티는 각 라우터가 요청에 응답하는 데 걸리는 시간을 밀리초 단위로 기록합니다. 또한 traceroute 유틸리티는 각 홉이 목적지에 도달하기까지 걸리는 시간을 계산합니다.
제한 시간이 초과된 요청이 몇 개 있는 경우가 많으므로 대상 또는 경로의 마지막 홉에서 패킷이 손실되었는지 확인하세요. 여러 홉에 걸친 패킷 손실은 문제가 있음을 의미할 수 있습니다.
**참고:**클라이언트에서 서버로 traceroute 명령을 실행하는 것이 가장 좋습니다. 그런 다음 서버에서 클라이언트로 명령을 다시 실행합니다.
다음 명령을 실행하여 traceroute를 설치합니다.
Amazon Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get install traceroute
EC2 인스턴스와 온프레미스의 프라이빗 IP 주소를 테스트하려면 다음 명령을 실행합니다.
Amazon Linux:
sudo traceroutesudo traceroute -T -p 80
Windows:
tracerttracetcp
**참고:**이 명령은 포트 80에서 TCP 기반 추적을 수행합니다. 포트 80 또는 테스트 중인 포트가 양방향으로 열려 있는지 확인합니다.
Linux를 사용하는 경우 traceroute 옵션을 사용하여 ICMP 대신 TCP 기반 traceroute을 지정하세요. 이는 대부분의 인터넷 장치가 ICMP 기반 추적 요청의 우선 순위를 낮추기 때문입니다.
hping3을 사용하여 엔드투엔드 TCP 패킷 손실 및 지연 시간 문제 확인
die.net 웹사이트의 Hping3은 명령줄 TCP/IP 패킷 어셈블러 및 분석기로, TCP 연결을 통해 엔드투엔드 패킷 손실과 지연 시간을 측정합니다.
MTR 및 traceroute는 홉당 대기 시간을 캡처합니다. 그러나 hping3 결과는 TCP에 대한 패킷 손실과 엔드투엔드 최소, 최대 및 평균 지연 시간을 보여줍니다. hping3을 설치하려면 다음 명령을 실행합니다.
Amazon Linux:
sudo yum --enablerepo=epel install hping3
Ubuntu:
sudo apt-get 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은 winsize가 64이고 tcp 플래그가 켜져 있지 않은 상태에서 대상 호스트의 포트 0에 TCP 헤더를 보냅니다.
tcpdump 또는 Wireshark를 사용한 패킷 캡처 샘플
문제가 복제되면 VPC의 테스트 EC2 인스턴스와 온프레미스 호스트 간에 동시 패킷 캡처를 수행합니다. 이를 통해 VPN 연결에 애플리케이션 또는 네트워크 계층 문제가 있는지 확인할 수 있습니다. 패킷 캡처를 수행하려면 Linux 인스턴스에 tcpdump를 설치하거나 Windows 인스턴스에 Wireshark를 설치합니다.
Amazon Linux에서의 tcpdump:
sudo yum install tcpdump
Ubuntu에 tcpdump를 설치:
sudo apt-get install tcpdump
Windows OS의 Wireshark :
Wireshark를 설치하려면 Wireshark 웹 사이트를 참조하세요. 그런 다음 패킷을 캡처합니다.
ECN 끄기
ECN(명시적 혼잡 알림)을 사용 설정하면 Windows 인스턴스에 연결할 때 패킷 손실 또는 성능 문제가 발생할 수 있습니다. 성능을 향상하려면 ECN을 끄세요.
ECN이 켜져 있는지 확인하려면 다음 명령을 실행합니다.
netsh interface tcp show global
ECN 기능이 켜져 있는 경우 다음 명령을 실행하여 끄세요.
netsh interface tcp set global ecncapability=disabled
관련 정보
인터넷 게이트웨이를 통해 VPC의 Amazon EC2 Linux 인스턴스와 온프레미스 호스트 간의 네트워크 성능 문제를 해결하려면 어떻게 해야 하나요?
VPC DNS 스로틀링으로 인해 Amazon 제공 DNS 서버에 대한 DNS 쿼리가 실패하는지 어떻게 확인할 수 있나요?