![创建 TCP 反向隧道的最佳方法](https://linux22.com/image/1394465/%E5%88%9B%E5%BB%BA%20TCP%20%E5%8F%8D%E5%90%91%E9%9A%A7%E9%81%93%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95.png)
因此,这里是网络设置:
+
+--------+ +--------+ +--------+ | +--------+ +--------+ +--------+
| 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 隧道、隧道接口(诚然,我找不到比高级概述更详细的可访问文档,而这也您可以使用以下软件来学习:高级版(High Level)和VPN软件。
反向 SSH 隧道似乎没有必要,因为它不需要保护,并且服务器上运行的进程已经相当耗费资源,我不想用加密和压缩来增加它的负担。
隧道接口:我真的找不到足够易于访问且具有我想要的形状且让我能够理解的低级文档。
VPN 软件会暴露整个网络(对吧?),而我实际上只想转发选定的端口。而且,坦率地说,大多数时候这似乎太复杂了。
现在,我实际上找到了一个程序来做到这一点(端口融合),只是还没有机会测试它的性能。此外,我觉得应该有一种在 Linux 上执行此操作的原生方法,但我似乎找不到它的结果。
答案1
我已经完成了。在 VPS 上安装 openvpn 服务器。将家庭盒子配置为客户端。OpenVPN 将允许客户端到客户端的连接。
您可以更改 VPS 另一侧的静态路由,以便它可以将流量发送到您的家庭盒子,或者在您的其他三台机器上安装 VPN 客户端。第一个例子设置起来比较困难,但维护起来比较容易。