linux限制流量?centos查看网络流量

大家好,linux限制流量相信很多的网友都不是很明白,包括centos查看网络流量也是一样,不过没有关系,接下来就来为大家分享关于linux限制流量和centos查看网络流量的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

Linux下实现带宽限制的方法linux带宽限制

随着互联网应用的普及,控制网络带宽的需求也越来越大。有时候,我们可能需要控制个别协议或服务(如HTTP、FTP等)在网络中可以占用的最大带宽,以便公平地分配网络带宽。Linux操作系统下也可以给指定协议或服务实现带宽限制。

首先,安装Linux下的网络体系结构。iproute2工具集,用以实现Linux下的高级路由和流量控制。它的典型的实现形式为。

sudo apt-get install iproute2

该工具包提供了tc工具,可以在Linux下实现限速带宽,其使用方法如下:

(1)找到网卡的名字:

sudo ethtool–i eth0

(2)限制某个 IP的某个端口号的带宽,下面设置最大出站/入站带宽上限分别为 10Kbyte/s和 20Kbyte/s:

sudo tc qdisc add dev eth0 root handle 1:0 htb sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2/32 match ip dport 80 0xffff flowid 1:1 sudo tc class add dev eth0 parent 1:0 classi1:1 htb rate 10kbyte/s sudo tc class add dev eth0 parent 1:0 classi1:2 htb rate 20kbyte/s sudo tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10 sudo tc filter add dev eth0 protocol ip prio 2 u32 match ip src 192.168.0.2/32 flowid 1:2

最后,使用tc命令查看配置情况:

sudo tc-s class show dev eth0

上述方法可以一定程度上限制Linux下某网络流量的最大网络带宽。但是需要考虑到,在实践应用也还存在许多不可预料的情况,我们也要结合实际情况来做出决定和调整。

linux系统中如何限制网络流量

限制网络流量速率的一种方法是通过一个名为trickle的命令行工具。通过在程序运行时,预先加载一个速率限制 socket库的方法,trickle命令允许你改变任意一个特定程序的流量。 trickle命令有一个很好的特性是它仅在用户空间中运行,这意味着,你不必需要 root权限就可以限制一个程序的带宽使用。要能使用 trickle程序控制程序的带宽,这个程序就必须使用非静态链接库的套接字接口。

将你的 scp会话的最大上传带宽设定为 100 KB/s:

$ trickle-u 100 scp backup.tgz alice@remote_host.com:

另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux有一个工具来为你做这件事。wondershaper就是干这个的。

wondershaper实际上是一个 shell脚本,它使用 tc来定义流量调整命令,使用 QoS来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。

举个例子,将 eth0的最大下载/上传带宽分别设定为 1000Kbit/s和 500Kbit/s:

$ sudo wondershaper<interface><download-rate><upload-rate>

linux中如何控制端口流量

配置网卡

建立一台虚拟机,并安装完成后以桥接的方式在虚拟机上面添加两张网卡。分别为eth0和eth1。

eth0: a.b.c.d(外网的上网地址)

eth1: 172.16.44.1(做为内网的网关)

Tip

原先我使用eth0:0的这种虚拟网卡的形式去配置一直不成功,后来使用双网卡的时候一直忘了把eth0:0这张虚拟网卡删掉导致了限速配置一直不成功,浪费了大把的青葱。

配置iptables nat

#开启ip_forward

echo"1">/proc/sys/net/ipv4/ip_forward

#清除原来的防火墙规则

iptables-F

iptables-t nat-F

iptables-t mangle-F

#添加nat转发

iptables-t nat-A POSTROUTING-s 172.16.44.0/24-o eth0-j MASQUERADE

通过执行上面的代码后,局域网内的电脑就可以上网了。

端口转发

由于我的内网还挂了网站,所以要开启80端口的转发。

iptables-t nat-I PREROUTING-p tcp-d a.b.c.d--dport 80-j DNAT--to 172.16.44.210:80

iptables-t nat-I POSTROUTING-p tcp-d 172.16.44.210--dport 80-j SNAT--to 172.16.44.1

这条命令指定外网地址a.b.c.d的80端口转发到172.16.44.210:80上。由于是双网卡,所以需要做一下回路。

下载限速

下载限速要在eth1上面做,判断数据包的目的地址来做限制。tc包括三部分:队列、类、过滤器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比较复杂一点,而且据说性能没htb好。

#删除原来的tc规则队列

tc qdisc del dev eth1 root

#添加tc规则队列

tc qdisc add dev eth1 root handle 10: htb default 256

#生成根类

tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit

#支类列表用于限制速度

#这里的rate指的是保证带宽,ceil是最大带宽。

tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1

#添加支类规则队列

#采用sfq伪随机队列,并且10秒重置一次散列函数。

tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10

#建立网络包过滤器,设置fw。

tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10

#在iptables里面设定mark值,与上面的handle值对应。

iptables-t mangle-A POSTROUTING-d 172.16.44.130-j MARK--set-mark 1

通过上面的代码就可以限制172.16.44.130这台机子的下载速度到400kbps。

Tip

经过实际测试这里的kbps实际上就是KB/S每秒千字节。另一个单位是kbit,这个才是每秒千比特。这里的172.16.44.130也可以写成一个网段,比如:172.16.44.0/24

上传限速

上传限速的原理其实跟下载的差不多,只不过限制的网卡不同,要在eth0上过滤来源地址去限制。

#删除原来的tc规则队列

tc qdisc del dev eth0 root

#添加tc规则队列

tc qdisc add dev eth0 root handle 20: htb default 256

#生成根类

tc class add dev eth0 parent 20: classid 20:1 htb rate 100mbit ceil 100mbit

#支类列表用于限制速度

tc class add dev eth0 parent 20:1 classid 20:10 htb rate 40kbps ceil 40kbps prio 1

#添加支类规则队列

tc qdisc add dev eth0 parent 20:10 handle 201: sfq perturb 10

#建立网络包过滤器

tc filter add dev eth0 parent 20: protocol ip prio 100 handle 2 fw classid 20:10

iptables-t mangle-A PREROUTING-s 172.16.44.130-j MARK--set-mark 2

Tip

跟下载不同的是POSTROUTING要改成PREROUTING,-d改成-s。

观察连接数

通过iptables的nat连接可以通过下面的代码查看。至于统计连接数可以写代码实现,也可以利用awk,grep等工具。反正里面的内容就是文本,处理起来也比较简单。

cat/proc/net/ip_conntrack

写在结尾

到此上网、端口转发和流量限制都已经实现。下次再考虑配置个dhcp server和dnsmasq。至于一些路由器其它诸如mac地址绑定,限制上网等用到的时候再去研究研究。

阅读剩余
THE END