上下文
它曾经是“开箱即用”的工作,但几个星期前,它刚刚停止。 我猜在Ubuntu更新之后,它是一个LXC还是一个Virtualbox,甚至是一个“networking内容”更新? 我不知道,因为我不是每天都在进行这些testing。
¹假冒各种复杂的平台,只使用我实际需要的资源。
²在Windows浏览器下testing它们。
问题是:
我应该如何设置我的Virtualbox / LXC /主机networkingconfiguration才能从Virtualbox guest虚拟机访问LXC容器上的网站?
我到目前为止所做的
我目前的virtualbox设置是有2个网卡。
wlan0上的一个网桥(上网) lxcbr0上的桥(访问容器) 一个奇怪的事情:我可以从Windows VM ping LXC容器,但是我无法通过HTTP(浏览器或80端口上的telnet)访问它们。
只有实际启动的容器才能响应ping。
我尝试了一些其他的设置,但我更“猜测”比了解正在发生的事情。
我目前的workarround
我用iptables在主机上设置了一个端口,就像我在整个networking上build立一个容器一样(实际上它是这么做的)。
当我这样做时,我可以从Windows VM到达转发的容器。
但是,这绝对不是一个干净的解决scheme:
根据user228273的build议,我可以find解决这个问题的configuration:首先,我创build了一个名为tap0的tap界面,并且提出了:
ip tuntap add mode tap tap0 ip link set tap0 up
如果其中一个命令失败,可能是因为你已经有一个tap0接口。 使用该命令
ip link show
评估情况,最终改变接口名称。 现在,您可以将tap0接口添加到Ubuntu下名为lxcbr0的默认网桥。
brctl addif lxcbr0 tap0
然后,我将VirtualBoxconfiguration为在tap0接口上使用“桥接适配器”,如下所示:
然后VirtualBox实例和LXC可以“看到”彼此。
注意所有以前的命令必须以pipe理员身份运行。
有完全一样的问题。 几乎可以肯定VirtualBox的“错误”,似乎是以自己的方式进行桥接networking,可能在各种平台(Mac,Solaris和其他平台)之间保持一致。 证据:
真的很奇怪,ICMP正在通过,但TCP(可能是其他人)不是…
但是,文档也有“你仍然可以使用TAP接口来进行某些高级设置”,所以我调查了一下新的TAP到我的网桥上:
# ip tuntap add mode tap # brctl addif brY tapX # ip link set tapX up
然后调整VBox的networking设置,使用tapX而不是brY,这一切都很好(重新启动客人后)。
与两个共享同一tapX的客人进行实验,不知道它的工作如此之好。 为每个VBox客人使用一次水龙头可能是最安全的。
如果你能ping通目标,但不能访问应用程序,那么这是一个iptables的问题,几乎可以肯定。
我的猜测是在更新过程中,系统标记"net.bridge.bridge-nf-call-iptables = 1"在/etc/systcl.conf打开。
如果是这样,我不会放弃closures,而是修改iptables设置。