1.
概述与设计目标
部署目标:在远程VPS上建立FTP代理/网关,便于通过单点公网IP对内网或多个源站做文件同步与上传代理。
为什么用mac:mac作为运维端,提供SSH、Ansible与脚本执行环境,便于一键批量部署。
关键需求:支持被动模式(PASV)端口映射、连接限制、日志、与CDN/域名协同。
防护考虑:配置DDoS速率限制、iptables规则与CDN回源白名单。
规模目标:单台网关目标支持并发连接150-300,PASV端口范围建议50-200个端口。
2.
组件选择与架构
FTP服务软件:推荐在VPS上使用vsftpd(轻量、可配置PASV端口、支持日志)。
代理层:使用HAProxy做TCP层转发(将21与PASV端口转发到后端vsftpd),或直接在网关上运行vsftpd并配合DNAT。
管理工具:在mac上使用Ansible + SSH key实现可重复、可审计的自动化部署脚本。
存储/域名:为FTP网关配置固定公网IP与域名,建议与CDN回源IP建立白名单。
DDoS防御:在VPS提供商处开启基本防护,结合iptables限速和fail2ban做连接控制。
3.
关键配置示例(vsftpd.conf)
下面是vsftpd核心配置示例,适用于Ubuntu 20.04:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
pasv_enable=YES
pasv_min_port=21000
pasv_max_port=21049
pasv_address=203.0.113.10 # 公网IP示例
4.
防火墙与端口转发策略
必须打开21端口和PASV端口范围;示例iptables规则:
iptables -A INPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 21000:21049 -m conntrack --ctstate NEW -j ACCEPT
限速建议(每IP最大并发):使用iptables recent模块或connlimit:
iptables -A INPUT -p tcp --dport 21 -m connlimit --connlimit-above 10 -j REJECT
配合fail2ban针对登录失败做自动封禁,防止暴力破解与引发的DDoS。
5.
在mac上自动化部署流程(脚本与Ansible)
先在mac生成并分发SSH密钥:ssh-keygen && ssh-copy-id user@vps。
Ansible inventory示例(hosts文件)放在mac:
[ftp_gateways]
ftp1 ansible_host=203.0.113.10 ansible_user=ubuntu
Playbook要点:安装vsftpd、上传vsftpd.conf、配置iptables、启动服务并测试端口。
在mac上运行:ansible-playbook -i hosts deploy-ftp.yml 可实现批量一键部署与回滚。
6.
真实案例:三节点网关部署与性能数据
背景:某公司用于CDN回源与合作伙伴文件交换,采用三台VPS做FTP网关(负载均衡)。
VPS规格:每台2 vCPU、4GB内存、80GB SSD,公网带宽各200Mbps,Ubuntu 20.04。
配置摘要:PASV端口21000-21049,HAProxy做源地址轮询,ufw/iptables做限速。
观测数据:并发连接峰值150,单节点稳定吞吐约180 Mbps,总体峰值约420 Mbps(3节点)。
效果:与CDN回源白名单配合后,DDoS事件中可承受短时突增并迅速拉黑异常IP。
7.
示例Ansible任务片段
下面是部署任务的关键步骤片段(YAML风格示意,仅作参考):
- name: Install vsftpd
apt: name=vsftpd state=present update_cache=yes
- name: Upload vsftpd.conf
copy: src=files/vsftpd.conf dest=/etc/vsftpd.conf owner=root group=root mode=0644
- name: Ensure iptables rules
command: iptables-restore /etc/iptables.rules
8.
运维建议与排错要点
检查被动模式:确认客户端可以连接PASV返回的IP与端口,pasv_address要写公网IP或使用负载均衡IP。
日志分析:/var/log/vsftpd.log 与 HAProxy 日志用于定位失败握手与超时。
网络监控:在mac或监控系统上用nload、iftop或Netdata监测带宽与并发。
灾备与横向扩展:使用DNS轮询或TCP负载均衡器添加更多网关节点。
安全性:定期更新软件、限制上传目录及文件类型,结合WAF与CDN策略减少攻击面。
9.
服务器清单示例(表格)
| 节点 | 公网IP | vCPU | 内存 | 作用 |
| ftp-gw-1 | 203.0.113.10 | 2 | 4GB | 前端网关/HAProxy |
| ftp-gw-2 | 203.0.113.11 | 2 | 4GB | 后端vsftpd |
| ftp-gw-3 | 203.0.113.12 | 2 | 4GB | 后端vsftpd/备份 |
10.
结论与下一步
在mac上结合脚本与Ansible可以实现FTP代理网关的可复现自动化部署。
关键点在于正确配置PASV端口、公网IP与防火墙策略以保证连通性与安全。
建议先在预生产环境验证PASV与被动数据通道,再滚动部署到线上节点。
后续可加入监控告警(Prometheus/Grafana)与基于IP信誉的自动化封堵策略以提升抗DDoS能力。
如需,我可以提供完整的Ansible playbook与一键部署脚本示例,适配你当前的VPS环境。
来源:自动化部署 mac网络ftp代理服务器 使用脚本和配置管理工具的指南