我有一个解决NAT穿越的新问题。 我正在部署一个C#应用程序,用于在发生事件时启动FTP服务器。 问题是运行FTP服务器的机器在NAT /防火墙路由器后面,所以我无法通过任何连接到Internet的外部PC访问它。 所以我想能够从我的PC连接到FTP服务器,但端口形式不是一个选项。在没有端口转发的情况下连接到NAT和防火墙后面的FTP服务器
我读过几篇关于Hole punching,UPnP等的文章,但是我不能依靠UPnP,因为我不知道路由器是否支持它。
我已经研究了NAT穿越的问题,在这一点上,解决此问题的唯一方法是从运行FTP服务器的计算机启动连接(以其他方式它应该充当客户端) NAT具有IP/PORT转换的规则)。但是,我不认为任何Windows FTP服务器都具有此功能。
由于我的远程VPS服务器没有布置,我可以在任何端口转发任何我想要的东西,我想通过VPS在客户端和服务器之间创建隧道。
FTP服务器(启动连接到) - > VPS --->客户端(连接)
FTP服务器< --- VPS < ---客户端(回复)
但是我不知道是否有办法解决我所解释的问题,或者是否有一些简单的方法来解决问题。任何帮助表示赞赏。
为什么你在发生事件时启动FTP服务器?您是否可以重新设计您的解决方案,让您在事件发生时让客户端连接到另一个服务?我问这个问题的目的是希望更多地了解您正在尝试解决的问题,并考虑解决问题的其他方法。 – 2012-02-01 16:09:36
我需要访问计算机上的文件和文件夹,并且通常使用FTP服务器来执行此操作。 我可以重新编码事件处理,并在需要时启动其他内容。你的解决方案是什么? – CrAsHeR 2012-02-01 16:45:48
而不是在NAT后面的机器上启动FTP服务器,难道你不能构建一个解决方案,该机器与外部建立连接并且代码将数据发送出去?或者你是否真的想完全访问这台机器,以便做更多的事情而不仅仅是获取一些文件? – 2012-02-01 16:52:24