目次

CentOS7 systemd-networkd でブリッジデバイス作成

2018/12/31
VirtualBoxにCentOSをインストールして試すなら注意が必要な事を追記

2018/12/30
systemd-networkdでブリッジデバイスを作成する 自分用メモ

定義ファイル群

ファイル 内容
br0.netdev ブリッジデバイス br0 の定義
br0.network ブリッジデバイス br0 のネットワーク定義
enp0s3.network 物理デバイス enp0s3 を br0 へ接続する旨の定義

ブリッジデバイスを定義

/etc/systemd/network/br0.netdev でブリッジデバイス br0 を定義する例。

br0.netdev
[NetDev]
Name=br0
Kind=bridge

br0.netdev定義後、systemd-networkdを再起動するとデバイスが作成される。

[root@heisei01 network]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:fb:b1:0d brd ff:ff:ff:ff:ff:ff
[root@heisei01 network]# vi /etc/systemd/network/br0.netdev
[root@heisei01 network]# cat /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge

[root@heisei01 network]# systemctl restart systemd-networkd
[root@heisei01 network]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:fb:b1:0d brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether b6:16:0c:86:b4:7b brd ff:ff:ff:ff:ff:ff
[root@heisei01 network]#

ブリッジデバイスと物理デバイスを接続する

ブリッジデバイス br0 に 物理デバイス enp0s3 を接続し、br0→enp0s3→LAN の形でアクセスできるようにする。

br0.network
[Match]
Name=br0
[Network]
DHCP=yes
enp0s3.network
[Match]
Name=enp0s3
[Network]
Bridge=br0

br0.network, enp0s3.networkを定義後、OSを再起動した。
※systemd-networkdサービスの再起動だと何故か前に定義した設定が残ったままになるので。

[root@heisei01 network]# vi /etc/systemd/network/br0.network
[root@heisei01 network]# cat /etc/systemd/network/br0.network
[Match]
Name=br0
[Network]
DHCP=yes

[root@heisei01 network]# vi /etc/systemd/network/enp0s3.network
[root@heisei01 network]# cat /etc/systemd/network/enp0s3.network
[Match]
Name=enp0s3
[Network]
Bridge=br0

[root@heisei01 network]# reboot

再起動した結果、この例ではDHCPから付与されたIPアドレス 192.168.1.221 が適用されている。

[root@heisei01 k896951]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:fb:b1:0d brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether b6:16:0c:86:b4:7b brd ff:ff:ff:ff:ff:ff
[root@heisei01 k896951]# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           carrier     unmanaged
  2 enp0s3           ether              degraded    configured
  3 br0              ether              routable    configured

3 links listed.
[root@heisei01 k896951]# ip addr
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 08:00:27:fb:b1:0d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a00:27ff:fefb:b10d/64 scope link
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether b6:16:0c:86:b4:7b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.221/24 brd 192.168.1.255 scope global dynamic br0
       valid_lft 86342sec preferred_lft 86342sec
    inet6 fe80::b416:cff:fe86:b47b/64 scope link
       valid_lft forever preferred_lft forever
[root@heisei01 k896951]#

備考

VirtualBox6.0でCentOSを実行していた。VMの仮想NICはVBOXホストの物理NICへブリッジ接続させ、VMで走るCentOSはVBOXホストのNICを通してLANに接続する。

物理デバイスを直接利用する場合は問題なかったが、CentOSでブリッジデバイスを使うとVM内部→外部、外部→VM内部、のどちらも通信ができなかった。
以下のようにVirtualBoxのプロミスキャスモードを「すべて許可」にすることで意図していた利用が可能となった。