边缘服务器 FTP/TFTP 服务搭建与使用(Docker 方式)

一、应用场景

本服务主要用于 边缘节点与中心节点之间的文件分发和同步,支持:

  • 边缘服务器远程部署程序与配置文件

  • 算法文件更新与 edge 端镜像同步

  • 运维团队内部临时文件传输与共享

  • Edge 系统日志、快照、调试包上传

通过标准 FTP / TFTP 协议实现轻量级文件传输,便于在受限网络环境下快速部署。

二、基础信息

项目 说明
地址 ftp://220.196.xx.xx:2121
用户名 hefu
密码 hefu123
文件存放路径 /home/ftp/hefu/

提示:为保证安全,请在生产环境修改默认用户名和密码,并限制外部访问来源网段。

三、FTP 服务部署(基于 Docker)

以下示例均基于 fauria/vsftpd 官方镜像。

1️⃣ 单机部署示例(内网地址)

docker run -d -t \ --name ftp \ --restart=always \ -p 2121:21 -p 2020:20 -p 21100-21110:21100-21110 \ -v /home/ftp:/home/vsftpd \ -e FTP_USER=write \ -e FTP_PASS=write@123 \ -e PASV_ADDRESS=10.10.0.135 \ -e PASV_ADDR_RESOLVE=YES \ -e PASV_PROMISCUOUS=YES \ -e PASV_MIN_PORT=21100 \ -e PASV_MAX_PORT=21110 \ fauria/vsftpd

2️⃣ 公网部署示例

docker run -d -t \ --name ftp \ --restart=always \ -p 2121:21 -p 2020:20 -p 21100-21110:21100-21110 \ -v /home/ftp:/home/vsftpd \ -e FTP_USER=write \ -e FTP_PASS=write@123 \ -e PASV_ADDRESS=173.248.225.186 \ -e PASV_ADDR_RESOLVE=YES \ -e PASV_PROMISCUOUS=YES \ -e PASV_MIN_PORT=21100 \ -e PASV_MAX_PORT=21110 \ fauria/vsftpd

3️⃣ 多用户示例(内部运维共享)

docker run -d -t \ --name ftp \ --restart=always \ -p 2121:21 -p 2020:20 -p 21100-21110:21100-21110 \ -v /home/ftp:/home/vsftpd \ -e FTP_USER=ftp \ -e FTP_PASS='Topnet@ftp.20@%' \ -e PASV_ADDRESS=10.11.0.101 \ -e PASV_ADDR_RESOLVE=YES \ -e PASV_PROMISCUOUS=YES \ -e PASV_MIN_PORT=21100 \ -e PASV_MAX_PORT=21110 \ fauria/vsftpd


四、TFTP 服务部署

TFTP 主要用于自动化批量更新、配置文件下发、设备固件写入等轻量场景。

部署方式同样简单:

docker run -d -t \ --name tftp \ -p 0.0.0.0:69:69/udp \ -v /home/tftp:/var/tftpboot \ pghalliday/tftp

目录 /home/tftp 即为根目录,可直接通过 tftp 客户端上传或下载文件。


五、常见问题与解决方案

1️⃣ FTP 连接正常但无法上传非 txt 文件

原因:FTP 容器目录权限或 SELinux 限制。
解决方案:

chmod -R 777 /home/ftp setenforce 0

或在 Docker 运行时加上:

--security-opt label:disable


2️⃣ 浏览器访问时出现旧文件或缓存

Windows 默认使用 IE 内核访问 FTP,会缓存目录。

临时清除:

打开 IE → 按 Ctrl + Shift + Del → 勾选"临时文件"清除。

永久禁用缓存:

控制面板 → 网络和 Internet → Internet 选项 → 常规 → 设置 → 选择"每次访问网页时检查较新版本"。


3️⃣ 连接超时或无法登录

检查:

  • 防火墙是否放行端口 20,21,21100-21110

  • PASV_ADDRESS 是否为真实可访问 IP(内外网需区分)

  • 是否使用 主动(Active)模式,某些客户端默认被动(Passive)


六、运维建议

  1. 安全建议

    • FTP 默认明文传输,推荐仅限内网使用或使用 FTPS 加密传输。

    • 可通过 firewalld 限制访问源:

      firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" accept' firewall-cmd --reload

    • 定期修改密码,限制匿名访问。

  2. 目录规划

    /home/ftp/ ├── hefu/ # 项目专用目录 ├── logs/ # 上传记录 ├── share/ # 运维共享区 └── temp/ # 临时文件缓存

  3. 容器更新

    docker pull fauria/vsftpd:latest docker restart ftp

  4. 备份与清理

    • 可使用 rsync 同步备份 /home/ftp

    • 定期清理过期文件或大文件,防止磁盘写满。

相关推荐
The Chosen One98511 分钟前
【Linux】Linux权限讲解 :写给文件的一封情书
linux·运维·服务器
Thexhy2 小时前
在centos 7上配置FIP服务器的详细教程!!!
linux·运维·centos
chao1898442 小时前
C 文件操作全解速览
服务器·c语言·c#
FJW0208142 小时前
DevOps——CI/CD持续集成与持续交付/部署的理解与部署
运维·ci/cd·devops
Java 码农3 小时前
Linux shell sed 命令基础
linux·运维·服务器
fyakm3 小时前
Linux网络接口配置:静态IP与动态IP设置(附代码示例)
linux·运维·tcp/ip
怀旧,3 小时前
【Linux系统编程】5. 基础开发⼯具(下)
linux·运维·服务器
喵叔哟3 小时前
10. 从0到上线:.NET 8 + ML.NET LTR 智能类目匹配实战--Web API 接口与前端集成:部署与生产运维:稳定性、可观测与成本
运维
杰克崔3 小时前
内核里常用宏BUG_ON/WARN_ON/WARN_ONCE
linux·运维·服务器
一枚正在学习的小白3 小时前
k8s的包管理工具helm3--流程控制语句和变量(3)
linux·运维·服务器·云原生·kubernetes