Linux FTP服务器流量控制和限制端口21
时间:2020-01-09 10:42:01 来源:igfitidea点击:
我已经在端口21和40000:41000处设置了FTP服务器作为被动ftp的范围。
如何控制Debian/CentOS/Ubuntu Linux服务器上运行的FTP服务器/服务的传出流量?
流量经过调整后,其传输速率便受到控制。
整形可能不仅是降低可用带宽,还可以用于平滑流量突发,以改善网络性能。
Linux附带了非常好的流量控制程序。
您可以使用iptables和tc命令设置保证带宽和最大带宽以限制其传出流量。
tc命令
我建议您在执行以下任何命令之前先阅读本教程和tc
命令手册页。
首先,您需要添加root qdisc,执行:
### delete old rules if any ### # /sbin/tc qdisc del dev eth0 root #### add it ### # /sbin/tc qdisc add dev eth0 root handle 11: htb default 500 r2q 1
在下面的示例中,我将为测试目的将保证带宽设置为64KB/s,最大/可突发带宽设置为128KB/s(可根据您的设置随意调整这些数字)。
添加1级课程。
此类将128kbps设置为可突发带宽:
# /sbin/tc class add dev eth0 parent 11: classid 11:1 htb rate 128kbps ceil 128kbps quantum 2048#### this is our level 2 class #### # /sbin/tc class add dev eth0 parent 11:1 classid 11:101 htb rate 64kbps ceil 128kbps prio 0 quantum 2048
您需要将叶子添加到我们的qdisc中:
# /sbin/tc qdisc add dev eth0 parent 11:101 handle 1001: sfq
最后添加我们的过滤器:
# /sbin/tc filter add dev eth0 parent 11: protocol ip handle 101 fw classid 11:101
iptables POSTROUTING规则
tc用于在Linux内核中配置流量控制。
但是,您需要使用iptables将这些规则应用于ftp tcp端口21和被动ftp tcp端口范围40000:41000,如下所示:
### iptables mangle rule ### /sbin/iptables -A POSTROUTING -t mangle -o eth0 -p tcp -m multiport --sports 21,40000:41000 -j MARK --set-xmark 101 /sbin/iptables -A POSTROUTING -t mangle -o eth0 -p tcp -m multiport --sports 21,40000:41000 -j RETURN
请注意,mangle表用于特殊的数据包更改,如下所示:
- " PREROUTING",用于在路由之前更改传入的数据包。
OUTPUT
,用于在路由之前更改本地生成的数据包。- " INPUT"用于进入服务器本身的数据包。
- " FORWARD",用于更改通过服务器路由的数据包。
POSTROUTING
,用于在数据包即将外出时对其进行更改。
这是mangle表的转储:
# /sbin/iptables-save -t mangle
输出示例:
# Generated by iptables-save v1.4.8 on Sun Sep 9 14:28:18 2012 *mangle :PREROUTING ACCEPT [353:50724] :INPUT ACCEPT [353:50724] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [490:67671] :POSTROUTING ACCEPT [490:67671] -A POSTROUTING -o eth0 -p tcp -m multiport --sports 21,40000:41000 -j MARK --set-xmark 0x65/0xffffffff -A POSTROUTING -o eth0 -p tcp -m multiport --sports 21,40000:41000 -j RETURN COMMIT # Completed on Sun Sep 9 14:28:18 2012
测试一下
使用lftp命令或者任何其他ftp客户端来测试带宽限制:
$ lftp -u username ftpservername
尝试下载一个大文件:
lftp admin@nas03:/multipedia/iso-images/centos> get CentOS-6.2-x86_64-bin-DVD1.iso