【问题标题】:How to packet drop based on tcp option field in linux如何在linux中基于tcp选项字段进行丢包
【发布时间】:2016-04-04 20:18:24
【问题描述】:

我想根据 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 数据包。

【问题讨论】:

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


    【解决方案1】:

    首先,你需要在host2的FORWARDING链中添加规则(原因是数据包不是针对host2,不会命中INPUT链)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多