2012-02-01 80 views
0

我有一个解决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 < ---客户端(回复)

但是我不知道是否有办法解决我所解释的问题,或者是否有一些简单的方法来解决问题。任何帮助表示赞赏。

+0

为什么你在发生事件时启动FTP服务器?您是否可以重新设计您的解决方案,让您在事件发生时让客户端连接到另一个服务?我问这个问题的目的是希望更多地了解您正在尝试解决的问题,并考虑解决问题的其他方法。 – 2012-02-01 16:09:36

+0

我需要访问计算机上的文件和文件夹,并且通常使用FTP服务器来执行此操作。 我可以重新编码事件处理,并在需要时启动其他内容。你的解决方案是什么? – CrAsHeR 2012-02-01 16:45:48

+0

而不是在NAT后面的机器上启动FTP服务器,难道你不能构建一个解决方案,该机器与外部建立连接并且代码将数据发送出去?或者你是否真的想完全访问这台机器,以便做更多的事情而不仅仅是获取一些文件? – 2012-02-01 16:52:24

回答

0

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

However i don't know if there's a way to do what i explained or if there's some easyer way to do that. Any help is appreciated. 

你用这个其他解决方案试图做的事情是使用代理来调用的。它也类似于类似TURN的解决方案。如果配置正确并且具有公共IP地址,则一旦服务器与代理建立连接,代理就可以确保将流量转发到您的服务器。

0

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

相关问题