一时兴起想配一台 openSUSE 的服务器,在配置 LXC 容器的时候翻车了,几经摸索终于开上了康庄大道。现在就来写一下驾驶实录吧。

基本环境配置

  • 首先安装 LXC

    1
    
    # zypper in LXC
    
  • 加载 LXC 容器的 apparmor profile

    1
    
    # apparmor_parser /etc/apparmor.d/lxc-containers
    

新建容器

  • 编写 LXC 容器配置文件

    1
    2
    3
    
    # mkdir lxc
    # cd lxc
    # vim ubuntu.conf
    

    内容如下

    1
    2
    3
    4
    5
    6
    7
    
    lxc.network.type = veth
    lxc.network.link = br0
    lxc.network.flags = up
    lxc.network.ipv4 = 10.0.6.25/24
    lxc.network.name = eth0
    lxc.network.ipv4.gateway = 10.0.6.1
    lxc.aa_allow_incomplete = 1  // 在 apparmor 保护下启动容器
    
  • 创建容器

    1
    
    # lxc-create -n ubuntu -f /root/lxc/ubuntu.conf -t download -- d ubuntu -r trusty -a amd64
    
  • 启动容器

    1
    
    # lxc-start -n ubuntu
    
  • 进入容器

    1
    
    # lxc-attach -ubuntu
    

网络设置

配置网桥

  • 在 YaST 中打开 System–Network Settings 新建网桥 br0 并配置如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    
      Network Card Setup
      ┌General──Address──Bridged Devices──────────────────────────────────────────────────────────────────────────┐
      │ Device Type                                 Configuration Name                                            │
      │ Bridge▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒↓  br0▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │
      │( ) No Link and IP Setup (Bonding Slaves)                                                                  │
      │( ) Dynamic Address  DHCP▒▒▒▒▒▒▒▒▒▒↓  DHCP both version 4 and 6▒↓                                          │
      │(x) Statically Assigned IP Address                                                                         │
      │IP Address                    Subnet Mask                    Hostname                                      │
      │10.0.6.1▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ /24▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ xxx.xxxxxxxxxxxxx.suse▒▒▒▒▒                   │
      │┌Additional Addresses─────────────────────────────────────────────────────────────────────────────────────┐│
      ││   ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐   ││
      ││   │IPv4 Address Label│IP Address│Netmask                                                            │   ││
      ││   │                                                                                                 │   ││
      ││   │                                                                                                 │   ││
      ││   │                                                                                                 │   ││
      ││   │                                                                                                 │   ││
      ││   │                                                                                                 │   ││
      ││   │                                                                                                 │   ││
      ││   │                                                                                                 │   ││
      ││   └─────────────────────────────────────────────────────────────────────────────────────────────────┘   ││
      ││    [Add][Edit][Delete]                                                                                  ││
      │└─────────────────────────────────────────────────────────────────────────────────────────────────────────┘│
      └───────────────────────────────────────────────────────────────────────────────────────────────────────────┘
     [Help]                            [Back]                                [Cancel]                            [Next]
    
    F1 Help  F3 Add  F9 Cancel  F10 Next
    
  • 在 Network Settings 中打开 Routing 标签,确保 [x] Enable IPv4 Forwarding 为选中状态

防火墙配置

  • 打开 /etc/sysconfig/SuSEfirewall2 修改配置如下

    1
    2
    3
    4
    5
    
    FW_DEV_EXT="eth0"
    FW_DEV_INT="br0"
    FW_ROUTE="yes"
    FW_MASQUERADE="yes"
    FW_MASQ_NETS="10.0.6.0/24"