我使用以下命令设置LXC:
lxc-create -t ubuntu -n lxcguest1
但是我无法从我的LAN访问在其上运行的任何服务,它似乎已被NAT。如何设置它以便可以访问它(它可能需要从Linksys路由器获取它的dhcp地址)?
谢谢。
我使用以下命令设置LXC:
lxc-create -t ubuntu -n lxcguest1
但是我无法从我的LAN访问在其上运行的任何服务,它似乎已被NAT。如何设置它以便可以访问它(它可能需要从Linksys路由器获取它的dhcp地址)?
谢谢。
Answers:
我自己已经解决了这个问题。基本上,您需要设置一个网桥并将您的网卡和容器绑定到该网桥。这是我关注的文章:
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"
并重新启动。
我在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地址。
<username> veth br0 2
到非特权容器/etc/lxc/lxc-usernet
中才能使用br0
。
我使用默认的Ubuntu LXC设置,并将路由器配置为将10.0.3.xxx上的所有流量发送到Ubuntu计算机。在启用了DD-WRT的路由器上,设置如下图所示。替换192.168.1.137
为运行LXC的计算机的IP。其他路由器应具有类似的选项来设置静态路由(例如,这是Linksys的静态路由说明)。
这无关紧要,但是我还使用DNSMasq服务将主机名指向LXC容器的IP地址。这样,我可以http://gitlab/
在网络上的任何地方访问容器。在我看来,使用主机名访问容器要比记住IP地址容易得多。
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子网中)