如何设置LXC guest虚拟机,使其获得dhcp地址,以便可以在网络上访问它?


Answers:


5

我自己已经解决了这个问题。基本上,您需要设置一个网桥并将您的网卡和容器绑定到该网桥。这是我关注的文章:

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"并重新启动。


1
这个解决方案让我有些困惑:它说他需要设置一个网桥,然后说该解决方案是关闭默认的网桥设置。当然,他必须打开网桥设置。我需要帮助的第二件事是,用户说网桥设置是NAT的,当然,它是桥接的(因此容器与主机位于同一网络)或是NAT(在不同的网络上并且需要路由)。我的理解是这些是互斥的吗?
John Little

1
现在,对于当前版本,这全部无效。/ etc / default / lx *完全消失了。
spyderdyne'17

5

我在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地址。


@乔纳森 如答案中所述,将br0添加到/ etc / network / interfaces后应会出现。您可能需要重新启动。
Epeli 2015年

3
谢谢。我所缺少的是要添加<username> veth br0 2 到非特权容器/etc/lxc/lxc-usernet中才能使用br0
Jonathan Y.

2

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

用于静态路由到LXC的DD-WRT设置

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

DD-WRT DNSMasq设置


1
不错的方法-试试。竖起大拇指!添加静态路由有效-路由器本身可以ping装箱的机器!但是由于许多ISP提供的路由器,端口转发由于以下原因而无法正常工作:(Error code: 4937 The IP address is not in the same subnet with LAN IP address. Please input another one. 路由器拥有192.168.xx子网,而LXD / LXC位于10.0.xx子网中)
stamster

1
是的,您的路由器需要接受一个子网掩码,我的解决方案才能正常工作。我喜欢购买路由器并添加售后固件以使疯狂的配置成为可能:-p
thirdender

1
我在家庭和办公室都使用MikroTik,但这是一种设置,其中有ISP提供的普通路由器。因此,您的想法非常简单却非常有效-KISS原则:)我喜欢它,并且会肯定使用它,因为我无法知道它们如何将那些容器还没有暴露于外部世界的解决方案。
stamster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.