New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
VPC의 EC2 Linux 또는 Windows 인스턴스와 인터넷 게이트웨이를 통한 온프레미스 호스트 간의 네트워크 성능 문제를 해결하려면 어떻게 해야 하나요?
Amazon Virtual Private Cloud(Amazon VPC)의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스와 인터넷 게이트웨이를 통한 온프레미스 호스트 간의 패킷 손실 또는 지연 문제를 해결하고 싶습니다.
간략한 설명
패킷 손실이나 지연 시간과 같은 네트워크 문제를 진단하려면 먼저 네트워크를 테스트하여 문제의 원인을 파악합니다. 문제를 해결하기 전에 성능 결과를 벤치마킹하는 것이 좋습니다.
사전 요구 사항:
- 네트워크 유틸리티가 양쪽 엔드포인트 (EC2 인스턴스 및 온프레미스 호스트) 설치되어 있는지 확인합니다.
- 향상된 네트워킹을 지원하는 EC2 인스턴스를 사용하고 드라이버가 최신 버전인지 확인합니다. 향상된 네트워킹이 활성화되지 않은 경우 Linux에서 ENA 커널 드라이버 문제 해결 또는 Elastic Network Adapter(ENA) Windows 드라이버 문제 해결을 참조하세요.
- EC2 인스턴스에 연결하여 인스턴스에 액세스합니다. EC2 인스턴스와 온프레미스 호스트 간의 종단간 연결을 확인합니다.
해결 방법
네트워크 문제를 해결하고 테스트하는 데 도움이 되는 다음 도구를 설치하세요.
- AWSSupport-SetupIPMonitoringFromVPC를 통해 패킷 손실, 지연 시간, MTR, tcptraceroute, tracepath와 같은 네트워크 지표를 수집할 수 있습니다.
- MTR을 사용하여 ICMP 또는 TCP 패킷 손실 및 지연 시간 문제를 확인합니다.
- Traceroute를 사용하여 지연 시간 또는 라우팅 문제를 확인합니다.
- Hping3을 사용하여 엔드투엔드 TCP 패킷 손실 및 지연 시간 문제를 확인합니다.
- Tcpdump를 사용하여 패킷 캡처 샘플을 분석합니다.
traceroute 또는 MTR 보고서 검토
상향식 접근 방식을 사용하여 traceroute 또는 MTR 보고서의 홉을 검토합니다. 상향식 접근 방식에서는 먼저 마지막 홉 또는 대상의 손실을 확인한 다음 이전 홉을 검토합니다.
- 패킷 손실 또는 지연 시간 문제가 마지막 홉까지 계속되면 네트워크 또는 라우팅 문제가 있을 수 있습니다.
- 해당 노드에 컨트롤 플레인 속도 제한이 있는 경우 경로의 한 홉에서 패킷 손실 또는 지연이 발생할 수 있습니다.
- 마지막으로 보고된 홉이 명령에 기록된 대상인지 확인합니다. 마지막 홉이 기록되지 않는 경우 제한적 보안 그룹에 의해 발생한 문제일 수 있습니다.
AWSSupport-SetupIPMonitoringFromVPC를 사용한 성능 테스트
이 내장 도구는 네트워크 문제를 해결하는 데 필요한 많은 지표를 수집합니다. 자세한 내용은 Amazon VPC의 네트워크 연결을 위한 디버깅 도구를 참조하세요.
Linux 인스턴스의 성능 문제 해결
Linux 성능 통계 확인
원본 인스턴스 또는 대상 인스턴스에 액세스할 수 있는 경우 CPU, 메모리 사용률, 로드 평균 관련 문제를 확인합니다..
MTR을 사용한 성능 테스트
Linux MTR 명령은 지속적으로 업데이트된 출력을 제공합니다. 이 진단 도구는 traceroute와 ping 유틸리티의 기능을 결합합니다. 이 도구의 결과를 통해 네트워크 성능을 분석할 수 있습니다. 대부분의 Linux 배포판에는 traceroute와 MTR이 사전 설치됩니다.. 배포판의 소프트웨어 패키지 관리자에서 MTR을 다운로드할 수도 있습니다.
다음 명령을 실행하여 MTR을 설치합니다.
Amazon Linux:
sudo yum install mtr
Ubuntu:
sudo apt-get install mtr-tiny
MTR을 사용하여 네트워크 성능을 테스트하려면 EC2 인스턴스의 퍼블릭 IP 주소와 온프레미스 호스트 사이에서 양방향으로 이 테스트를 실행합니다. 방향을 바꾸면 TCP/IP 네트워크의 노드 간 경로가 변경될 수 있습니다. 양방향에 대한 MTR 결과를 얻는 것이 좋습니다. 대부분의 인터넷 디바이스는 ICMP 기반 추적 요청의 우선 순위를 낮추기 때문에 ICMP 대신 TCP 기반 추적을 사용할 수 있습니다.
패킷 손실을 검토합니다. 일반적으로 단일 홉에서의 패킷 손실은 문제를 나타내지 않습니다. 손실은 “ICMP 시간 초과” 메시지가 삭제되게 하는 컨트롤 플레인 정책의 결과일 수 있습니다. 대상 홉까지 패킷 손실이 지속되거나 여러 홉에서 패킷이 손실되는 경우 이 손실은 문제를 의미할 수 있습니다.
참고: 몇 가지 요청이 시간 초과되는 경우는 흔합니다.
PUBLIC_IP를 퍼블릭 IP EC2 인스턴스 온프레미스 호스트로 교체합니다.
ICMP 기반 MTR:
mtr -n -c 200 PUBLIC_IP --report
TCP 기반 MTR:
mtr -n -T -c 200 PUBLIC_IP --report
인수 -T는 TCP 기반 MTR을 수행하고 보고서 옵션은 MTR을 보고서 모드로 전환합니다. MTR은 -c 옵션으로 지정된 주기 수만큼 실행됩니다. 통계를 인쇄한 다음 종료합니다.
참고: TCP 기반 MTR은 대상 TCP 포트 80을 MTR로 테스트하여 특정 목적지 TCP 포트에 대해 -P와 포트 번호를 추가합니다. 다음은 MTR 목적지 TCP 포트 443에 대한 예제입니다.
mtr -n -T -c 200 PUBLIC_IP -P 443 --report
traceroute를 사용한 성능 테스트
Linux traceroute 유틸리티는 클라이언트 노드에서 대상 노드까지의 경로를 식별합니다. 유틸리티는 각 라우터가 요청에 응답하는 데 걸리는 시간을 밀리초 단위로 기록합니다. 또한 이 유틸리티는 각 홉이 목적지에 도달하기까지 걸리는 시간을 계산합니다.
다음 명령을 실행하여 traceroute를 설치합니다.
Amazon Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get update
`sudo apt-get install traceroute`
참고: MTR 보고서를 실행하는 경우 traceroute가 필요하지 않습니다. MTR은 대상에 지연 시간 및 패킷 손실 통계를 제공합니다.
테스트 중인 포트 22 또는 포트가 양방향으로 열려 있는지 확인하세요. traceroute를 사용하여 네트워크 연결 문제를 해결하려면 클라이언트에서 서버로 명령을 실행합니다. 그런 다음 서버에서 클라이언트로 명령을 다시 실행합니다. 방향이 바뀌면 TCP/IP 네트워크의 노드 간 경로가 변경될 수 있습니다. 대부분의 인터넷 디바이스는 ICMP 기반 추적 요청의 우선 순위를 낮추므로 ICMP(애플리케이션 포트) 대신 TCP 기반 추적을 사용하세요.
ICMP 기반 경로 추적:
sudo traceroute -I PUBLIC_IP
TCP 기반 경로 추적:
sudo traceroute -n -T -p 22 PUBLIC_IP
인수 -T -p 22 -n은 포트 22에서 TCP 기반 추적을 수행합니다.
참고: 애플리케이션별 포트를 테스트에 사용할 수 있습니다. 특정 포트를 사용하여 경로에 애플리케이션 트래픽을 차단하는 중간 디바이스가 있는지 파악할 수 있습니다.
hping3를 사용한 성능 테스트
Hping3는 명령줄 TCP/IP 패킷 어셈블러 및 분석기로, TCP 연결을 통해 엔드투엔드 패킷 손실과 지연 시간을 측정합니다. Die.net 사이트에서 hping3를 다운로드하세요.
hping3는 ICMP 에코 요청 외에도 TCP, UDP, RAW-IP 프로토콜을 지원합니다. Hping3에는 지원 대상 채널 간에 파일을 전송할 수 있는 추적 경로 모드도 포함됩니다. Hping3는 호스트를 검사하고, 침투 테스트를 지원하고, 침입 탐지 시스템을 테스트하고, 호스트 간에 파일을 전송할 수 있습니다.
MTR 및 traceroute는 홉당 대기 시간을 캡처합니다. 그러나 hping3 결과는 패킷 손실 외에도 TCP에 대한 종단 간 최소/평균/최대 지연 시간을 보여줍니다.
hping3를 설치하려면 다음 명령을 실행합니다.
Amazon Linux 2:
RHEL 7용 EPEL 릴리스 패키지를 설치한 다음 EPEL 리포지토리를 활성화합니다.
sudo amazon-linux-extras install epel -y
Amazon Linux 2:
sudo yum --enablerepo=epel install hping3
Ubuntu:
sudo apt-get install hping3
다음 명령은 포트 0을 통해 50개의 TCP SYN 패킷을 전송합니다. 기본적으로 hping3는 창 크기가 64이고 TCP 플래그가 없는 상태에서 대상 호스트의 포트 0에 TCP 헤더를 보냅니다.
sudo hping3 -S -c 50 -V PUBLIC_IP
다음 명령은 포트 22를 통해 50개의 TCP SYN 패킷을 전송합니다.
sudo hping3 -S -c 50 -V PUBLIC_IP -p 22
참고: 포트 22 또는 테스트 중인 포트가 열려 있는지 확인합니다.
tcpdump를 사용하여 패킷 캡처 샘플 테스트
패킷 손실 또는 지연 문제를 진단할 때 EC2 인스턴스와 온프레미스 호스트에서 동시 패킷 캡처를 수행하는 것이 좋습니다. 이러한 캡처는 요청 및 응답 패킷을 식별하여 네트워킹 및 애플리케이션 계층에서 문제를 격리하는 데 도움이 될 수 있습니다. 먼저 패킷 캡처를 시작한 다음 트래픽을 시작하는 것도 모범 사례입니다. 이 작업 순서는 흐름의 모든 패킷을 캡처하는 데 도움이 됩니다.
tcpdump를 설치하려면 다음 명령을 실행합니다.
Amazon Linux:
sudo yum install tcpdump
Ubuntu:
sudo apt-get install tcpdump
tcpdump를 설치한 후 다음 명령을 실행하여 tcp 포트 22 트래픽을 캡처한 다음 출력을 pcap 파일에 저장합니다.
sudo tcpdump -i eth0 port 22 -s0 -w samplecapture.pcap
참고: tcpdump 플래그 -i는 tcpdump가 트래픽을 캡처하는 인스턴스의 인터페이스를 지정합니다. 인터페이스를 eth0에서 사용자 환경에 구성된 인터페이스로 변경해야 할 수 있습니다.
Windows의 성능 문제 해결
ECN 기능 확인
-
명시적 혼잡 알림(ECN) 기능이 켜져 있는지 확인하려면 다음 명령을 실행합니다.
netsh interface tcp show global
-
ECN 기능이 활성화된 경우 비활성화하려면 다음 명령을 실행합니다.
- netsh interface tcp set global ecncapability=disabled
-
성능이 개선되지 않으면 다음 명령을 실행하여 ECN 기능을 다시 활성화하세요.
netsh interface tcp set global ecncapability=enabled
홉 검토 및 TCP 포트 연결 문제 해결
먼저 MTR 또는 tracert를 사용하여 홉을 검토합니다.
MTR 방식:
- Sourceforge.net 웹사이트에서 WinMTR을 다운로드한 다음 설치합니다.
- 호스트 섹션에 대상 IP를 입력한 다음 시작을 선택합니다.
- 테스트를 1분 동안 실행한 다음 중단을 선택합니다
- 텍스트를 클립보드로 복사를 선택한 다음 출력을 텍스트 파일에 붙여넣습니다.
- 대상에 전파되는 % 열의 손실이 있는지 검색합니다.
참고: 호스트의 응답 없음 메시지가 있는 홉은 무시하세요. 이 메시지는 특정 홉이 ICMP 프로브에 응답하지 않음을 나타냅니다. - 상향식 접근 방식을 사용하여 MTR 보고서의 홉을 검토합니다. 예를 들어, 마지막 홉 또는 대상에서 손실을 확인한 다음 이전 홉을 검토하세요.
Tracert 방법:
MTR을 설치하지 않으려면 tracert 명령 유틸리티 도구를 사용하세요.
-
대상 URL 또는 IP 주소로 tracert를 수행합니다.
-
왕복 시간(RTT)이 갑자기 급증하는 홉이 있는지 찾아보세요. RTT의 급격한 증가는 로드가 높은 노드가 있음을 나타낼 수 있습니다. 이 부하로 인해 트래픽의 지연 또는 패킷 손실이 발생할 수 있습니다.
참고: -d 옵션은 IP 주소를 호스트 이름으로 확인하지 않습니다. 호스트 이름의 IP 확인이 필요한 경우 -d를 제거합니다.tracert -d PUBLIC_IP
-
그런 다음 TCP 포트 연결을 확인합니다.
참고: WinMTR과 tracert는 모두 ICMP 기반이므로 tracetcp를 사용하여 TCP 포트 연결 문제를 해결할 수 있습니다.
- NetworkHunt.com 웹사이트에서 tracetcp ZIP 파일을 다운로드하세요.
- Tracetcp ZIP 파일을 추출합니다.
- tracetcp.exe를 C: 드라이브로 복사합니다.
- WinPcap.org 웹사이트에서 WinPcap을 다운로드한 다음 설치합니다.
- 명령 프롬프트를 열고 C:\Users\username>cd 명령을 사용하여 C: 드라이브에 WinPcap을 루트합니다.
- tracetcp를 실행하려면 다음 명령( )을 사용하세요.
tracetcp.exehostname:port
-또는-
tracetcp.exe ip:port
Windows 작업 관리자 확인하기
원본 인스턴스 또는 대상 인스턴스에 액세스할 수 있는 경우 Windows 작업 관리자를 확인하세요. CPU 및 메모리 사용률 또는 로드 평균과 관련된 문제를 찾아보세요.
패킷 캡처 수행
참고: 패킷 손실 또는 지연 문제를 진단할 때는 EC2 인스턴스와 온프레미스 호스트에서 동시 패킷 캡처를 수행하는 것이 좋습니다. 이 작업은 요청 및 응답 패킷을 식별하여 네트워크 및 애플리케이션 계층에서 문제를 격리하는 데 도움이 됩니다. 먼저 패킷 캡처를 시작한 다음 트래픽을 시작하는 것도 모범 사례입니다. 이러한 작업은 흐름의 모든 패킷을 캡처하는 데 도움이 됩니다.
- Wireshark.org 웹사이트에서 Wireshark를 다운로드하고 설치하세요. 그런 다음 패킷을 캡처합니다.
- 다음 필터를 사용하여 패킷 캡처의 특정 소스 간 트래픽을 분리합니다. (ip.addr eq source_IP) &&(tcp.flags.syn == 1)
출력에는 해당 소스 IP에서 시작한 모든 tcp 스트림이 표시됩니다. - 관련 소스 IP 및 대상 IP가 있는 행을 선택합니다.
- (마우스 오른쪽 단추 클릭) 메뉴를 선택한 다음 Follow, TCP Stream을 선택합니다. 이 작업을 수행하면 조사하려는 소스 IP와 대상 IP 간에 TCP 흐름이 발생합니다.
- 재전송, 중복 패킷 또는 TCP 창 크기 알림(예: TCP 창 전체 또는 창 크기 0) 을 찾아보세요. 이러한 알림은 TCP 버퍼의 공간이 부족함을 나타낼 수 있습니다.
패킷 손실이 발생하거나 홉 수가 벤치마크와 크게 달라지면 네트워킹 장비 공급업체 설명서를 참조하세요. 멀티 홈 네트워크 환경에서 작업하는 경우 다른 ISP를 사용하여 이러한 테스트를 수행합니다.

관련 콘텐츠
- 질문됨 8년 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 2년 전