DNS キャッシュ ポイズニング攻撃を実証したいと考えています。このために、VM に DNS サーバーを構成しました。tc と次のコマンドを使用して、199.43.133.53 および 199.43.132.53 の IP アドレスから VM への着信トラフィックを遅延させようとしています。
modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 \
match ip src 199.43.132.53/16 flowid 1:1 action mirred egress redirect dev ifb0\
tc qdisc add dev ifb0 root netem delay 5000ms
2 つの IP アドレスは、ドメインのネームサーバーに対応します。これらのルールを追加した後、VM からこれら 2 つのネームサーバーに ping を実行すると、遅延応答が発生しますが、これは問題ありません。遅らせたいのは、これらのネームサーバーからの DNS 応答です。そして、これはまだかなり速いです。
また、この VM にパケットを送信するホスト マシンで Python スクリプトを実行しています。これらのルールが VM に追加されると、Python スクリプト (Scapy と sendp を使用してパケットを書き込む) にも遅延が発生します。ただし、ホスト マシンから VM に ping を実行すると、ping の応答はかなり高速です。ホスト マシンの IP がフィルターの一部ではない場合、Python の sendp で遅延が発生するのはなぜですか。その場合、ping 応答 (ホストから VM への ping 要求) が正常で、遅延がないのはなぜですか。ここで何が欠けていますか?