当前的需求如下:需要选择性地过滤掉远程客户端向NAT下的服务器发送的特定请求。
网络拓扑:Client—Internet—WAN–OpenWrt Router–LAN–Server
经过实践,方法如下:
# 安装iptables-mod-filter opkg update opkg install iptables-mod-filter # 丢弃包含 abcd 字符串的数据包 iptables -I FORWARD 1 -p tcp -m string --string "abcd" --algo bm -j DROP iptables -I FORWARD 1 -p udp -m string --string "abcd" --algo bm -j DROP # 恢复正常 iptables -L --line-numbers iptables -D FORWARD 1 # 这个1是刚才输出的对应序号
在执行命令后,在LAN抓包,发现对应的数据包果然不见了,证明命令生效。再执行后续的命令,在LAN抓包,又可恢复正常的不丢包状态。
对于其他网络拓扑,可把FORWARD链改为INPUT或OUTPUT。