【发布时间】: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