我们在使用分享一些“东西”给别人使用的时候,为了服务器的安全可能需要对其速度做一些限制。
本文就讲解利用 iptables 和 tc 对 CentOS 6+ X64 的某个或者某些端口做带宽限制。
系统环境
一般CentOS系统会自带 iptables 和 tc
没有?那么就安装一下!
检查是否安装:
iptables -V
tc -V
我们限速,只是对外网的网卡限速。
所以,我们需要看看我的外网网卡是什么?
网卡查看命令:
ifconfig
外网的网卡可能是eth0或eth1,所以自己判断!!
单位换算
这个有必要说明一下。网速统计中的几个单位的换算。
KB/s PK Kbps
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 又是什么鬼?
Kbit KB 输入一种计量单位。
1KB = 8Kbit
为什么有这些内容?
因为下面涉及到了。所以简单的说一下。
网络上行/下行
基础知识提一下.
最简单的解释:
上行 就是上传速度。
下行 就是下载速度。
一般家用网络,一般注重的是下行速度。
一般服务器网络,注重的是上行速度。
端口限速
我们只说端口限速。
演示的外网的网卡是 eth0 。
执行以下命令,请替换你自己的外网网卡名称。
1) 清理工作。
清理一下iptables Mangle规则。
iptables -t mangle -F
清理一下eth0上原有的队列类型。
tc qdisc del dev eth0 root
2) 限制上行网速
PS 本文演示只含一个规则的。
给eth0添加一个根规则。PS : 这里的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 端口。可以替换其他端口。
这样就对 80 端口限制了速度了,当然你的iptables 得启动才行。
如何限制多个端口?
iptables -A OUTPUT -t mangle -p tcp --sport 80,25,443,8989 -j MARK --set-mark 5
如何限制10000-20000端口段?
iptables -A OUTPUT -t mangle -p tcp --sport 10000:20000 -j MARK --set-mark 5
3) 限制下行网速
这里不介绍。
最后说明
TC限速配合iptables 能实现的东西比较多。
哦对了该限速可以限制SS的速度.
本文就讲解利用 iptables 和 tc 对 CentOS 6+ X64 的某个或者某些端口做带宽限制。
系统环境
一般CentOS系统会自带 iptables 和 tc
没有?那么就安装一下!
检查是否安装:
iptables -V
tc -V
我们限速,只是对外网的网卡限速。
所以,我们需要看看我的外网网卡是什么?
网卡查看命令:
ifconfig
外网的网卡可能是eth0或eth1,所以自己判断!!
单位换算
这个有必要说明一下。网速统计中的几个单位的换算。
KB/s PK Kbps
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 又是什么鬼?
Kbit KB 输入一种计量单位。
1KB = 8Kbit
为什么有这些内容?
因为下面涉及到了。所以简单的说一下。
网络上行/下行
基础知识提一下.
最简单的解释:
上行 就是上传速度。
下行 就是下载速度。
一般家用网络,一般注重的是下行速度。
一般服务器网络,注重的是上行速度。
端口限速
我们只说端口限速。
演示的外网的网卡是 eth0 。
执行以下命令,请替换你自己的外网网卡名称。
1) 清理工作。
清理一下iptables Mangle规则。
iptables -t mangle -F
清理一下eth0上原有的队列类型。
tc qdisc del dev eth0 root
2) 限制上行网速
PS 本文演示只含一个规则的。
给eth0添加一个根规则。PS : 这里的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 端口。可以替换其他端口。
这样就对 80 端口限制了速度了,当然你的iptables 得启动才行。
如何限制多个端口?
iptables -A OUTPUT -t mangle -p tcp --sport 80,25,443,8989 -j MARK --set-mark 5
如何限制10000-20000端口段?
iptables -A OUTPUT -t mangle -p tcp --sport 10000:20000 -j MARK --set-mark 5
3) 限制下行网速
这里不介绍。
最后说明
TC限速配合iptables 能实现的东西比较多。
哦对了该限速可以限制SS的速度.
No comments:
Post a Comment