如何根据linux中的tcp选项字段进行丢包

时间:2015-12-30 20:14:32

标签: linux networking linux-kernel iptables tcp-ip

我想根据TCP选项字段删除Linux主机的传入流量。 像TCP选项30多路径TCP。 如果数据包包含多路径tcp表示法或选项字段30,那么我的Linux主机需要丢弃连接或数据包。

我的设置是主机1< - >主机2 - < - >主持人3。 主机1通过主机2将数据包发送到主机3。 主机2有两个接口eth0和eth1。 eth0连接主机1,eth1连接主机3。 当传入的eth 0数据包包含选项字段30时,我只想取消连接或丢弃数据包。

我尝试了iptables字符串比较,但它没有效果。

命令是,

sudo iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --string "Multipath TCP" --algo bm.

但是上述规则并未阻止多路径TCP通过主机2 eth0,eth1发送和接收。 主机2无法丢弃多路径TCP(选项字段30)流量。 是否可以根据选项字段删除特定的TCP数据包。

1 个答案:

答案 0 :(得分:0)

首先,您需要在host2上的FORWARDING链中添加规则(原因是数据包不是以host2为目标,也不会命中INPUT链。)

iptables中有一个选项可用于匹配TCP选项。请尝试以下iptables命令:

iptables -I FORWARD -p tcp --tcp-option 30 -j DROP