连接到NAT和防火墙后面的FTP服务器,无需端口转发

本文关键字:服务器 转发 FTP NAT 防火墙 连接 | 更新日期: 2023-09-27 18:22:09

我有一个关于NAT穿越的新问题需要解决。我正在部署一个C#应用程序,该应用程序在事件发生时启动FTP服务器。问题是运行FTP服务器的机器在NAT/防火墙路由器后面,所以我无法从任何连接到互联网的外部PC访问它。所以我想能够从我的电脑连接到FTP服务器,但端口形式不是一个选项。

我读过几篇关于打孔、UPnP等的文章,但我不能依赖UPnP,因为我不知道路由器是否支持它。

我已经研究了NAT穿越的问题,在这一点上,解决这个问题的唯一方法是从运行FTP服务器的机器启动连接(换句话说,它应该充当客户端,这样NAT就有了IP/PORT转换的规则)。然而,我不认为任何Windows FTP服务器具有此功能。

由于我有一个没有Natted的远程VPS服务器,我可以在那里转发我想要的任何东西,我想通过VPS在客户端和服务器之间创建一个隧道。

FTP服务器(启动与的连接)-->VPS---->客户端(连接)

FTP服务器<---VPS<---客户(回复)

然而,我不知道是否有办法做到我所解释的,或者是否有更简单的方法。感谢您的帮助。

连接到NAT和防火墙后面的FTP服务器,无需端口转发

一个可能消除问题的解决方案是向服务器添加一个规则,其中包含以下内容:您的应用程序名称(或您使用的端口,我不建议这样做)并允许操作。仅供参考,这不是编程解决方案,而是网络解决方案。

我使用Open.NAT库。它打开端口21,并将条目添加到兼容调制解调器/路由器上的UPnP表中。检查联机打开的端口以确认连接。

可能是imho的最佳解决方案。

如果你没有开发其他人使用的应用程序,你可以使用像Hamachi这样的东西,它可以创建虚拟专用网络,使计算机像在局域网上一样工作,因此不需要端口转发。

简单的解决方案是确保您的FTP服务器具有公共IP地址并侦听传入的FTP请求。

然而,我不知道是否有办法做到我所解释的,或者是否有更简单的方法。感谢您的帮助。

您尝试使用其他解决方案的操作称为使用代理。它也类似于类似TURN的解决方案。如果配置正确,并且具有公共IP地址,那么一旦服务器与代理建立连接,代理就可以将流量转发到服务器。