添加延迟和随机数据包丢失(不包括 SSH 数据包)

添加延迟和随机数据包丢失(不包括 SSH 数据包)

我想为所有数据包添加一些随机延迟/丢弃,但不包括SSH郵件。

我可以通过这种方式对所有数据包执行此操作:

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

我可以使用以下方法标记 SSH 数据包iptables这边走:

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

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

答案1

您实际上只能将 QoS 应用于出站流量,因为您无法控制发送给您的内容。因此,像您这样做一样向 INPUT 链添加规则不会有好结果。

您可以使用 mangle 表的 POSTROUTING 链中的 CLASSIFY 目标对数据包进行分类以供 tc 处理。

分类

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

--set-class major:minor 设置主要和次要类值。即使没有给出 0x 前缀,这些值也始终被解释为十六进制。

major:minor classid 是您在 tc 中用来处理流量的。如果您将某些特定流量归类为 classid 10:201,那么在 tc 中,您将创建一个父类 10:200,并将 10:201 类添加到其中。

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

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

相关内容