如何将我的 FTP 服务器从 NAT 后面暴露给全世界?

如何将我的 FTP 服务器从 NAT 后面暴露给全世界?

我的局域网中有vsftpd一台服务器;另一个子网中有一台假想的客户端机器,它无法直接连接到我的 FTP 服务器;两个子网之间有一个路由器,实际上是 VPN。

我无法访问路由器,因此无法执行port range任何操作iptables

OpenSSH服务器在客户端上运行,因此我可以转发单个端口。此外,我可以连接到假设的 FTP 客户端上的任何端口。因此,我认为我可以将控制端口 21 转发到客户端,并vsftpd直接连接到客户端以获取数据流(active模式)。但vsftpd500 Illegal PORT command,可能是因为客户端报告的地址与连接到端口的ipIP 不同。ssh21

1 2015.03.30 14:28:24:0263 0015|->PWD
1 2015.03.30 14:28:24:0279 0016|<-257 "/okimftp" is the current directory
1 2015.03.30 14:28:24:0279 0000|->PORT 10,3,2,9,223,67
1 2015.03.30 14:28:24:0279 0000|<-500 Illegal PORT command

因此,也许我需要FTP客户端计算机上的某些代理,这些代理可以修改控制命令中的地址(用于主动模式),并且在我的 LAN 中拥有自己的后端或控制 ssh 会话以创建额外的端口转发(用于被动模式)

答案1

用一对 解决了3proxy

我的局域网中的后端 3proxy.cfg:

auth iponly
# only allow connect to control or ephemeral ports on FTP server
allow * * ftp.company.org 21,30000-65535
socks -u

隧道:

[email protected] -R 0.0.0.0:1080:localhost:1080

客户端上的前端 3proxy.cfg:

auth iponly
# allow host names that are resolvable only remotely
fakeresolve
allow *
# chain FTP proxy to parent Socks5 proxy with remote resolve
parent 1000 socks5+ 127.0.0.1 1080
ftppr -p2121

相关内容