假设您有一个主机(玉簪) 正在运行 TCP 服务(例如端口 5901 上的 VNC 服务器)。您想从另一台主机访问此服务(主机) 运行 VNC 客户端。两台主机都连接到 Internet,但有一些限制:
1.玉簪可以通过互联网使用其任意 TCP 端口进行访问
VNC 客户端主机连接到玉簪:5091直接地。
2.玉簪只能通过 SSH 从互联网访问
从主机:
ssh -L 5901:localhost:5901 usera@hosta
VNC 客户端主机连接到本地主机:5901
3.玉簪无法从互联网访问(例如,它位于 CGN/CGNAT 后面)。但是,主机可以通过互联网访问
从玉簪:
ssh -R 5901:localhost:5901 userb@hostb
VNC 客户端主机连接到本地主机:5901
4.玉簪和主机无法从互联网访问。它们位于 CGN/CGNAT 之后;它们只能创建出站连接
我们可以使用另一个主机(主机) 可以通过 Internet 使用 ssh 访问。
从玉簪:
ssh -R 5555:localhost:5901 userc@hostc
从主机:
ssh -L 5901:localhost:5555 userc@hostc
VNC 客户端主机连接到本地主机:5901
我有一个类似上述第四种情况的情况,但我不想使用第三个主机(主机),主要是因为性能和成本原因。
我有哪些替代(更便宜[=免费]且性能更好)的选择?
注1:我已经测试并确定,尽管TCP 打洞做不是对我来说,UDP 打洞 做可以工作。但是,我需要一个工具,该工具可以通过 UDP 建立面向连接(类似于 TCP)的会话,并利用 UDP 打洞技术。
笔记2:由于无法使用互联网上的任何“UDP 漏洞”程序,我决定自己编写一个。我仍在改进它,但就目前而言,它运行得相当好。你可以找到它这里。
答案1
Tor 和 tor 隐藏服务是一种选择。从技术上讲,它仍然假设使用某些第三台主机,但在我们的例子中,这将是多个此类主机的链:hosta <-> hostc1 <-> hostc2 ... <-> hostb
它不是那么快,但它是免费的、开源的和安全的。
此外,类似的选项将是任何其他覆盖网络。我首先想到的是:I2P、FreeNet、GNUnet