解決策 1:
接続タイムアウトは、DNS サーバーがまったく応答しない場合、または時間内に応答しない場合に発生します。
1 つ目は、たとえば 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 の遅延が発生します。
解決策 2:
必要なのは「ブラックホールサーバー」です。 blackhole.webpagetest.org
を使用できます (72.66.115.13
) これにより、すべてのリクエストが静かに破棄されます。
他の回答よりもこれを提案する理由は、前述のサーバーがこの唯一の目的のために確立されているためです.
例:
[email protected]:~$ 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
解決策 3:
nameserver 127.0.0.1
デフォルトの動作はすでにそうであるため、機能しません。代わりに、存在しない DNS を使用してみてください。確認するには、次のことができます:
nslookup example.com 192.0.2.10
応答がない場合は、192.0.2.10
を使用できます
解決策 4:
テスト システムで DNS サーバーを実行していない場合は、その IP アドレスを使用できるはずです。
未使用の rfc1918 アドレスを使用してみてください。
サーバーのファイアウォールを使用して、宛先ポート 53 の送信パケットをブロックできます。