SOCAT(仅限)反向隧道

SOCAT(仅限)反向隧道

我遇到一种情况,我们试图将数据从一个网络获取到另一个网络 - 特别是访问不同网络上的私有 Maven 存储库。

网络 1 包含一个 Maven 存储库。网络受到几个 SSH 跃点的保护,其中端口转发被禁用sshd

  • [笔记本电脑],使用 VPN 运行 Docker 容器到其他网络laptop

    • Docker容器vpn
  • [跳转箱]jumpbox.vpn.network.org

  • [服务器]server.vpn.network.org

我们已经成功运行 vscode-server服务器并通过以下方式连接:

socat tcp-listen:8080,fork EXEC:"ssh server.vpn.network.org nc localhost 8081"

这让笔记本电脑命中localhost:8080并将流量通过隧道传输到我们的网络server.vpn,然后进入 netcat 并将流量发送到 vscode 服务器

我认为应该可以做相反的事情,我只是陷入困境。

目标是Socks5通过类似的方式在笔记本电脑上运行代理

ssh -f -N -D 54321 localhost

然后进行socat调用server.vpn.network.org,然后使用socks环境变量我可以运行maven并让它通过连接等代理回来。

我采取的方法是尝试这样做:

socat -v TCP:localhost:54321 EXEC:"ssh server.vpn.network.org nc -lkv localhost 54321"

这是“某种”工作,但不断断开连接。

fork然后我尝试了和的组合reuseaddr,但他们似乎没有解决问题。

我的下一个方法是考虑 unix 套接字或一些时髦的东西 - 但我想知道是否有人知道如何实现这项工作。

谢谢。

答案1

我不确定我是否理解您的设置以及您想要实现的目标。如果我这样做,您可以将第一个示例替换为:

ssh -L 8080:localhost:8081 server.vpn.network.org

而反向的解决方案是:

ssh -R 54321:localhost:54321 server.vpn.network.org

相关内容