Raspbian 9 stretch で bridge インターフェイスを設定する方法

Raspbian 9 stretch で bridge インターフェイスを作成する方法について簡単にまとめます.

準備

bridge インターフェイス を作成するために bridge-utils をインストールしておきます

$ sudo apt install bridge-utils
$ sudo brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.b827xxxxxxxx       no              eth0

Bridge の設定

/etc/network/interfaces で eth0 を bridge に追加します.

auto br0
iface br0 inet manual
        bridge_ports eth0

Raspbian ではデフォルトで IP アドレスの設定等を /etc/dhcpcd.conf に書くことになっているため,こちらに設定を記述します.eth0 にも重複して IP アドレスが割り当てられることを防ぐために denyinterfaces を設定します.

denyinterfaces eth0
interface br0
# 以下必要な設定を記述 例:
static ip_address=192.168.x.yy/24

再起動して,正しく設定できていることを確認します:

$ sudo brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.b827xxxxxxxx       no              eth0

$ 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether b8:27:xx:xx:xx:xx 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 b8:27:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.x.y/24 brd 192.168.x.255 scope global br0
       valid_lft forever preferred_lft forever