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

本篇文章给大家谈谈linux 流量控制,以及centos查看网络流量对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

听说用Linux系统可以控制流量

用ulimit这个命令。

ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何的超越都导致进程的终止。

ulimited不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)

和可同时运行的最大进程数(max user processes)无效

-a列出所有当前资源极限

-c设置core文件的最大值.单位:blocks

-d设置一个进程的数据段的最大值.单位:kbytes

-f Shell创建文件的文件大小的最大值,单位:blocks

-h指定设置某个给定资源的硬极限。如果用户拥有 root用户权限,可以增大硬极限。任何用户均可减少硬极限

-l可以锁住的物理内存的最大值

-m可以使用的常驻内存的最大值,单位:kbytes

-n每个进程可以同时打开的最大文件数

-p设置管道的最大值,单位为block,1block=512bytes

-s指定堆栈的最大值:单位:kbytes

-S指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果-H和-S标志均未指定,极限适用于以上二者

-t指定每个进程所使用的秒数,单位:seconds

-u可以运行的最大并发进程数

-v Shell可使用的最大的虚拟内存,单位:kbytes

eg: ulimit-c 1000(可以先通过ulimit-c查看原来的值)

Linux下的流量管理之道linux流量控制

随着互联网在世界范围内的深入发展, Linux下的流量管理变得越来越重要。 Linux系统是一个免费且易于使用的软件,它具有独特而强大的功能,可以有效地管理网络流量。即使是在 Linux操作系统环境中,也可以实现更好的网络管理。

流量管理的最佳方法之一是使用Linux中的报文过滤器iptables程序。iptables程序是Linux的命令行程序,可以有效地控制网络流量,包括拒绝恶意IP地址、拒绝恶意报文以及屏蔽不匹配TCP/IP协议的报文流。首先,要使用iptables需要检查系统是否已经安装iptables:

#which iptables

/usr/sbin/iptables

如果该命令没有输出任何信息,则说明iptables没有安装在系统上。可以使用以下命令将iptables安装在操作系统中:

# yum install iptables

一旦安装完毕,就可以使用以下命令来查看iptables的转发规则:

#iptables-L

接下来,将使用iptables创建一个新的链,用于控制网络流量:

#iptables–N network_traffic

之后,可以通过以下方式添加新的链规则来控制数据流:

#iptables–A network_traffic–p tcp–s 192.168.66.133–d 192.168.66.133–j ACCEPT#iptables–A network_traffic–p tcp–s 192.168.66.132–j DROP

最后,还可以使用另一种类型的流量管理,称为TCP-Flags管理。该方法可以用于筛选TCP标志位(FIN,ACK,SYN,RST,URG)。要使用该方法,首先需要使用以下命令添加链规则:

#iptables–A OUTPUT–p tcp–j tcp-flags

接下来,将使用以下命令筛选标志位:

#iptables–A OUTPUT–p tcp–m tcp–tcp-flags 0x3f–j ACCEPT

上述命令表示接受FIN,ACK,URG标志位的TCP报文。

总之,Linux下的流量管理是一项重要的任务,它可以在Linux环境中有效地控制流量,而不用管理员过度干预。使用iptables和TCP-flags可以实现比较好的流量控制,而不会影响系统性能。

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