架设 ftp 服务器用于网络测速搭建教程

想测出真实网络速度,别一直依赖线上测速网站。这类站点只能测出你和就近节点之间的延迟、带宽,跟从远端服务器下载文件的实际速度不是一回事。内网或者跨地域传输场景,线上测速根本反映不出真实情况。搭建一台FTP服务器,传输大文件,观察实际传输速率,这种方式最贴近真实业务场景测速。

Linux系统里用vsftpd搭建是最简单的办法。Ubuntu、Debian执行apt install vsftpd,CentOS用yum install vsftpd,安装完成就能启用。默认配置限制较多,需要修改几处参数。配置文件路径/etc/vsftpd.conf,用编辑器打开文件。找到anonymous_enable=YES改成NO,关闭匿名登录。取消local_enable=YES、write_enable=YES前面注释符号,允许本地账号登录以及写入文件。开启chroot_local_user=YES,锁定用户只能访问自家目录,提升安全性。

架设 ftp 服务器用于网络测速搭建教程

新建专门用来测速的账号。执行useradd -m speedtest,接着passwd speedtest设置登录密码。如果希望这个账号只能FTP登录,禁止SSH访问,可以把shell设置为/sbin/nologin。但vsftpd要求账号拥有合法shell才能登录,所以要把/sbin/nologin写入/etc/shells,替换成/bin/false也可行。创建测速目录,例如/home/speedtest/test,往里面放置一个大文件。用dd命令生成1GB空白文件:dd if=/dev/zero of=/home/speedtest/test/1gb.bin bs=1M count=1024,这个文件就是测速目标文件。

被动模式是FTP测速的关键。FTP协议分为主动、被动两种模式。主动模式需要客户端开放端口供服务器连接,现在防火墙、NAT环境下基本无法正常工作,被动模式必须配置。在vsftpd.conf追加配置行:pasv_enable=YES,pasv_min_port=30000,pasv_max_port=30100,pasv_address=你的服务器公网IP。被动端口范围不用设置过大,100个端口足够。防火墙放行21端口以及30000到30100端口段。Ubuntu的ufw执行ufw allow 21/tcp、ufw allow 30000:30100/tcp。云服务器还需要在安全组开放相同端口。

重启vsftpd服务:systemctl restart vsftpd。换另一台设备进行测试。Windows电脑使用FileZilla客户端,填写服务器IP、用户名speedtest、对应密码,端口21,连接模式选择被动。成功连接后打开test目录,里面存在1gb.bin文件,右键下载。FileZilla底部会展示传输速度,单位MB/s或者KB/s,这个数值就是真实下载速率。测试上传,直接把本地大文件拖拽上传,查看上传速度。

命令行同样可以测速。Linux环境使用lftp或者curl。curl -u speedtest:密码 ftp://服务器IP/test/1gb.bin -o /dev/null,命令执行过程输出下载进度与速度。lftp -u speedtest,密码 ftp://服务器IP -e "put 本地大文件; bye"用来测试上传。想要更高精度,使用ftp命令,开启hash、binary模式,执行get下载文件,记录总耗时手动计算速度。1GB文件消耗的总秒数做除法,得到MB/s,乘以8换算成Mbps。

测速过程有几个坑需要避开。磁盘IO是首要瓶颈。服务器使用机械硬盘,读写速度上限大概100MB/s出头,千兆网络理论上限125MB/s,磁盘性能会先成为短板。换成SSD测试,或者把文件放到内存盘。/dev/shm属于内存文件系统,写入大文件,读写全部在内存完成,测出的速度直接代表网络带宽。第二个问题是MTU、TCP窗口,公网跨地域测试,高延迟会导致单条TCP连接跑不满带宽,可以建立多条并发连接,像FileZilla同时传输4个文件,打满总带宽。第三个问题,测速文件体积过小,几秒传输完毕,速度还没稳定就结束。文件至少1GB,传输十几秒到几十秒,得到的平均速度才可靠。

不想部署vsftpd,Windows平台可以用FileZilla Server,图形界面,简单点选就能新建账号、设置目录、开启被动端口。也可以用Python临时启动服务:python3 -m pyftpdlib -p 21 -u speedtest -P 密码 -d /home/speedtest,单行命令,无需额外安装。测速结束直接Ctrl+C终止进程,适合临时测试场景。

FTP测速优势直观,读取数值就是真实文件传输速度,不受测速网站节点分布干扰。内网测试可以排查交换机、网线、网卡瓶颈;跨地域测试能够观察运营商之间互联质量。FTP协议本身明文传输,测速账号密码简单设置没问题,不要用来传输敏感资料。测试完成关闭服务,或者仅在内网启用,不要长期暴露公网。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。