5

我在哪里可以了解如何在 Linux 下控制/询问网络接口?我想获得特定的应用程序上传/下载速度,并对特定应用程序实施速度限制。

我特别想要可以帮助我使用 Python 编写流量整形应用程序的信息。

4

4 回答 4

6

您需要使用tc命令的 iproute2 套件。tc 命令看起来像

tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600

这是一个使用 iproute2的现有 Python 流量整形应用程序。

于 2009-10-10T15:21:46.100 回答
6

实际上,使用 linux 内核工具对每个应用程序进行整形非常困难,除非应用程序使用您可以匹配的特定 IP 地址和/或端口。

假设是这种情况,那么您需要阅读iptables特别是 fwmarks。您还需要继续阅读tc。结合这两个工具可以做你想做的事。Linux 高级路由和流量控制是一个很好的起点。

假设您的应用程序不使用一组可预测的端口/IP 地址,那么您将需要使用像Trickle这样的用户空间整形器。这会将自身插入到应用程序和内核之间,并在用户空间中为该应用程序调整流量。

我认为这些工具中没有任何直接的 python 绑定,但是使用 python 编写脚本并直接调用可执行文件会很简单。

于 2009-10-10T15:34:28.927 回答
1

特定应用程序的带宽限制(本例中为 google-chrome):

trickle -d 600 -u 200 google-chrome

单位为 kbits

以太网设备的总带宽限制:

sudo wondershaper eth0 600 200

单位再次以 kbits 为单位。将 eth0 更改为您的接口名称。它使用 tc tbf 和 htb ...

要掌握 linux 上的连接,您需要学习的命令和程序是:

ip
ifconfig
route
iptables
netstat
tc
wondershaper
trickle
iftop
iptraf-ng
wget 
curl
nslookup
dig

您需要用作参考的文件是:

https://www.lartc.org/howto/index.html

Cookbook 在本文档中有很好的示例。

一个易于阅读的流动博客页面是:

https://www.cnblogs.com/zengkefu/p/5635100.html

不要忘记用它们来做实验;)。

于 2020-07-31T09:55:45.110 回答
0

你有什么理由想使用python吗?如前所述,它可能只会移交给已为此目的开发的工具。但是,如果您环顾四周,您会发现诸如Click! modular router、之类的东西XORP,以及其他为您想做的事情提供插入的东西 - 更不用说已经提供的所有建议(例如iptablestc

于 2009-10-10T18:49:29.360 回答