那么,这是网络设置:
+
+--------+ +--------+ +--------+ | +--------+ +--------+ +--------+
| Client | | Client | | Client | | | Client | | Client | | Client |
+--------+ +--------+ +--------+ | +--------+ +--------+ +--------+
| | | | | | |
| | | | | | |
| v | | | v |
+----------->+------------+<--+ | +----------->+------------+<--+
|VPS Instance| | |VPS Instance|
+------------+------------+ | +------------+
| ^ | ^
| | | |
| | +----------> |
| | +----------> |
| | +----------> Now a persistant two way connection
| Initial Conn. | |
| | | for tunneling client connections back
| | | |
| For setting up a|tunnel/reverse proxy.| to the home server.
| | | |
| | | |
HS Inaccessibible | | |
| | | |
| | | |
v ISP Firewall/NAT | | ISP Firewall/NAT |
+----------------------------|------+ | +----------------------------|------+
| | | | | | |
| +-------------+---+ | | | +-------------+<--+ |
| | Home Server | | | | | Home Server | |
| +-------------+ | | | +-------------+ |
+-----------------------------------+ + +-----------------------------------+
它基本上也解释了我想要实现的目标。我有一个无法访问的服务器,我希望通过隧道传输到可访问的服务器来访问它。由于其中一个服务器不可访问,隧道不能被动;它必须是由不可访问的一个启动的活动连接。
如何才能做到这一点?有没有办法做到这一点 iptables
和一些隧道接口的组合?
一些基本的搜索引导我反向SSH隧道,隧道接口(诚然,我找不到可访问的文档,而不是高级概述,这是 太 高级)和VPN软件。
反向SSH隧道似乎是不必要的,因为它不需要保护,并且服务上运行的进程已经相当耗费资源,我不想用加密和压缩来加重它。
隧道接口:我真的找不到一个足够容易访问和低级别的文档,这些文档具有我想要的形状,同时我会理解它。
VPN软件暴露整个网络(对吗?),而我真的只想转发选择端口。而且,坦率地说,它似乎在大多数时候都很复杂。
现在,我实际上找到了一个程序来做到这一点( PortFusion ),我只是没有机会测试它的性能。此外,我觉得在Linux上应该有一种本地方式来做这件事,我似乎无法找到它的结果。