【问题标题】:Connect to FTP server behind a NAT and Firewall without port forwarding连接到 NAT 和防火墙后面的 FTP 服务器,无需端口转发
【发布时间】: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


【解决方案1】:

简单的解决方案是确保您的 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 地址,则一旦您的服务器与代理建立连接,代理肯定可以将流量转发到您的服务器。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 2011-05-30
      • 2012-02-06
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多