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,你可以使用原始有效负载表达式语法(记录这里) 根据一块位的内容来匹配数据包。
因此,阻止查询的规则proxypipe.net
如下:
meta l4proto udp udp dport 53 @th,160,120 0x0970726f787970697065036e657400 counter drop comment "block queries for proxypipe.net"
上述代码将从传输头(@th
)的第 160 位开始抓取 120 位数据,并将它们与以下十六进制等效值进行比较:|09|proxypipe|03|net
请注意,与 iptables 版本不同,上面的版本只会匹配proxypipe.net
数据包中的固定位置。这意味着它不会阻止foobar.proxypipe.net
或任何其他子域。