GNU/Linux >> Linux の 問題 >  >> Linux

DNS サーバーの応答タイムアウトをシミュレートする方法は?

解決策 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 の送信パケットをブロックできます。


Linux
  1. bind9(DNSサーバー)構成ファイルを確認する方法

  2. SSH接続タイムアウトを増やす方法

  3. 専用サーバーでDNS再帰を無効にする方法

  1. 方法:ドメインネームサーバー(DNS)増幅攻撃

  2. DNSサーバーを作成する

  3. ネットワーク ケーブルのプラグが抜かれている、またはサーバーがダウンしている状態をシミュレートするにはどうすればよいですか?

  1. RHEL 8 / CentOS8LinuxにDNSサーバーをインストールする方法

  2. Nginxサーバーで504ゲートウェイのタイムアウトを修正する方法

  3. Linux サーバーを Windows DNS サーバーに登録する方法