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地址绑定,限制上网等用到的时候再去研究研究。