优先处理来自 LAN 计算机的流量

优先处理来自 LAN 计算机的流量

我在无头 Ubuntu 服务器上运行 torrent 客户端。此外,还有许多计算机连接到此服务器,该服务器用作互联网网关/路由器。问题是是否可以配置 iptables 以优先处理来自 eth1(lan if)的流量,而不是服务器生成的本地流量?类似于 QOS。

答案1

有几种方法可以实现您的目标。但首先,是的,这是可能的。尽管许多可能性相当复杂。

最简单的选择之一可能是在自己的用户/组下运行 torrent 守护程序。然后使用 iptables 用标志标记来自该用户/组的所有流量。然后让 tc 过滤该标志并将其放入低优先级队列中。查看此代码的底部维基百科一个想法。

对于你所问的问题,你是否只需要两个队列(图。1。),一个优先级低,一个优先级高。尽管坚持某件事可能更好更接近这个例子。您可以根据需要采用该示例,只需删除带有 nat 的部分,并使默认标记值低于您将用于守护进程生成的流量的标记。

因此,我的建议是您可以使用类似iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j MARK --set-mark 6ZZZZ 的用户标识符。

设置标志的另一种方法是使用iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j CLASSIFY --set-class X:YX 和 Y 作为类标识符,ZZZZ 作为用户标识符。

图。1:

+---------+
| root 1: |
+---------+
     |
+------------+
| class 1:1  |
+------------+
  |      |    
+----+ +----+ 
|1:10| |1:11| 
+----+ +----+

最好的办法可能是每个 fw 标记都有一片叶子。但我现在最好的建议是,阅读并尝试理解上面提到的例子根据您的需要进行调整。如果您有任何问题,请随时提出。

上面提到的例子,理解这部分内容是否重要(图 2.) 当您想要编写 iptables 规则来标记或分类流量时。 有关它的简要说明,请参见略有不同的图表看看这个

图2:

First you have to understand how packet traverse the filters with iptables:

        +------------+                +---------+               +-------------+
Packet -| PREROUTING |--- routing-----| FORWARD |-------+-------| POSTROUTING |- Packets
input   +------------+    decision    +---------+       |       +-------------+    out
                             |                          |
                        +-------+                    +--------+   
                        | INPUT |---- Local process -| OUTPUT |
                        +-------+                    +--------+

这将为您指明正确的方向:

规则、指南和方法

Linux 高级路由和流量控制方法:限制单个主机或网络掩码的速率

交通管制之旅:真实世界场景

Iptables 教程 1.2.2

答案2

服务质量是一个相当复杂的话题——@anders-fu-kiaer 发布的链接可能是最好的解决方案,但相当复杂。我根本不是这方面的专家,所以我不会发表评论。

尽管如此,通常更简单的解决方案会很有用。如果您只想限制一个程序(例如,torrent 客户端)的带宽,那么一个更简单的解决方案是使用trickle(1)。

您可以通过以下方式安装

sudo apt-get install trickle 

然后你运行一个程序

trickle -d 100 -u 50 program 

program下载带宽最高可达 100 kbps,上传带宽最高可达 50 kbps。tuxradar 上的此页面上提供了有关 trickle 的更多选项和信息: 使用 trickle 控制带宽

(1) 这与适当的 QoS 不同:“残缺”程序使用的带宽每次都会减少,而不仅仅是在对高优先级服务有需求时才会减少,就像适当的 QoS 那样。

答案3

您不能使用 iptables 执行此操作。您需要更改路由指标。

设置网络接口的路由指标 — Ubuntu 应用目录

要使所有其他接口具有比 wlan0 更高的优先级,只需运行:

ifmetric wlan0 1

要重置连接到 wlan0 的路由的度量,只需运行:

 ifmetric wlan0 0

更多信息请点击这里:http://0pointer.de/lennart/projects/ifmetric/

相关内容