LoginSignup
17
25

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-06-19

概要

LXDのコンテナをホストと同じネットワークで動かすと、
あたかも同じネットワーク上にサーバを1台追加したように扱うことができて便利。

ただ、Ubuntu 18.04からはネットワークの設定がnetplanに変更されていて、
それまでのbrctlと/etc/network/interfacesを使った設定方法とはちょっとやり方が変わってくるので、
netplanでの設定方法とLXDの設定方法をまとめてみた。

手順

bridge-utilsのインストール

$ sudo apt install bridge-utils

→ 2019.06.29追記) これは不要かもしれない。

sysctl.conf設定

下記部分をコメントアウト。

/etc/sysctl.conf
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

設定を反映(再起動でも良い)。

$ sudo sysctl -p

netplanの設定

ホストのnetplan設定ファイル(Ubuntu 18.04 Serverでは/etc/netplan/に新たな設定ファイル作る)を以下のように設定。

この例では、もともとの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/99_config.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で確認。

なお、DHCPで取得したアドレスがある場合は、ip addr flush dev enp0s3を実行してからnetplan applyをするのだが、
SSHで接続しているときは一旦接続が切れるので注意。

$ 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

これにて完了。

LXDがすでに設定済みの場合

lxc profile edit defaultでコンテナが使うネットワークを設定する。
デフォルトであれば、lxdbr0となっている部分があるはずなので、
これを上記で作成したbr0に書き換えればOK。

後からNATネットワークを追加する場合

以下のコマンドで新規ネットワークを作成する(この例ではbr1)。

lxc network create br1

あとは作ったネットワークを使うプロファイルを作成する。
既存のdefaultなどをコピーして編集する(この例では名前をnatnetwork)。

lxc profile copy default natnetwork

lxc profile edit natnetwork

Viでネットワークを設定する箇所があるので、br0br1などと変更して保存

既存のコンテナのプロファイルを切り替えて、所属するネットワークを変更する場合は、lxc profile assignとする。

lxc profile assign CONTAINER natnetwork
17
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
25