[server] DNS 서버 응답 시간 초과를 시뮬레이션하는 방법?

시간 초과로 인해 호스트 이름을 확인할 수없는 경우 응용 프로그램 동작을 테스트해야합니다. 설정 nameserver 127.0.0.1/etc/resolv.conf작동하지 않습니다. 관련 함수가 예외없이 즉시 반환됩니다. 테스트 장비는 Vagrant로 만든 VM으로 DHCP를 통해 IP 주소를받습니다.



답변

nameserver 127.0.0.1기본 동작은 이미 작동하지 않습니다. 대신 기존 DNS가 아닌 다른 DNS를 사용해보십시오. 확인하려면 다음을 수행하십시오.

nslookup example.com 192.0.2.10

응답이 없으면 192.0.2.10DNS 서버로 사용할 수 있습니다 .


답변

DNS 서버가 전혀 응답하지 않거나 적시에 응답하지 않으면 연결 시간 초과가 발생합니다.

첫 번째는 다음과 같은 Linux 시스템에서 DNS 서버에 대한 모든 트래픽을 간단히 차단하여 시뮬레이션 할 수 있습니다.

# iptables -I OUTPUT -p udp -d <iIP of DNS server> --dport 53 -j DROP

DROP을 대상으로 사용하면 연결 거부 오류가 발생하지 않으며 블랙홀이됩니다. 일반적으로 영역 전송을 수행 할 가능성이 없으므로 UDP 외에 TCP 프로토콜을 차단할 필요가 없습니다.

지연을 만드는 것이 약간 더 복잡합니다. 로부터 netem수동 :

# tc qdisc add dev eth0 root handle 1: prio
# tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000
# tc qdisc add dev eth0 parent 30:1 handle 31: netem  delay 200ms 10ms distribution normal
# tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32  match ip dst <IP_of_DNS_server>/32 flowid 1:3

이는 ± 10ms 임의 변동으로 200ms 지연을 생성합니다.


답변

필요한 것은 “블랙홀 서버”입니다. 당신은 사용할 수 있습니다 blackhole.webpagetest.org( 72.66.115.13자동으로 모든 요청을 드롭 것이다).

내가 다른 대답보다 이것을 제안하는 이유는 위에서 언급 한 서버 가이 유일한 목적을 위해 설립 되었기 때문입니다.

예:

barend@shells:~$ dig example.com @72.66.115.13

; <<>> DiG 9.10.3-P4-Debian <<>> example.com @72.66.115.13
;; global options: +cmd
;; connection timed out; no servers could be reached


답변

테스트 시스템에서 DNS 서버를 실행하지 않는 경우 해당 IP 주소를 사용할 수 있어야합니다.

사용하지 않는 rfc1918 주소를 사용해보십시오 .

서버의 방화벽을 사용하여 대상 포트 53으로 나가는 패킷을 차단할 수 있습니다.


답변