CentOS8 + Network Namespace + VLAN で検証環境を構築する
以前に CentOS8 で管理用/検証用インターフェイスを Namespace で分離する というメモを記載しました。 あまり無いと思いますが、場合によっては更に「検証用ネットワーク側はひとつのインターフェイスを複数の VLAN で利用したい」というケースもあるかも知れません。 今回はそういった場合の設定方法をメモしておきます。
ゴール
以下の構成を作ります。
管理用インターフェイスの設定
管理用インターフェイスに固定アドレスを設定しておきます。
| nmcli connection modify ens192 \
ipv4.addresses 10.0.0.1/24 \
ipv4.gateway 10.0.0.254 \
ipv4.dns "1.1.1.1 1.0.0.1" \
ipv4.method manual
|
検証用インターフェイスの設定 (複数 VLAN の設定)
Network Namespace + VLAN 設定用のスクリプトは以下の通りです。
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 | #!/bin/bash
case $1 in
"start")
echo "Create namespace settings."
# default
mkdir -p /var/run/netns/
ln -s /proc/1/ns/net /var/run/netns/default
# netns10-30
ip link add link ens224 name vlan10 type vlan id 10
ip link add link ens224 name vlan20 type vlan id 20
ip link add link ens224 name vlan30 type vlan id 30
ip link set dev vlan10 up
ip link set dev vlan20 up
ip link set dev vlan30 up
ip netns add 10
ip netns add 20
ip netns add 30
ip link set vlan10 netns 10 up
ip link set vlan20 netns 20 up
ip link set vlan30 netns 30 up
ip netns exec 10 ip address add 10.0.10.100/255.255.255.0 dev vlan10
ip netns exec 20 ip address add 10.0.20.100/255.255.255.0 dev vlan20
ip netns exec 30 ip address add 10.0.30.100/255.255.255.0 dev vlan30
ip netns exec 10 ip route add 0.0.0.0/0 via 10.0.10.254 dev vlan10
ip netns exec 20 ip route add 0.0.0.0/0 via 10.0.20.254 dev vlan20
ip netns exec 30 ip route add 0.0.0.0/0 via 10.0.30.254 dev vlan30
ip netns exec 10 /usr/sbin/sshd -f /etc/ssh/sshd_config -o "PidFile /var/run/sshd-10-vlan10.pid"
ip netns exec 20 /usr/sbin/sshd -f /etc/ssh/sshd_config -o "PidFile /var/run/sshd-20-vlan20.pid"
ip netns exec 30 /usr/sbin/sshd -f /etc/ssh/sshd_config -o "PidFile /var/run/sshd-30-vlan30.pid"
;;
"stop")
echo "Delete namespace settings."
ip netns delete default
ip netns delete 10
ip netns delete 20
ip netns delete 30
kill -9 `cat /var/run/sshd-10-vlan10.pid`
kill -9 `cat /var/run/sshd-20-vlan20.pid`
kill -9 `cat /var/run/sshd-30-vlan30.pid`
rm /var/run/sshd-10-vlan10.pid
rm /var/run/sshd-20-vlan20.pid
rm /var/run/sshd-30-vlan30.pid
rm /var/run/netns/default
;;
"status")
echo "-----[ip netns list]"
ip netns list
echo "-----[ip address show]"
echo "(default)"
ip address show
echo "(VLAN10)"
ip netns exec 10 ip address show
echo "(VLAN20)"
ip netns exec 20 ip address show
echo "(VLAN30)"
ip netns exec 30 ip address show
echo "-----[ip route show]"
echo "(default)"
ip route show
echo "(VLAN10)"
ip netns exec 10 ip route show
echo "(VLAN20)"
ip netns exec 20 ip route show
echo "(VLAN30)"
ip netns exec 30 ip route show
echo "-----[ip neigh show]"
echo "(default)"
ip neigh show
echo "(VLAN10)"
ip netns exec 10 ip neigh show
echo "(VLAN20)"
ip netns exec 20 ip neigh show
echo "(VLAN30)"
ip netns exec 30 ip neigh show
esac
|
これを例えば以下のように実行します。
| /usr/local/sbin/nsctrl start
|
参考