利用tc和iptables对ftp上传下载进行限速

概述

可以简单的将iptables理解为虚拟的防火墙,可以完成对封包的过滤、重定向和网络地址的重定向等等功能。tc主要是对流量进行一些的控制。打个比方的话tc就像建立一些限速规则,而iptables可以去选择要使用哪些规则。本次练习要求

1. Ubuntu里搭建一个FTP Server
2. 通过iptables和tc限制某个PC往FTP Server里传文件的速度为20Mbps,读文件的速度为10Mbps

一、建立ftp服务器

1、安装vsftpd

sudo apt-get install vsftpd

安装完成后可以用vsftpd -version查看安装的版本号

2、新建一个文件夹用于FTP的工作目录,在该目录下在新建两个目录一个upload一个download,将这两个目录的权限改成可读可写可操作。

3、新建FTP用户并设置密码以及工作目录

sudo useradd -d /home/peanut/ftp 123

passwd 123 设置密码 123

4、修改配置文件

sudo vim /etc/vsftpd.conf

设置属性值

anonymous_enable=NO #禁止匿名访问

local_enable=YES

write_enable =YES

local_root=/home/peanut/ftp

保存返回

5、启动vsftpd服务

sudo service vsftpd start

在cmd中输入ftp 172.21.43.2

输入账号123密码123登陆

在cmd中下载文件用get + 文件名 上传用put + 文件名

二、利用TC+IPTABLE进行限速

编写一个shell脚本
 

#! /bin/bash
#清除之前链以及表上建立的规则
sudo tc qdisc del dev eth0 root 1>/dev/null
sudo tc qdisc del dev ifb0 root 1>/dev/null
sudo tc qdisc del dev eth0 ingress
sudo iptables -t mangle -F
#TC设置的第一步先在网卡eht0上配置一个队列(有htb,cbq两种类型,这里选择了htb)    
sudo tc qdisc add dev eth0 root handle 1: htb
#设置一个class他的父类是1: 他的id是1:2。速度上限跟下限都设置成1.25m
sudo tc class add dev eth0 parent 1: classid 1:2 htb rate 1.25mbps ceil 1.25mbps
#给这个设置一个标号为2,优先级为1
sudo tc filter add dev eth0 parent 1: prio 1 protocol ip handle 2 fw flowid 1:2
#用iptables给他打上mark,.3是window的ip.2是虚拟机的ip
sudo iptables -t mangle -A POSTROUTING -s 172.21.43.2 -d 172.21.43.3 -j MARK --set-mark 2   #download
sudo iptables -t mangle -A POSTROUTING -s 172.21.43.2 -d 172.21.43.3 -j RETURN
  
#对网卡输入口(ingress)进行限速
sudo tc qdisc add dev eth0 ingress
#将发给eth0的进行重定向,发给ifb0,然后对ifb0的输出进行限速
sudo tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
sudo tc qdisc add dev ifb0 root handle 1: htb
sudo tc class add dev ifb0 parent 1: classid 1:1 htb rate 2.5mbps ceil 2.5mbps
sudo tc filter add dev ifb0 parent 1: prio 1 protocol ip u32 match ip dst 172.21.43.2 flowid 1:1

三、小结

刚开始对上传和下载进行了同样的tc限速,发现只有下载是有效果的,上传并没有作用。后来查阅资料后发现,tc只能对从网卡出去的数据流进行限速,不能对他接收的进行限速。通过查阅资料得知,可以新建一个虚拟网卡,数据流先流向虚拟网卡,在从虚拟网卡中流出,在流出的时候就利用tc进行限速。另外经过实践,速度并不能完全达到设置的值,网络的波动也会产生不小的影响。

四、参考链接

在Ubuntu上搭建FTP:https://www.cnblogs.com/YangJieCheng/p/8252577.html

tc和iptables的介绍:https://blog.csdn.net/snrnjhna/article/details/49908339

对输入方向流量的控制详解:https://blog.csdn.net/zhangskd/article/details/8240290

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值