沙箱操作,允许多个进程打开同一端口

时间:2019-03-25 19:47:16

标签: linux bash networking parallel-processing virtualization


背景

我有一个命令行应用程序,可用于连接端口1234上的远程设备。我无法更改端口号,并且无法访问源来重建此工具。我目前在实验室中,除SSH以外的所有端口均被阻止。为了解决这个问题,我创建了一条隧道,即:

ssh -L 1234:remotehost:1234 sshuser@remotehost

现在,我只需将CLI程序指向localhost:1234,即可将CLI工具连接到所需的主机。


问题

此CLI工具需要连续运行大约一个小时,我大约有200个远程主机可以对其进行测试。我想并行处理此任务。不幸的是,我只能使用端口1234在本地计算机上创建一个隧道。


问题

是否有一种(简单/简单/自动化)方式来监牢/沙盒化我的CLI工具,以便我可以并行启动100个实例(即通过shell脚本),以便每个实例“认为”它正在与端口{{ 1}}?例如,Docker或KVM是否提供我可以快速设置的某种匿名/按需计算节点功能?我宁可不必通过手动部署和管理大量VirtulBox主机。

1 个答案:

答案 0 :(得分:2)

简单的答案是您可以在本地使用多个IP地址。客户端上的每个本地IP地址将允许您创建另一个隧道。当前,您正在使用localhost。但是您的客户也有一个IP地址。您可以尝试以下语法来证明我的观点:

ssh -f -N -L 127.0.0.1:1234:remotehost1:1234 sshuser@remotehost1     # this is default 
ssh -f -N -L <local-IP1>:1234:remotehost2:1234 sshuser@remotehost2  # specifying non-default value <local-IP1>

现在,您只需要弄清楚如何为您的客户端提供多个IP地址(辅助地址)。然后,您可以将其扩展到2个并行会话之外。

我还在您的ssh语法中添加了-f和-N,以将ssh置于后台(-f),并且不发出任何命令。

过去,我使用-R隧道,发现我需要在服务器(/ etc / ssh / sshd_config)上启用GatewayPort。对于-L,我认为没有必要。但是,ssh手册页明确提到了与-L函数关联的GatewayPort。您可能需要玩一些。我只是在Mac上进行了尝试,并且无需考虑GatewayPorts就可以使它运行。