如何通过传入连接传输传出连接

我想下面将考虑一个黑客,但在这里:

我有机器A和B,和C.
B可以打开到A的连接,但是A 不能打开到B的连接(由于FW)。
工作:A <— B
不起作用:A —> B

我希望能够打开从A到B的连接。
有没有一种方法(工具,最好是一个操作系统工具),以允许从A到B的无缝连接启动,很可能通过从B到A的现有连接的顶部隧道

在这一天结束的时候,我希望能够成功地从A到B进行远程login:

telnet B [port number] 

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

 telnet C [port number] 

稍后编辑:

我已经提供了“静态”隧道。 但是,我会有无缝的解决scheme。
例如,configuration连接尝试到一定范围的目标IP将通过B隧道,其中C是dynamic变化的目的地。 因此,telnet 80将连接到通过B的目标

你还没有给出任何这些盒子运行的操作系统的迹象,所以我会假设unix。 如果这是错误的,请重新提出您的问题。 那就是说:

 B% ssh A -R 2200:B:22 

会将您login到A,同时build立从A到B的隧道,以便在A上连接到端口2200时,ssh会将您的数据包通过隧道传送到B上的端口22。

 B% ssh A -R 2200:C:22 

也可以工作,只要B具有到C的不间断networkingpath; 当你在A上连接到2200端口时,ssh将你连接到C上的22端口。

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

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

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