lxd
netplan
ubuntu18.04

Ubuntu 18.04 Server + LXDでブリッジ接続する

概要

  • LXDのコンテナをホストと同じネットワークで動かしたい
  • Ubuntu 18.04からはネットワークの設定がnetplanに変更
  • LXDは未設定

手順

bridge-utilsのインストール

$ sudo apt install bridge-utils

netplanの設定

/etc/netplan/50-cloud-init.yamlを以下のように設定。

この例では、もともとのNICインターフェースはenp3s0という名前で、
新たにbr0というブリッジを作成。
ホストのネットワーク設定は下記のようになる。

  • IPアドレス: 192.168.10.232
  • ネットマスク: 255.255.255.0
  • ゲートウェイ: 192.168.10.253
  • DNS: 192.168.10.234, 192.168.10.236
/etc/netplan/50-cloud-init.yaml
network:
    ethernets:
        enp3s0:
            dhcp4: false
    bridges:
        br0:
            interfaces:
                - enp3s0
            dhcp4: false
            addresses:
            - 192.168.10.232/24
            gateway4: 192.168.10.253
            nameservers:
                addresses:
                - 192.168.10.236
                - 192.168.10.234
            parameters:
                forward-delay: 0
                stp: false
            optional: true
    version: 2

設定ファイルの内容をnetplan applyで適用し、ip aで確認します。

$ sudo netplan apply
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:21:5a:f3:49:86 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 42:c3:b5:d3:6d:98 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.232/24 brd 192.168.10.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::40c3:b5ff:fed3:6d98/64 scope link 
       valid_lft forever preferred_lft forever
5: enp5s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:21:5a:f3:49:84 brd ff:ff:ff:ff:ff:ff

LXDの初期設定

lxd initとして、LXDの初期設定を行う。
途中、先ほど作成したブリッジbr0を利用するように設定。

  • Would you like to create a new network bridge? (yes/no) [default=yes]: noと入力
  • Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yesと入力
  • Name of the existing bridge or host interface: br0と入力
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]: no
Would you like to create a new network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Is this interface connected to your MAAS server? (yes/no) [default=yes]: no
Would you like LXD to be available over the network? (yes/no) [default=no]: no
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 

$ lxc version
Client version: 3.0.0
Server version: 3.0.0

これにて完了。