我正在尝试将服务器 A 上的所有传入 FTP 连接转发到另一个服务器 B。我尝试使用 iptables 进行此操作,并能够在第一步进行连接。问题是,在进入被动模式并发送 MLSD 命令后,我收到一个错误,GnuTLS-Error -110: The TLS connection was non-properly terminated
并且我的连接被中止。我需要使用被动 ftp。
服务器 A(代理):
- IP 是 192.168.178.20
- IPv4 转发处于活动状态
- nf_nat_ftp 处于活动状态
- nf_conntrack_ftp 处于活动状态
iptables:
# 外部接口 tap0 和内部接口 eth0 之间转发流量的一般规则 iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE iptables -A FORWARD -i tap0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A 转发 -i eth0 -o tap0 -j 接受 # 主动/被动 FTP 的 NAT。192.168.178.21 将成为您的内部 FTP 服务器 iptables -t nat -A PREROUTING -p tcp --dport 20 -j DNAT --to 192.168.178.21:20 iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to 192.168.178.21:21 iptables -t nat -A PREROUTING -p tcp --dport 1024:65535 -j DNAT --to 192.168.178.21:1024-65535 iptables -A FORWARD -s 192.168.178.21 -p tcp --sport 20 -j ACCEPT iptables -A FORWARD -s 192.168.178.21 -p tcp --sport 21 -j ACCEPT iptables -A FORWARD -s 192.168.178.21 -p tcp --sport 1024:65535 -j ACCEPT # 允许主动/被动 FTP iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT iptables -A 输入 -p tcp --dport 21 -m 状态 --状态 NEW,ESTABLISHED -j 接受 iptables -A 输入 -p tcp --dport 20 -m 状态 --状态 ESTABLISHED -j 接受 iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
(德语)从 FileZilla 到代理的连接日志:
状态:已绑定,已收到意愿通知... 状态: 正在初始化 TLS... 状态:已测试证书... 状态:已完成 TLS 连接。 状态: 天使 状态:已发布 内容... 受益人:PWD 答案:257 “/” 是您当前的位置 类型 I 答案:200 TYPE 现在是 8 位二进制 原因:PASV 答案:227 进入被动模式 (192,168,178,21,156,206) 原因:MLSD 错误:GnuTLS-错误 -110:TLS 连接未正确终止。 状态:TLS 绑定未受保护的服务器 错误:中断连接:ECONNABORTED - 中断连接 错误:显示用户跨页显示的文本内容
服务器B(FTP服务器):
- 使用 pure-ftpd
- IP 是 192.168.178.21
- FTP 服务器使用端口 40110-40210
通过代理的连接到达时来自 FTP 服务器的 Syslog:
6月30日 20:06:02 ftpserver pure-ftpd: ([电子邮件保护]) [INFO] 来自 192.168.178.20 的新连接 6月30日 20:06:02 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [auth] [TLS] 6月30日 20:06:02 ftpserver pure-ftpd: ([电子邮件保护]) [INFO] SSL/TLS:已启用 TLSv1/SSLv3,采用 AES256-GCM-SHA384、256 位秘密密码 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护])[DEBUG] 命令 [用户] [ftpuser_1] 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [pass] [] 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护])[INFO] ftpuser_1 现已登录 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [opts] [UTF8 ON] 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [pbsz] [0] 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [prot] [P] 6月30日 20:06:03 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [pwd] [] 6月30日 20:06:04 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [类型] [I] 6月30日 20:06:04 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [pasv] [] 6月30日 20:06:04 ftpserver pure-ftpd: ([电子邮件保护]) [DEBUG] 命令 [mlsd] []
我能够直接连接到 ftp 服务器,所以我想知道是否必须考虑 tls。