我如何通过 PC“隧道”访问 ftp 服务器

网络工程 隧道
2021-07-22 00:20:23

我正在尝试使用 netsh 命令来帮助设置 FTP“隧道”。

netsh interface portproxy add v4tov4 listenport=21 listenaddress=0.0.0.0 connectport=21 connectaddress=ftpserver

如果我在机器 A 上设置隧道,这似乎很有效。如果我转到机器 B 和 ftp 到机器 A,我确实获得了 ftpserver 的登录名。但是,当我尝试发出任何命令时,我会收到类似的错误

425-Can't build data connection for x.x.x.x,64009
425 connect to network object rejected

我认为的问题是返回的连接卡在机器 A 上,因为它只转发端口 21 而不是端口 64009。我已经设置机器 A 将端口 64009 转发回机器 B,这确实进一步下降但超时后

150 Opening data connection for HOST:[FOLDERA]*.*;* (x.x.x.x,64009)

我这样做是错误的吗?或者有人可以提供建议。

基本上我试图从位于不同网络的机器 B 访问 ftp 服务器,坚果机器 A 在两个网络上(两个网卡)

2个回答

端口 21 仅用于 FTP 控制。您还必须“隧道化”端口 20,该端口用于实际数据传输。

始发主机将选择一个随机端口来发起对话,在本例中,它是端口 64009。目标主机将在该端口上回复始发主机。机器 A 从端口 64009 发送到机器 B 的端口 21。机器 B 将重播到机器 A 的端口 64009。下次机器 A 尝试开始对话时,它将使用另一个随机选择的端口,可能与机器 B 不同将需要响应该端口。

FTP 使用两个端口:端口 21 是 FTP 控制端口,端口 20 是 FTP 数据端口。

如果两个网络使用相同的寻址,Windows 有桥接模式来桥接两个网段。如果它们完全是不同的网络,那就是路由器的用途。