一时兴起想配一台 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
    
    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"