zaki work log

作業ログやら生活ログやらなんやら

【ESXi】仮想スイッチとポートグループを作成してVMにネットワークを追加

プライベートネットワークの作成

ESXiをインストールすると物理NICに紐づいたデフォルトの仮想ネットワークが作成されるけど、検証用に新しく別のネットワークを作成したときのログ。

仮想スイッチの作成

ヨドバシとかに売ってる家庭用ネットワークスイッチの仮想版ってところ。これで追加するネットワークをやり取りするスイッチを作成する。

ESXiをインストールするとデフォルトのスイッチは一つ作成済みになっている。

「標準仮想スイッチの追加」から。
f:id:zaki-hmkc:20191119065626p:plain

スイッチの名前を付ける。必要に応じて設定も。(とりあえずデフォルト)
f:id:zaki-hmkc:20191119065805p:plain

追加された
f:id:zaki-hmkc:20191119065908p:plain

ポートグループの作成

仮想スイッチを使用するグルーピングを作成する。イマイチここの概念はわかってないけど、VMのネットワーク設定に追加するのはスイッチでなくポートグループなので、追加作成したスイッチ用のポートグループも作成する。

ESXiをインストールするとデフォルトのポートグループとして「ESXi自身用のポートグループ」と「作成したVM用のポートグループ」の2つが作成済みになっている。

「ポートグループを追加します」から。(なんでここは文章になってるんだ?)
f:id:zaki-hmkc:20191119070310p:plain

ポートグループ名の入力と、割り当てるスイッチ(さっき作ったやつ)を選択する
f:id:zaki-hmkc:20191119070430p:plain

作成された
f:id:zaki-hmkc:20191119070530p:plain

VMにネットワークを追加

作成したネットワークにVMを接続する。
要はNICを1個作成し、そのNICに作成したネットワークを設定する。

ここではCentOS7。
OSは起動したままでもホットスワップで追加される。

元の状態

[zaki@manager ansible]$ 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:65:a5:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.19/24 brd 192.168.0.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe65:a58c/64 scope link 
       valid_lft forever preferred_lft forever
[zaki@manager ansible]$ 

既存のVMNICを追加する

編集画面を起動
f:id:zaki-hmkc:20191119070917p:plain

ネットワークアダプタの追加」
f:id:zaki-hmkc:20191119071034p:plain

するとNICが追加される。
選択するポートグループが他になければ自動で選択されるのでそのまま「保存」する。
f:id:zaki-hmkc:20191119071136p:plain

ちなみに削除するときは右側の×ボタン押下すればNICなどの仮想ハードウェアは外せる。

「保存」するとVMに変更が適用される。
正しく動作すればCentOSでも認識される。

[zaki@manager ansible]$ 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:65:a5:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.19/24 brd 192.168.0.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe65:a58c/64 scope link 
       valid_lft forever preferred_lft forever
4: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:65:a5:96 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2768:e0a6:a9e4:76de/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[zaki@manager ansible]$ 

ens224が追加されている(IPアドレスは未割当)

[zaki@manager ansible]$ nmcli c s
NAME           UUID                                  TYPE      DEVICE 
有線接続 1     5c9cb919-61b6-3bcb-90f2-f9d9c65d4487  ethernet  ens224 
System ens192  a9662f35-ef9e-44ca-beec-e063399a7ba5  ethernet  ens192 
[zaki@manager ansible]$ nmcli d s
DEVICE  TYPE      STATE     CONNECTION
ens192  ethernet  接続済み  System ens192
ens224  ethernet  切断済み  --
lo      loopback  管理無し  --
[zaki@manager ansible]$

nmcliでIPアドレス割り当て

ここからはnmcliを使ってIPアドレスを設定する普通の操作。

名前の変更

[zaki@manager ansible]$ sudo nmcli c m "有線接続 1" connection.id "System ens224"
[zaki@manager ansible]$ nmcli d s
DEVICE  TYPE      STATE                     CONNECTION
ens192  ethernet  接続済み                  System ens192
ens224  ethernet  接続中 (IP 設定を取得中)  System ens224
lo      loopback  管理無し                  --

バイス追加

※ ↑と↓の間にconnection nameをわちゃわちゃしたので別の手順が混ざってるかもしれない

[zaki@manager ansible]$ sudo nmcli c a type ethernet ifname ens224 con-name ens224
接続 'ens224' (35195563-6b17-4baa-abbe-4b2b19e05dd2) が正常に追加されました。
[zaki@manager ansible]$ nmcli d s
DEVICE  TYPE      STATE                     CONNECTION
ens192  ethernet  接続済み                  System ens192
ens224  ethernet  接続中 (IP 設定を取得中)  System ens224
lo      loopback  管理無し                  --
[zaki@manager ansible]$
[zaki@manager ansible]$
/etc/sysconfig/network-scripts/ifcfg-ens192
/etc/sysconfig/network-scripts/ifcfg-ens224
/etc/sysconfig/network-scripts/ifcfg-lo
[zaki@manager ansible]$

この時点ではDHCPになっているのでIPアドレス取得中という状態になってる

static IPアドレス割り当て

[zaki@manager ansible]$ sudo nmcli c m ens224 ipv4.address 172.16.1.0/23
[zaki@manager ansible]$ 
[zaki@manager ansible]$ nmcli d s
DEVICE  TYPE      STATE                     CONNECTION
ens192  ethernet  接続済み                  System ens192
ens224  ethernet  接続中 (IP 設定を取得中)  ens224
lo      loopback  管理無し

あれ?
…ネットワークスクリプトを見ると、DHCP設定が有効なままstatic ip(IPADDR)も設定されてた。
※ ちなみにnmcli実行しても自動で設定反映はされないのでネットワークの再起動が必要

DHCP無効

[zaki@manager ansible]$ sudo nmcli c modify ens224 ipv4.method manual
[zaki@manager ansible]$ 
[zaki@manager ansible]$ cat /etc/sysconfig/network-scripts/ifcfg-ens224 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens224
UUID=****
DEVICE=ens224
ONBOOT=yes
IPADDR=172.16.1.0
PREFIX=23[zaki@manager ansible]$ 

IPV6無効は…

リスタート

[zaki@manager ansible]$ sudo systemctl restart NetworkManager
[zaki@manager ansible]$ 
[zaki@manager ansible]$ ip a s ens224
5: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:65:a5:96 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.0/23 brd 172.16.1.255 scope global noprefixroute ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::6c60:300:9711:fdd6/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[zaki@manager ansible]$ 

うむ。

疎通確認

同じ要領で、別のVMをこのネットワークに接続する

[root@example ~]# 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e8:86:ac brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.31/24 brd 192.168.0.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::1dbf:15bc:742d:841b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e8:86:b6 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.1/23 brd 172.16.1.255 scope global noprefixroute ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::70d4:7b7c:eb53:5f09/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@example ~]#

ping

[root@example ~]# ping -c 4 172.16.1.0
PING 172.16.1.0 (172.16.1.0) 56(84) bytes of data.
64 bytes from 172.16.1.0: icmp_seq=1 ttl=64 time=0.137 ms
64 bytes from 172.16.1.0: icmp_seq=2 ttl=64 time=0.199 ms
64 bytes from 172.16.1.0: icmp_seq=3 ttl=64 time=0.226 ms
64 bytes from 172.16.1.0: icmp_seq=4 ttl=64 time=0.193 ms

--- 172.16.1.0 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.137/0.188/0.226/0.036 ms
[root@example ~]#

大丈夫そう。

webのコンソールで見るとこんな感じ f:id:zaki-hmkc:20191119074905p:plain


参考リンク(nmcli)