如何通过传入连接建立传出连接隧道

如何通过传入连接建立传出连接隧道

我猜想以下内容将被认为是黑客行为,但事实是这样的:

我有机器 A、B 和 C。B
可以打开与 A 的连接,但是 A不能打开与 B 的连接(由于 FW)。
工作:A <--- B
不工作:A ---> B

我希望能够打开从 A 到 B 的连接。
有没有办法(工具,最好是操作系统工具)来允许无缝的从 A 到 B 的连接启动,很可能是通过在从 B 到 A 的现有连接上建立隧道来实现的?

最终,我希望能够成功地从 A 远程登录到 B:

telnet B [port number]  

或者甚至是机器 C,B 可以访问,但 A 不能。从 A:

telnet C [port number]

稍后编辑:

有人向我提供“静态”隧道。但是,我希望有无缝解决方案。
例如,配置到一定范围的目标 IP 的连接尝试将通过 B 进行隧道传输,其中 C 是动态变化的目标。因此,telnet 80 将通过 B 连接到目标

答案1

您没有说明这些机器运行的是什么操作系统,所以我假设是 unix。如果这是错误的,请重新标记您的问题。也就是说:

B% ssh A -R 2200:B:22

将会让您登录到 A,同时建立从 A 到 B 的隧道,这样当您在 A 上连接到端口 2200 时,ssh 会将您的数据包通过隧道传输到 B 上的端口 22。

B% ssh A -R 2200:C:22

也能正常工作,前提是 B 到 C 有一条不间断的网络路径;当您在 A 上连接到端口 2200 时,ssh 会将您通过隧道连接到 C 上的端口 22。

答案2

如果您运行的是 UNIX 或类 UNIX 系统,请查看 OpenSSH 及其TunnelTunnelDevicePermitTunnelconfig 指令。如果您的系统支持tun设备,则应该可以配置sshsshd在主机 A 和 B 之间创建点对点(第 3 层,默认)或以太网(第 2 层)隧道。

无论哪种情况,您都必须像配置任何其他网络设备一样配置 A 和 B 上的 tun 设备(即分配 IP 地址、添加路由)。

最后,如果您想允许从 A 到 C 通过 AB 隧道建立连接,您需要确保主机 B 允许 IP 数据包转发。

相关内容