我如何设置 LXC 客户端以便它获取 dhcp 地址,从而可以在我的网络上访问它?

我如何设置 LXC 客户端以便它获取 dhcp 地址,从而可以在我的网络上访问它?

我使用以下方式设置 LXC:

lxc-create -t ubuntu -n lxcguest1

但我无法从我的 LAN 访问其上运行的任何服务,它似乎被 NAT 了。我该如何设置它才能访问它(它可能需要从我的 Linksys 路由器获取其 dhcp 地址)?

谢谢。

答案1

我自己刚刚处理过这个问题。基本上你需要设置一个桥接器并将你的网卡和容器绑定到它。这是我遵循的文章:

http://bj0z.wordpress.com/2011/08/19/howto-build-a-base-lxc-container-in-ubuntu-11-04/

听起来就像我一样,您需要“桥接”解决方案而不是 NAT 解决方案。我还关闭了默认的 LXC 桥接设置(已 NAT)。为此,只需编辑文件:/etc/default/lxc并更改USE_LXC_BRIDGE="TRUE"USE_LXC_BRIDGE="FALSE"并重新启动。

答案2

我在 Ubuntu 14.04.1 LTS (Trusty Tahr) 主机上的设置

添加到/etc/network/interfaces主机上

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 0.0.0.0

auto br0
iface br0 inet dhcp
    bridge_ports eth0

(修改后重启)

在容器配置文件中/var/lib/lxc/containername/config我设置lxc.network.link = br0

这样,容器将像主机一样从 dhcp 服务器获取公共 IP 地址。

答案3

我使用了默认的 Ubuntu LXC 设置,并将路由器配置为将 10.0.3.xxx 上的所有流量发送到 Ubuntu 机器。在启用 DD-WRT 的路由器上,设置类似于下面的屏幕截图。替换192.168.1.137为运行 LXC 的机器的 IP。其他路由器应该有类似的选项来设置静态路由(这里是Linksys 的静态路由说明, 例如)。

DD-WRT 设置静态路由到 LXC

这无关紧要,但我还使用了 DNSMasq 服务将主机名指向 LXC 容器的 IP 地址。这样我就可以http://gitlab/在网络上的任何地方访问容器。在我看来,使用主机名访问容器比记住 IP 地址要容易得多。

DD-WRT DNSMasq 设置

相关内容