【发布时间】:2012-02-23 23:36:47
【问题描述】:
我有一个关于 NAT 穿越的新问题要解决。 我正在部署一个 C# 应用程序,该应用程序在事件发生时启动 FTP 服务器。 问题是运行 FTP 服务器的机器位于 NAT/防火墙路由器后面,因此我无法从任何连接到 Internet 的外部 PC 访问它。 所以我希望能够从我的 PC 连接到 FTP 服务器,但端口转换不是一个选项。
我已经阅读了几篇关于打孔、UPnP 等的文章,但我不能依赖 UPnP,因为我不知道路由器是否支持它。
我已经研究过 NAT 穿越问题,此时,解决此问题的唯一方法是从运行 FTP 服务器的机器启动连接(以其他方式,它应该充当客户端,以便NAT 有一个 IP/PORT 转换规则)。但是,我认为任何 Windows FTP 服务器都没有此功能。
由于我有一个未经过 Natted 的远程 VPS 服务器,并且我可以在其中端口转发任何我想要的东西,我正在考虑通过 VPS 在客户端和服务器之间创建一条隧道。
FTP Server(开始连接)--> VPS ---> Client(连接)
FTP 服务器
但是我不知道是否有办法按照我的解释进行操作,或者是否有更简单的方法可以做到这一点。任何帮助表示赞赏。
【问题讨论】:
-
为什么在事件发生时启动 FTP 服务器?您能否以允许您在事件发生时让客户端连接到另一个服务的方式重新构建您的解决方案?我问这个问题是希望了解更多您正在尝试解决的问题并考虑其他解决方案。
-
我需要访问机器上的文件和文件夹,通常我使用 FTP 服务器来访问。如果需要,我可以重新编码事件处理并启动其他东西。你的解决方案是什么?
-
与其在 NAT 后面的机器上启动 FTP 服务器,您不能设计一个解决方案,让该机器与外部建立连接,然后代码将数据发送出去吗?或者你真的想要完全访问这台机器,以便做更多的事情,而不仅仅是获取一些文件?
标签: c# ftp port forwarding nat