解決策 1:
IP パケットの DNS フラグのオフセットは 28 バイトであり、2 バイト フィールドの最後の 2 ビットをチェックする必要があります。u32 ルールは "28&0x000F=0x03"
です。
私のテストルールは次のとおりです:iptables -A INPUT -m u32 -p udp --sport 53 --u32 "28&0x000F=0x03" -j LOG
ところで、このファイアウォール ルールをスプリット ホライズン DNS に使用するというアイデアが気に入っています。私のネットワークのいくつかでテストする予定です。
解決策 2:
これにより、現在のスプーフィングされた UDP クエリに対する BIND9 の「拒否された」応答が削除されます!
iptables -F OUTPUT
#iptables -A OUTPUT -p udp --sport 53 -j LOG --log-prefix="OUT-UPD-RAW : "
#iptables -A OUTPUT -m u32 -p udp --sport 53 --u32 "28&0xFFFF=0x8105" -j LOG --log-prefix="STOPPED-DNS-REJECTED-REPLY "
iptables -A OUTPUT -m u32 -p udp --sport 53 --u32 "28&0xFFFF=0x8105" -j DROP
iptables -A OUTPUT -p udp --sport 53 -j LOG --log-prefix="OUT-UPD-SENT: "