【问题标题】:Expose client behind NAT to internet by using a public reverse-proxy (with access to the internet) [closed]通过使用公共反向代理(可以访问互联网)将 NAT 后面的客户端暴露给互联网 [关闭]
【发布时间】:2021-12-14 21:59:48
【问题描述】:

我想了解通过公共服务器将客户端暴露在 NAT 后面的理论,例如将客户端用作代理(最好是 SOCKS5)。找到一个现成的解决方案是理想的,但理论就足够了。

指出我的意思。 NAT 后面的客户端不直接监听 TCP。它只是打开到应该公开客户端的公共服务器的 TCP 连接。 NAT 后面客户端上的 SOCKS5 代理没有直接暴露,因此拨号的 TCP 连接应该以某种方式表现得像一个 TCP 侦听器。

如果 NAT 后面的客户端连接到公共服务器,其他用户如何连接,我应该如何转发请求?

我认为这与 TeamViewer 使用的技术基本相同:

“在建立会话时,TeamViewer 会确定最佳连接类型。通过我们的主服务器握手后,70% 的情况下会通过 UDP 或 TCP 建立直接连接(即使在标准网关、NAT 和防火墙之后) . 其余连接通过 TCP 或 https 隧道通过我们高度冗余的路由器网络进行路由。您无需打开任何端口即可使用 TeamViewer。"

但具体如何?

【问题讨论】:

  • 我认为你让它变得比现在更复杂。使用 Go 代理请求非常容易。制作一个服务器,用一些参数监听请求,在该服务器中发出请求并将数据返回到前一个。
  • @Wolfgang 你的意思是 go io.Copy(server, client)io.Copy(client, server)?
  • 太棒了,很高兴它有帮助:)
  • @Wolfgang 但这仅适用于 HTTP,对吧?

标签: c# go networking proxy nat


【解决方案1】:

总而言之,对于golang中的代理服务器,你必须

  1. 创建一个服务器,通过一些参数监听请求。
  2. 收到请求后,会将请求发送到所需地址。
  3. 然后它将响应返回给私网中的原始客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多