Amazon Virtual Private Cloud(Amazon VPC)에서 Amazon DNS 서버에 대한 DNS 쿼리가 실패하거나 제한 시간이 초과되는 이유를 알고 싶습니다.
간략한 설명
Amazon DNS 할당량은 각 탄력적 네트워크 인터페이스에서 초당 1,024패킷(PPS)입니다. 할당량을 초과하면 Amazon Route 53에서 트래픽을 거부합니다.
VPC 흐름 로그는 애플리케이션이 Amazon DNS 서버로 보내는 트래픽을 캡처하지 않습니다. DNS 쿼리 실패의 원인을 파악하려면 패킷 캡처 또는 Traffic Mirroring을 사용하십시오.
참고: Route 53 쿼리 로그에서는 VPC.2 해석기 AmazonProvidedDNS에 도달하는 트래픽만 캡처합니다. 스로틀이 발생한 DNS 쿼리는 네트워크 인터페이스 수준에서 쿼리가 스로틀링되기 때문에 쿼리 로그에 표시되지 않습니다.
해결 방법
DNS 쿼리 실패의 원인 파악
tcpdump 사용(Linux만 해당)
tcpdump를 사용하려면 다음 단계를 완료하십시오.
-
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 다음 명령을 실행합니다.
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
INSTANCE_ID=`curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id`
sudo tcpdump -i eth0 -s 350 -C 100 -W 20 -w /var/tmp/$INSTANCE_ID.$(date +%Y-%m-%d:%H:%M:%S).pcap
참고: 위 명령은 패킷의 초기 350바이트를 캡처하고, 각각 100MB의 파일 20개를 저장한 후 이전 패킷 캡처를 덮어씁니다. 기본 네트워크 인터페이스가 eth0이 아닌 경우 위 명령의 eth0을 기본 네트워크 인터페이스로 바꾸십시오. 기본 인터페이스를 찾으려면 다음 명령을 실행하십시오.
netstat -i
-
다음 명령을 실행하여 전송된 DNS 쿼리 수를 계산합니다.
tcpdump -r <file_name.pcap> -nn dst port 53 | awk -F " " '{ print $1 }' | cut -d"." -f1 | uniq -c
Traffic Mirroring 사용
tcpdump를 사용할 수 없는 경우 Traffic Mirroring을 사용하여 DNS 쿼리의 스로틀링 여부를 파악합니다.
참고: Traffic Mirroring은 Nitro 기반 인스턴스 및 특정 비 Nitro 인스턴스 유형에 사용할 수 있습니다. Traffic Mirroring 요금이 부과됩니다.
트래픽 데이터를 캡처하고 분석하려면 다음 단계를 완료하십시오.
- Traffic Mirroring 사전 요구 사항을 완료합니다.
- 트래픽 미러 대상을 생성합니다. 대상 네트워크 인터페이스 또는 Network Load Balancer가 포트 UDP 4789에서 인바운드 트래픽을 허용하는지 확인하십시오.
- 트래픽 미러 필터를 생성합니다. 필터 설정에서 네트워크 서비스 - 선택 사항에 대해 amazon-dns가 켜져 있는지 확인하십시오.
- 트래픽 미러 세션을 생성합니다.
Traffic Mirroring은 미러링된 트래픽을 수집하여 트래픽 미러 대상에 저장합니다.
참고: Traffic Mirroring은 실시간 데이터 스트림입니다. 대상에서 미러링된 패킷을 캡처하고 .pcap 파일에 저장하려면 UDP 포트 4789에서 트래픽을 캡처하십시오.
Wireshark 사용
다음 단계를 완료하십시오.
- Wireshark에서 캡처된 트래픽을 엽니다.
참고: Wireshark를 다운로드하려면 Wireshark 웹 사이트의 다운로드 페이지를 참조하십시오.
- 통계 탭을 선택합니다.
- I/O 그래프를 선택하고 모든 옵션을 지웁니다.
- 디스플레이 필터에서 VXLAN 네트워크 식별자와 DNS 쿼리를 사용하여 필터를 추가합니다. DNS 헤더의 QR 필드는 0입니다. 예를 들어, VXLAN 네트워크 식별자가 16777215인 경우 그래프의 디스플레이 필터는 **(vxlan.vni == 16777215) && (dns.flags.response == 0)**입니다.
- 그래프를 검토합니다. 약 1024PPS로 유지되면 미러링된 소스에서 스로틀링이 발생하고 있는 것입니다.
ENA 드라이버 네트워크 성능 지표 확인
EC2 인스턴스가 다음 Elastic Network Adapter(ENA) 드라이버 버전 중 하나를 실행하는 경우 DNS 스로틀링에 대한 실시간 지표를 확인하십시오.
- Linux: 2.2.10 이상
- Window: 2.2.2.0 이상
트래픽이 다음 로컬 서비스에 대한 PPS 할당량을 초과했기 때문에 삭제된 패킷 수를 확인하려면 linklocal_allowance_exceeded를 확인하십시오.
- Amazon VPC DNS Service
- 인스턴스 메타데이터 서비스(IMDS)
- Amazon Time Sync Service
개수가 증가하고 있는지 확인하려면 지표를 여러 간격으로 확인하십시오. linklocal_allowance_exceeded 지표는 중지 및 시작 또는 재부팅으로 인한 마지막 드라이버 재시작부터 누적됩니다. 지표가 증가할 때만 문제가 발생합니다.
linklocal_allowance_exceeded 값을 가져오려면 eth0에 대해 다음 명령을 실행합니다.
ethtool -S eth0 | grep link
이름이 ens5인 인터페이스를 사용하는 인스턴스의 경우:
ethtool -S ens5 | grep link
DNS 스로틀링 문제 해결
DNS 스로틀링으로 인해 장애가 발생하는 경우 다음 작업 중 하나를 수행하여 문제를 해결하십시오.
관련 정보
트래픽 미러 대상의 개념 이해
Traffic Mirroring을 사용하여 네트워크 트래픽 복사