将 FTP 转发到另一台服务器

将 FTP 转发到另一台服务器

我正在尝试将服务器 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。

相关内容