当前位置: 首页>>技术教程>>正文


LXC容器的公用IP地址

, ,

问题描述

好的,所以我想知道如何在LXC容器上进行联网。不仅是从其他网站上获得的模糊信息,还是使它们正常工作的真正的初学者指南。由于大多数示例基本上都是供人们测试的,我想在其中运行一项服务…例如网络服务器。

我正在运行Ubuntu 12.04 LTS,并且已安装LXC,并且可以制造,启动和停止容器。我的服务器显然具有面向公众的IP,我想知道如何设置容器,使其也可以具有公共IP。由于当前容器中似乎已经有一座桥梁,所以我似乎需要为容器提供一个公共的DHCP范围以供其工作,或者为容器手动分配一个静态IP地址。

如果我想为容器静态分配IP,该怎么做?我是否需要对主机上的网桥配置进行任何更改?使用MACVLAN选项是否真的更好呢?

任何帮助,将不胜感激。

最佳思路

我的方法假定您的服务器具有单个NIC,并且您需要在主机和LXC guest虚拟机之间共享该NIC。这涉及使用桥。桥拥有并管理eth0。主机现在在br0而不是eth0上配置自己的网络。 LXC guest虚拟机配置为连接到网桥。

  1. 在主机上,sudo apt-get install bridge-utils

  2. 在主机上,用网桥替换eth0:这很危险。弄错了,您可能会被锁定在服务器之外。确保启用了本地登录,并且可以进行本地控制台访问,以便在遇到任何问题时可以还原此更改。在/etc/network/interfaces中:

    1. auto eth0替换为auto br0

    2. 更换:

      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行。

    3. 重新启动主机。如果您是在本地执行此操作,则在开始之前先运行sudo ifdown eth0,然后再运行sudo ifup br0。请注意,桥接可能需要一点时间才能建立,因此在重新启动五分钟后再假设所有连接丢失。

  3. 要将给定的命名LXC容器移至公共IP:

    1. 停止容器。

    2. 在主机上,编辑/var/lib/lxc/container_name/config并将lxc.network.link更改为br0

    3. 在主机上,编辑/var/lib/lxc/container_name/rootfs/etc/network/interfaces并按常规配置公共IP(根据需要配置DHCP或静态配置)。请注意,从容器的角度来看,该接口仍称为eth0

    4. 重新启动容器。

  4. 要更改新LXC容器的默认设置,请在主机上编辑/etc/lxc/default.conf并将lxc.network.link更改为br0

  5. 如果根本不需要LXC-provided NAT桥接器(即,所有容器都将使用新的桥接器),则在主机上编辑/etc/default/lxc并将USE_LXC_BRIDGE更改为"false",然后在主机上运行sudo service lxc restart

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9315.html,未经允许,请勿转载。