正文

Linux服务器使用 iptables和tc对服务器某个端口进行限速

Linux服务器使用 iptables和tc对服务器某个端口进行限速

之前发过一篇使用WonderShaper进行限速的教程,现在再发一个。

linux服务器使用WonderShaper进行网络速度限制

服务器限速是很必要的手段,某些服务商要求我们的服务器使用速度不可长时间超过某个速度,我们就可以限制服务器速度来避免违规。

另外服务器速度跑得过高时我们远程连接等也会比较卡,这时候就需要我们对某些业务端口限速然后其他端口速度不限制来达到目的。

一般如果服务器有100M带宽我们限制到90M或者95M甚至97M都可以,保留一小部分带宽来进行服务器管理即可。

教程正文

教程环境CentOS 6.x x64

一般CentOS系统会自带iptables和tc,如果没有我们就安装一下。

检查是否安装:

iptables -V

tc -V

显示下图就表示安装了,没有安装的话就是用yum来安装

Linux服务器使用 iptables和tc对服务器某个端口进行限速Linux服务器使用 iptables和tc对服务器某个端口进行限速

然后我们要限制对外的速度,就需要先找到我们要限制的网卡,使用下方命令查看网卡

ifconfig

Linux服务器使用 iptables和tc对服务器某个端口进行限速Linux服务器使用 iptables和tc对服务器某个端口进行限速

具体是哪个网卡,根据自己实际情况来判断,网卡信息上有外网IP

下面开始限速操作。

先清理iptables Mangle规则

iptables -t mangle -F

然后清理eth0网卡上原有的队列类型

tc qdisc del dev eth0 root

限制网卡上行网速

给eth0添加一个根规则,root不是root账户意思,不要曲解。

tc qdisc add dev eth0 root handle 1: htb default 1

然后创建根类。 100mbps替换成你自己服务器的实际带宽。

tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbps

再创建支类限速

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 1500Kbit ceil 2048Kbit prio 1
上面命令释义:
rate 1500Kbit 代表最大带宽1536Kbit/s,改成你想要的带宽大小即可。
ceil 2048Kbit 代表突发带宽2048Kbit/s。
ceil >= rate
1:5 意思是每5秒钟检查一次。

创建过滤器。

tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 5 fw flowid 1:5

#这里要注意的就是flowid 要和上一条的 classid对应起来。

借助iptables针对端口限速

iptables -A OUTPUT -t mangle -p tcp --sport 80 -j MARK --set-mark 5

#上面的80就是80端口。其他端口自己改就行比如HTTPS的443端口

然后就完成了限速操作,另外你的iptables要是启动的。

扩展操作

限制多个端口的速度

iptables -A OUTPUT -t mangle -p tcp --sport 80,25,443,8989 -j MARK --set-mark 5

限制端口段,比如30000到40000

iptables -A OUTPUT -t mangle -p tcp --sport 30000:40000 -j MARK --set-mark 5

 

扩展知识

kbps 中的 p 是per的缩写,意思就是“每”。

kbps = kb/s

KB/s 中的 B 是 Byte (字节数)

kb/s 中的 b 是 bit (位数)

计算机中 1Byte = 8bit

所以 1KB/s = 8kbps = 8kb/s

一般安装宽带讲的 20M 其实就是 20Mbps = 20Mb/s = (20/8) MB/s

同样,购买服务器的时候,商家说的100M带宽也是 100Mbps。

Kbit KB 输入一种计量单位。

1KB = 8Kbit

 

上行 就是上传速度。

下行 就是下载速度。