添加不包括SSH数据包的延迟和随机丢包

我想添加一些随机延迟/丢弃除了SSH数据包的所有数据包。

我可以这样做所有的数据包:

tc qdisc change dev $NIC root netem delay 100ms 10ms 25% tc qdisc change dev $NIC root netem loss 10% 25% 

而且我可以用这种方式使用iptables标记SSH数据包:

 iptables -N TOP iptables -I OUTPUT -j TOP iptables -A TOP -p tcp --dport 22 -j RETURN iptables -A TOP -p tcp --sport 22 -j RETURN iptables -A TOP -j MARK --set-mark 9 service iptables save 

但我不知道如何把它们结合起来? 我的意思是我找不到一个方法来将延迟/丢弃应用到除标记的所有数据包之外

您只能真正将QoS应用于出站stream量,因为您无法控制发送给您的内容。 因此,像你一样向INPUT链添加规则不会很好。

您可以使用mangle表的POSTROUTING链中的CLASSIFY目标来分类待处理的数据包。

分类

此模块允许您设置skb->优先级值(从而将数据包分类到特定的CBQ类别)。

–set-class major:minor设置主类和次类的值。 即使没有给出0x前缀,这些值也总是被解释为hex。

主要的:次要的classid是你用来处理stream量的东西。 如果你分类一些特定的stream量说classid 10:201然后在tc你创build一个父母10:200,并添加到10:201类。

请注意,要将规则添加到POSTROUTING链中,您必须明确使用mangle表

 iptables -t mangle -A POSTROUTING -p tcp -m tcp --sport 22 --set-class 100:22 -j CLASSIFY