更正 RPi 2 中 QoS 的 iptables 设置?

Correct iptables settings for QoS in RPi 2?

我的 Raspberry Pi 2 配置为接入点,使用以下 iptables 设置:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

我正在使用 libnetfilter_queue 库的 Python 绑定。

我正在尝试对我收到的每个数据包的源端口(使用 -j NFQUEUE --queue-num x 规则)进行基本的 Qos 读取(成功),并取决于从端口 25、80 或端口发送的数据包5060 我可能会延迟或立即发送数据包。

我的问题是:最后两条规则中的哪条应该应用于 NFQUEUE 目标?

直到现在我只将数据包放在 --queue-numwlan0eth0,但我想没有必要将 NFQUEUE 目标应用于最后一条规则也监控从 eth0wlan0 的数据包...对吗?

如果您尝试对从 Internet 服务器(SMTP、HTTP、SIP)返回的数据包进行 QoS,您将需要 NFQUEUE 第二条规则。这将使您从 eth0(您的有线接口)进入的 QoS 数据包在发送到您的无线接口(wlan0)之前。

如果你想 QoS 数据包双向传输,你可以在没有 -i-o 标志的情况下执行相同的规则,然后根据 -o 标志的结果在用户空间中进行匹配=12=] 和 nfq_get_outdev 函数。

编辑

我应该再补充一点。

您决定 QoS 的方向将取决于您试图获得的内容。如果你想确保你的树莓派从它的 eth0 接口发出的所有数据包都没有被上游 (ISP) router/modem 限制,你应该对从 wlan0 到 eth0 的数据包进行 QoS。如果您更关心降低无线端的争用(即减少重传),您应该在另一个方向(eth0 到 wlan0)进行 QoS。