Metonymical Deflection

ゆるく日々のコト・たまにITインフラ

CentOS8 小ネタ集その7:nmcli コマンドよるVRF設定

CentOS8にてnmcli コマンドよるVRF設定方法を記載します。

CentOS7ではKernel Versionの関係で設定できません。

1.NICバイスの確認

以下の状態からens32にVRF table10を設定していきます。

[root@c85g192 ~]# nmcli dev
DEVICE      TYPE      STATE                   CONNECTION
ens33       ethernet  connected               ens33
virbr0      bridge    connected (externally)  virbr0
ens32       ethernet  disconnected            --
lo          loopback  unmanaged               --
virbr0-nic  tun       unmanaged               --

2.VRFの作成

先にVRFのRouteテーブルを作成します。
ここでは、table 10 とします。

nmcli connection add type vrf autoconnect yes ifname vrf10 con-name vrf10 table 10
nmcli connection modify vrf10 ipv4.method disabled ipv6.method disabled
nmcli connection up vrf10

<出力例>

[root@c85g192 ~]# nmcli connection add type vrf autoconnect yes ifname vrf10 con-name vrf10 table 10
Connection 'vrf10' (501751b7-df6d-4d18-95d6-cb87459d6052) successfully added.
[root@c85g192 ~]# nmcli connection modify vrf10 ipv4.method disabled ipv6.method disabled
[root@c85g192 ~]# nmcli connection up vrf10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@c85g192 ~]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
ens33   1de6e2fb-e8ee-4c3d-852b-5f84d480a201  ethernet  ens33
virbr0  7c2ded50-2e7c-49e4-ba46-2081f823c50f  bridge    virbr0
vrf10   501751b7-df6d-4d18-95d6-cb87459d6052  vrf       vrf10

3.ens32(物理NICバイス)の設定

シンタックスは、ブリッジに物理デバイスをアタッチする設定に近いです。
masterにvrf10を指定している点がポイントとなります。
その他、今回作成したVRF table 10のRouteテーブルは、VRF無しのDefaultのRouteテーブルと分離されていますので、IPアドレスに加え、Gatewayアドレスも設定してしまいます。

nmcli connection add type ethernet autoconnect yes ifname ens32 con-name ens32 master vrf10
nmcli connection modify ens32 ipv4.method manual ipv4.address 192.168.30.192/24
nmcli connection modify ens32 ipv4.gateway 192.168.30.254
nmcli connection up ens32

<出力例>

[root@c85g192 ~]# nmcli connection add type ethernet autoconnect yes ifname ens32 con-name ens32 master vrf10
nmcli connection modify ens32 ipv4.gateway 192.168.30.254
nmcli connection up ens32
Connection 'ens32' (fa7f298b-266f-4131-8d70-39c4bf542e36) successfully added.
[root@c85g192 ~]# nmcli connection modify ens32 ipv4.method manual ipv4.address 192.168.30.192/24
[root@c85g192 ~]# nmcli connection modify ens32 ipv4.gateway 192.168.30.254
[root@c85g192 ~]# nmcli connection up ens32
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@c85g192 ~]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
ens33   1de6e2fb-e8ee-4c3d-852b-5f84d480a201  ethernet  ens33
ens32   fa7f298b-266f-4131-8d70-39c4bf542e36  ethernet  ens32
virbr0  7c2ded50-2e7c-49e4-ba46-2081f823c50f  bridge    virbr0
vrf10   501751b7-df6d-4d18-95d6-cb87459d6052  vrf       vrf10

4.設定確認

ip -br addr show vrf vrf10
ip vrf show
ip route show table 10
ip vrf exec vrf10 ping 192.168.30.254

<出力例>

[root@c85g192 ~]# ip -br addr show vrf vrf10
ens32            UP             192.168.30.192/24 fe80::8cf6:2ee3:5eb0:8817/64

[root@c85g192 ~]# ip vrf show
Name              Table
-----------------------
vrf10               10

[root@c85g192 ~]# ip route show table 10
default via 192.168.30.254 dev ens32 proto static metric 101
broadcast 192.168.30.0 dev ens32 proto kernel scope link src 192.168.30.192
192.168.30.0/24 dev ens32 proto kernel scope link src 192.168.30.192 metric 101
local 192.168.30.192 dev ens32 proto kernel scope host src 192.168.30.192
broadcast 192.168.30.255 dev ens32 proto kernel scope link src 192.168.30.192

[root@c85g192 ~]# ip vrf exec vrf10 ping 192.168.30.254
PING 192.168.30.254 (192.168.30.254) 56(84) bytes of data.
64 bytes from 192.168.30.254: icmp_seq=1 ttl=64 time=1.41 ms
64 bytes from 192.168.30.254: icmp_seq=2 ttl=64 time=1.87 ms
64 bytes from 192.168.30.254: icmp_seq=3 ttl=64 time=1.89 ms
^C
--- 192.168.30.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 1.409/1.721/1.888/0.223 ms

以上です。

5.最後に

小ネタ集なので、今回はここまでの内容とします。

しかし、実用的な使い方として、VRF上では管理用IPやsshd、chronydサービスを動作させながらも、VRF無しのDefaultのRouteテーブル上では、サービス用IPによるHTTPサービスなどを起動させておく、といった使い方も想定されます。

このため、次回はVRF上でのsshdやchronydの起動方法を記載していきたいと思います。