🏃
Debian11 で Open vSwitch
環境について
下記のDebian11の環境で、Open vSwitch を設定してみます。
# uname -a
Linux web1 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
インストールコマンド
パッケージを利用して、apt 一発でインストールします。
# apt install --no-install-recommends openvswitch-switch
ovs-vsctl show
コマンドを実行して、エラーにならないことを確認します。
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
ovs_version: "2.15.0"
仮想ブリッジの作成
OVSの仮想ブリッジを作成します。
# ovs-vsctl add-br ovsbr0
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
Bridge ovsbr0
Port ovsbr0
Interface ovsbr0
type: internal
ovs_version: "2.15.0"
# ip link show ovsbr0
5: ovsbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 6e:2c:2d:f0:08:4b brd ff:ff:ff:ff:ff:ff
Linuxの標準の仮想ブリッジと同様、下記でリンクアップさせます。
# ip link set ovsbr0 up
# ip link show ovsbr0
5: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 6e:2c:2d:f0:08:4b brd ff:ff:ff:ff:ff:ff
IPアドレスの割り当て
ip コマンドで IP アドレスを割り当てます。
# ip address add 10.2.0.201/24 brd + dev ovsbr0
# ip addr show ovsbr0
5: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 6e:2c:2d:f0:08:4b brd ff:ff:ff:ff:ff:ff
inet 10.2.0.201/24 brd 10.2.0.255 scope global ovsbr0
valid_lft forever preferred_lft forever
inet6 fe80::6c2c:2dff:fef0:84b/64 scope link
valid_lft forever preferred_lft forever
ルーティング設定も、同様に ip コマンドで追加します。
# ip route add 10.2.0.0/16 dev ovsbr0
# ip route show 10.2.0.0/16
10.2.0.0/16 dev ovsbr0 scope link
tap デバイスの追加
ip コマンドで tap デバイスを作成します。
# ip tuntap add dev tap0 mode tap
# ip link show tap0
6: tap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether ca:b3:cb:fb:1d:92 brd ff:ff:ff:ff:ff:ff
作成した tap デバイスを、仮想ブリッジに追加します。
# ovs-vsctl add-port ovsbr0 tap0
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
Bridge ovsbr0
Port ovsbr0
Interface ovsbr0
type: internal
Port tap0
Interface tap0
ovs_version: "2.15.0"
tap デバイスをリンクアップさせます。
# ip link set tap0 up
# ip link show tap0
6: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master ovs-system state DOWN mode DEFAULT group default qlen 1000
link/ether ca:b3:cb:fb:1d:92 brd ff:ff:ff:ff:ff:ff
VLAN設定
既存のポートへVLAN設定追加
追加した tap0 ポートに、VLANの設定を追加することができます。
# ovs-vsctl set port tap0 tag=9
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
Bridge ovsbr0
Port ovsbr0
Interface ovsbr0
type: internal
Port tap0
tag: 9
Interface tap0
ovs_version: "2.15.0"
ポート新規作成時に設定
tapデバイスを追加するときに、最初からVLANの設定を施すこともできます。
# ip tuntap add dev tap1 mode tap
# ovs-vsctl add-port ovsbr0 tap1 tag=9
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
Bridge ovsbr0
Port ovsbr0
Interface ovsbr0
type: internal
Port tap0
tag: 9
Interface tap0
Port tap1
tag: 9
Interface tap1
ovs_version: "2.15.0"
追加したtapデバイスをリンクアップさせます。
# ip link set tap1 up
# ip link show tap1
7: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master ovs-system state DOWN mode DEFAULT group default qlen 1000
link/ether 92:11:56:24:be:70 brd ff:ff:ff:ff:ff:ff
OSリブート後の状態
ここまでの設定を終えた状態で、OSをリブートするとどのような状態になっているか確認してみます。
仮想ブリッジのリンクはダウンしています。また、割り当てたIPアドレスも無くなっています。
$ ip link show ovsbr0
5: ovsbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 6e:2c:2d:f0:08:4b brd ff:ff:ff:ff:ff:ff
$ ip addr show ovsbr0
5: ovsbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 6e:2c:2d:f0:08:4b brd ff:ff:ff:ff:ff:ff
仮想ブリッジにtapデバイスを割り当てた情報は残っていますが、tap デバイス自体が無くなっています。
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
Bridge ovsbr0
Port ovsbr0
Interface ovsbr0
type: internal
Port tap0
tag: 9
Interface tap0
error: "could not open network device tap0 (No such device)"
Port tap1
tag: 9
Interface tap1
error: "could not open network device tap1 (No such device)"
ovs_version: "2.15.0"
後片付け
仮想ブリッジへの tap デバイスの割り当てを解除します。
# ovs-vsctl del-port ovsbr0 tap1
# ovs-vsctl del-port ovsbr0 tap0
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
Bridge ovsbr0
Port ovsbr0
Interface ovsbr0
type: internal
ovs_version: "2.15.0"
仮想ブリッジを削除します。
# ovs-vsctl del-br ovsbr0
# ovs-vsctl show
537967ba-2d48-46f4-9ab8-bb3116153289
ovs_version: "2.15.0"
永続化
仮想ブリッジの永続化は、 /etc/network/interfaces
に記載します。
# cp -pi /etc/network/interfaces /etc/network/interfaces.000
# vi /etc/network/interfaces
# grep -E -v '^$|^#' /etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto ovsbr0
allow-ovs ovsbr0
iface ovsbr0 inet static
ovs_type OVSBridge
ovs_ports ens4
address 10.2.0.242/24
gateway 10.2.0.1
dns-nameservers 192.168.11.249
allow-ovsbr0 ens4
iface ens4 inet manual
ovs_bridge ovsbr0
ovs_type OVSPort
設定ファイルを記載したら、ネットワークを再起動します。
(ネットワークの設定を変更するので、コンソールアクセスの確保を強くお勧めします。)
# systemctl restart networking
Discussion