
Iptables は文字列によってパケットを照合できます。
DNS の例:
iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|09|proxypipe|03|net" --algo bm -j DROP
nftables でこのようなマッチングを実行するにはどうすればよいでしょうか?
答え1
nftablesでは、Raw Payload Expression構文(ドキュメント化されている)を使用できます。ここ) を使用して、ビットのチャンクの内容に基づいてパケットを照合します。
したがって、クエリをブロックするルールはproxypipe.net
次のようになります。
meta l4proto udp udp dport 53 @th,160,120 0x0970726f787970697065036e657400 counter drop comment "block queries for proxypipe.net"
上記は、トランスポートヘッダーのビット160()から始まる120ビット分のデータを取得し@th
、それを次の16進数の値と比較します。|09|proxypipe|03|net
iptables バージョンとは異なり、上記はproxypipe.net
パケット内の固定位置でのみ一致することに注意してください。つまり、foobar.proxypipe.net
他のサブドメインはブロックされません。