CentOS8 で VRF 毎に分割した VLAN を設定する
検証用に CentOS8 へ複数の VLAN を設定し、更に各々の VLAN を異なる VRF へ設定する手順をメモしておきます。
構成図
以下のような構成を作成します。
CentOS8.1.1911、Linux Kernel は 4.18 を利用します。
| # cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
# uname -a
Linux localhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
|
設定
以下を実行します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | ip link add link ens192 name ens192.10 type vlan id 10
ip link add dev vrf10 type vrf table 10
ip link set dev vrf10 up
ip link set dev ens192.10 master vrf10
ip addr add dev ens192.10 10.0.10.1/24
ip link set dev ens192.10 up
ip route add default via 10.0.10.254 table 10
ip link add link ens192 name ens192.20 type vlan id 20
ip link add dev vrf20 type vrf table 20
ip link set dev vrf20 up
ip link set dev ens192.20 master vrf20
ip addr add dev ens192.20 10.0.20.1/24
ip link set dev ens192.20 up
ip route add default via 10.0.20.254 table 20
ip link add link ens192 name ens192.30 type vlan id 30
ip link add dev vrf30 type vrf table 30
ip link set dev vrf30 up
ip link set dev ens192.30 master vrf30
ip addr add dev ens192.30 10.0.30.1/24
ip link set dev ens192.30 up
ip route add default via 10.0.30.254 table 30
|
VLAN ID の確認
インターフェイスごとの VLAN ID を確認します。
vlan10 (ens192.10)
| # ip -d address show ens192.10
3: ens192.10@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vrf10 state UP group default qlen 1000
link/ether 00:50:56:be:44:c8 brd ff:ff:ff:ff:ff:ff promiscuity 0
vlan protocol 802.1Q id 10 <REORDER_HDR>
vrf_slave table 10 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
inet 10.0.10.1/24 scope global ens192.10
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febe:44c8/64 scope link
valid_lft forever preferred_lft forever
|
vlan20 (ens192.20)
| # ip -d address show ens192.20
5: ens192.20@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vrf20 state UP group default qlen 1000
link/ether 00:50:56:be:44:c8 brd ff:ff:ff:ff:ff:ff promiscuity 0
vlan protocol 802.1Q id 20 <REORDER_HDR>
vrf_slave table 20 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
inet 10.0.20.1/24 scope global ens192.20
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febe:44c8/64 scope link
valid_lft forever preferred_lft forever
|
vlan30 (ens192.30)
| # ip -d address show ens192.30
7: ens192.30@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vrf30 state UP group default qlen 1000
link/ether 00:50:56:be:44:c8 brd ff:ff:ff:ff:ff:ff promiscuity 0
vlan protocol 802.1Q id 30 <REORDER_HDR>
vrf_slave table 30 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
inet 10.0.30.1/24 scope global ens192.30
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febe:44c8/64 scope link
valid_lft forever preferred_lft forever
|
ルーティングテーブルの確認
ルーティングテーブルを確認します。 VRF を分離している為、ルーティングテーブルが各々、独立していることが分かります。 一度に VRF のルーティングテーブルを確認する場合は ip route show table all
を実行します。
vrf10
| # ip route show table 10
broadcast 10.0.10.0 dev ens192.10 proto kernel scope link src 10.0.10.1
10.0.10.0/24 dev ens192.10 proto kernel scope link src 10.0.10.1
local 10.0.10.1 dev ens192.10 proto kernel scope host src 10.0.10.1
broadcast 10.0.10.255 dev ens192.10 proto kernel scope link src 10.0.10.1
|
vrf20
| # ip route show table 20
broadcast 10.0.20.0 dev ens192.20 proto kernel scope link src 10.0.20.1
10.0.20.0/24 dev ens192.20 proto kernel scope link src 10.0.20.1
local 10.0.20.1 dev ens192.20 proto kernel scope host src 10.0.20.1
broadcast 10.0.20.255 dev ens192.20 proto kernel scope link src 10.0.20.1
|
vrf30
| # ip route show table 30
broadcast 10.0.30.0 dev ens192.30 proto kernel scope link src 10.0.30.1
10.0.30.0/24 dev ens192.30 proto kernel scope link src 10.0.30.1
local 10.0.30.1 dev ens192.30 proto kernel scope host src 10.0.30.1
broadcast 10.0.30.255 dev ens192.30 proto kernel scope link src 10.0.30.1
|
OS 再起動しても設定が維持されるようにする
ip
コマンドで設定した内容は OS を再起動すると消えてしまいます。 /etc/rc.d/rc.local
へコマンドを追記しておけば OS 起動時に実行されますが、デフォルト状態では権限が不足しており、実行されません。 実行権限を付与します。
| chmod u+x /etc/rc.d/rc.local
|
実行したいコマンド群を追記しておきます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | cat << EOF >> /etc/rc.d/rc.local
ip link add link ens192 name ens192.10 type vlan id 10
ip link add dev vrf10 type vrf table 10
ip link set dev vrf10 up
ip link set dev ens192.10 master vrf10
ip addr add dev ens192.10 10.0.10.1/24
ip link set dev ens192.10 up
ip route add default via 10.0.10.254 table 10
ip link add link ens192 name ens192.20 type vlan id 20
ip link add dev vrf20 type vrf table 20
ip link set dev vrf20 up
ip link set dev ens192.20 master vrf20
ip addr add dev ens192.20 10.0.20.1/24
ip link set dev ens192.20 up
ip route add default via 10.0.20.254 table 20
ip link add link ens192 name ens192.30 type vlan id 30
ip link add dev vrf30 type vrf table 30
ip link set dev vrf30 up
ip link set dev ens192.30 master vrf30
ip addr add dev ens192.30 10.0.30.1/24
ip link set dev ens192.30 up
ip route add default via 10.0.30.254 table 30
EOF
|
これで OS を再起動しても ip
コマンドで設定した内容が維持されるようになります。