问题描述
好的,所以我想知道如何在LXC容器上进行联网。不仅是从其他网站上获得的模糊信息,还是使它们正常工作的真正的初学者指南。由于大多数示例基本上都是供人们测试的,我想在其中运行一项服务…例如网络服务器。
我正在运行Ubuntu 12.04 LTS,并且已安装LXC,并且可以制造,启动和停止容器。我的服务器显然具有面向公众的IP,我想知道如何设置容器,使其也可以具有公共IP。由于当前容器中似乎已经有一座桥梁,所以我似乎需要为容器提供一个公共的DHCP范围以供其工作,或者为容器手动分配一个静态IP地址。
如果我想为容器静态分配IP,该怎么做?我是否需要对主机上的网桥配置进行任何更改?使用MACVLAN选项是否真的更好呢?
任何帮助,将不胜感激。
最佳思路
我的方法假定您的服务器具有单个NIC,并且您需要在主机和LXC guest虚拟机之间共享该NIC。这涉及使用桥。桥拥有并管理eth0
。主机现在在br0
而不是eth0
上配置自己的网络。 LXC guest虚拟机配置为连接到网桥。
-
在主机上,
sudo apt-get install bridge-utils
。 -
在主机上,用网桥替换
eth0
:这很危险。弄错了,您可能会被锁定在服务器之外。确保启用了本地登录,并且可以进行本地控制台访问,以便在遇到任何问题时可以还原此更改。在/etc/network/interfaces
中:-
将
auto eth0
替换为auto br0
。 -
更换:
iface eth0 inet dhcp
与:
iface br0 inet dhcp bridge_ports eth0
如果您具有静态网络配置,则将替换为:
iface eth0 inet static address ... netmask ... gateway ... etc.
与:
iface br0 inet static bridge_ports eth0 address ... netmask ... gateway ... etc.
您只是将
br0
更改为eth0
,然后添加bridge_ports eth0
行。 -
重新启动主机。如果您是在本地执行此操作,则在开始之前先运行
sudo ifdown eth0
,然后再运行sudo ifup br0
。请注意,桥接可能需要一点时间才能建立,因此在重新启动五分钟后再假设所有连接丢失。
-
-
要将给定的命名LXC容器移至公共IP:
-
停止容器。
-
在主机上,编辑
/var/lib/lxc/container_name/config
并将lxc.network.link
更改为br0
。 -
在主机上,编辑
/var/lib/lxc/container_name/rootfs/etc/network/interfaces
并按常规配置公共IP(根据需要配置DHCP或静态配置)。请注意,从容器的角度来看,该接口仍称为eth0
。 -
重新启动容器。
-
-
要更改新LXC容器的默认设置,请在主机上编辑
/etc/lxc/default.conf
并将lxc.network.link
更改为br0
。 -
如果根本不需要LXC-provided NAT桥接器(即,所有容器都将使用新的桥接器),则在主机上编辑
/etc/default/lxc
并将USE_LXC_BRIDGE
更改为"false"
,然后在主机上运行sudo service lxc restart
。