如何让docker集装箱与sshuttle工作?

我需要容器能够使用sshuttle工具。 我尝试在主机或容器中的任何一种方式。 但是没有一个会起作用。 这是我需要的:我运行: sshuttle -r mysshaccount@my.remote.server --dns 0/0在主机。 它可以帮助主机通过sshuttle访问互联网。 但是对于容器,它不能parsingDNS请求。 看来–dns会影响容器的DNSfunction。 如何使容器与主机的sshuttle工作?

如果我在容器中运行sshuttle。 看来容器在sshuttle中没有"--dns"选项的权限。

无论如何,我需要这个选项"--dns" ,因为这是中国政府防火墙(GFW)的唯一途径。

有人帮助使它工作?

试试sshuttle -l 0.0.0.0 --dns -vvr XXXXXX@YY.YY.YY.YY 0/0 ,这对我sshuttle -l 0.0.0.0 --dns -vvr XXXXXX@YY.YY.YY.YY 0/0用。 我想我们需要-l 0.0.0.0以便与“远程IP”的docker集装箱可以连接到隧道。

通常情况下,设置0.0.0.0需要监听外部可用接口,而sshuttle也是如此 。

更安全的方法将是以下 – 在您的主机上:

  1. 启动你的“正常” sshuttle实例,在localhost上监听,
  2. 启动另一个sshuttle实例,监听你的docker主机的虚拟networking接口。

例如:

 sshuttle --dns -r <your-ssh-server> 0/0 sshuttle -l 172.17.0.1 --dns -r <your-ssh-server> 0/0 

请注意,这将干扰主机< – >容器通信(如端口绑定),但它将允许为您的容器build立安全的外部连接(您可以进一步帮助排除Docker的子网,例如使用-x 172.17.0.0/24 )。