1.
确认 FTP 类型与端口号
- 首先明确服务器是 FTP(明文,默认21)、FTPS(显式/隐式)、还是 SFTP(通过 SSH 默认22)。
- 如果是 SFTP 只需开启 22;FTP/FTPS 需同时处理控制(21)与数据端口(主动或被动模式不同)。
2.
在本地电脑上做基础连通性测试
- 使用命令行检测:Windows 下 telnet 服务器IP 21(需启用 telnet 客户端)或 PowerShell: Test-NetConnection -ComputerName x.x.x.x -Port 21。
- 使用 nc / ncat (Linux/Mac): nc -vz x.x.x.x 21;若失败,说明 TCP 层被阻断。
3.
检查 FTP 客户端设置(被动/主动模式)
- 被动(PASV):客户端连接服务器21,服务器返回一个动态数据端口,客户端向该端口建立连接。适用于客户端在 NAT 后。
- 主动(PORT):服务器回连客户端指定端口,常被客户端侧防火墙或 NAT 拦截。遇到 NAT/防火墙问题优先切换到被动模式。
4.
在服务器端配置被动端口范围(vsftpd示例)
- 编辑 /etc/vsftpd.conf,添加或确认:pasv_enable=YES;pasv_min_port=40000;pasv_max_port=50000;pasv_address=你的公网IP(或通过 NAT 映射)。
- 重启 vsftpd:sudo systemctl restart vsftpd。确保该端口段已在防火墙与路由器上开放并做端口转发。
5.
Linux 防火墙开放端口命令示例
- ufw: sudo ufw allow 21/tcp;sudo ufw allow 40000:50000/tcp;sudo ufw reload。
- firewalld: sudo firewall-cmd --add-port=21/tcp --permanent;sudo firewall-cmd --add-port=40000-50000/tcp --permanent;sudo firewall-cmd --reload。
6.
Windows Server / 本地 Windows 防火墙设置
- 打开“Windows Defender 防火墙 高级安全”,新建入站规则,允许 TCP 21 和数据端口范围。或命令:netsh advfirewall firewall add rule name="FTP 21" dir=in action=allow protocol=TCP localport=21。
- 若使用 IIS FTP 服务,启用“FTP 防火墙支持”并配置外部 IP 与被动端口范围。
7.
路由器上的 NAT 与端口转发
- 若服务器在内网,路由器要把公网 21 与被动端口段(如40000-50000)转发到内网服务器IP。
- 同时确认路由器是否有 FTP ALG/FTP Helper,某些设备启用 ALG 会干扰 PASV,必要时尝试关闭或开启看哪个可用。
8.
ISP 或数据中心可能屏蔽端口
- 部分 ISP 会屏蔽 21 或大段端口,尤其家宽。用 nmap 从外网扫描服务器:nmap -sV -p 21,40000-40010 你的公网IP。
- 若端口在外部被过滤,联系机房或 ISP 请求开放或更换端口。
9.
日志与抓包排查
- 查看服务器日志:/var/log/vsftpd.log、/var/log/messages 或 Windows 事件查看器;客户端开启详细日志或调试模式。
- 使用 Wireshark 抓包,观察是否客户端发送 PASV 后服务器给出私网地址或端口不匹配,常见 NAT 问题。
10.
常用检测与修复命令汇总
- telnet x.x.x.x 21;nc -vz x.x.x.x 21;nmap -Pn -p21,40000-50000 x.x.x.x。
- Linux 防火墙:iptables -A INPUT -p tcp --dport 21 -j ACCEPT;iptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT(视系统保存规则)。
11.
FTPS/加密连接注意事项
- FTPS(TLS)在控制通道加密后,某些 NAT 设备无法解析 PASV 中的地址,务必在服务器配置 pasv_address 为公网 IP,并开放数据端口段。
- 或考虑使用 SFTP (SSH) 以简化穿透,仅需开放 22 并进行 SSH 密钥/账号配置。
12.
问:为什么本地能 ping 通服务器但 FTP 仍连接不上?
- 答:Ping 使用 ICMP,与 TCP 端口无关。FTP 要求 TCP 的控制端口(21 或其他)与数据端口可达,可能是 TCP 端口被防火墙、路由或 ISP 屏蔽。
13.
问:被动模式下客户端连不上数据端口怎么办?
- 答:检查服务器 PASV 配置是否返回公网 IP 与正确端口段,确认路由器已做对应端口转发,并在服务器防火墙开放该端口段;若服务器返回私网 IP,需配置 pasv_address。
14.
问:如何快速判断问题出在客户端还是服务器/网络侧?
- 答:在服务器本地用 ftp/nc 连接测试本机被动/主动传输;从外网(例如手机4G或第三方远程SSH)尝试连接服务器对应端口;若外网也失败,多半是服务器防火墙或路由未配置端口转发或被 ISP 屏蔽。
来源:电脑无法连接台湾ftp服务器网络防火墙与端口配置检查要点