Help us understand the problem. What is going on with this article?

KVM 仮想マシン ネットワーク設定

自分用メモ。
KVM 仮想マシン作成の続き。

KVMマシン 起動

ホストOS
$ sudo virsh list --all
 Id    名前                         状態
----------------------------------------------------
 -     openstack_cmpt_1               シャットオフ
 -     openstack_cmpt_2               シャットオフ
 -     openstack_cmpt_3               シャットオフ
 -     openstack_cmpt_4               シャットオフ
 -     openstack_ctrl                 シャットオフ

$ sudo virsh start openstack_ctrl
ドメイン openstack_ctrl が起動されました

$ sudo virsh console openstack_ctrl
ドメイン openstack_ctrl に接続しました
エスケープ文字は ^] です
[    9.703133] intel_rapl: no valid rapl domains found in package 0
[    9.712187] intel_rapl: no valid rapl domains found in package 0

CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

localhost login:

設計

NWカスタマイズ前.png

↑これを
↓こうじゃ!

NWカスタマイズ後.png

外向けIF 設定

ゲストOS
localhost login: root
パスワード:
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:51:cc:92 brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# nmcli device
デバイス  タイプ    状態      接続
eth0      ethernet  切断済み  --
lo        loopback  管理無し  --

[root@localhost ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
接続 'eth0' (47162d81-5bb7-45f6-b487-d98c6d6e109d) が正常に追加されました。 eth0

[root@localhost ~]# nmcli device
デバイス  タイプ    状態                       接続
eth0      ethernet  接続中(IP 設定を取得中)  eth0
lo        loopback  管理無し                   --

[root@localhost ~]# nmcli con show
名前  UUID                                  タイプ          デバイス
eth0  47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  eth0
eth0  8f0894b1-1857-49e6-b3c5-da64ecac0f84  802-3-ethernet  --

コレが Access Port に接続するIFなら以下でOK

ゲストOS
[root@localhost ~]# nmcli connection modify enp0s9 \
connection.autoconnect yes \
ipv4.method manual \
ipv4.addresses "192.168.10.121/16"

しかし今回は接続先が Trunk Port なので VLAN を作る必要がある。
先に internal_lan つなげれば楽だったのに。。

参考:10.3. コマンドラインツール nmcli を使った 802.1Q VLAN タグの設定

ゲストOS
[root@localhost ~]# nmcli con add type vlan con-name eth0.10 dev eth0 id 10
接続 'eth0.10' (5f995a1a-29b4-4366-96f0-d2f00f5e8051) が正常に追加されました。

[root@localhost ~]# nmcli con show
名前     UUID                                  タイプ          デバイス
eth0.10  5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth0     8f0894b1-1857-49e6-b3c5-da64ecac0f84  802-3-ethernet  --
eth0     47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  --

ちなみに おじさん達 のために、作成された ifcfg-eth0.10 を見るとこんな感じ。

ゲストOS
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0.10
VLAN=yes
TYPE=Vlan
PHYSDEV=eth0
VLAN_ID=10
REORDER_HDR=yes
GVRP=no
MVRP=no
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0.10
UUID=5f995a1a-29b4-4366-96f0-d2f00f5e8051
ONBOOT=yes

作成した IF に IP アドレスを割り当てるぞ。

ゲストOS
[root@localhost ~]# nmcli con modify eth0.10 \
> connection.autoconnect yes \
> ipv4.method manual \
> ipv4.address "192.168.10.121/16"

[root@localhost ~]# nmcli con show
名前     UUID                                  タイプ          デバイス
eth0.10  5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth0     8f0894b1-1857-49e6-b3c5-da64ecac0f84  802-3-ethernet  --
eth0     47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  --

[root@localhost ~]# nmcli dev
デバイス  タイプ    状態      接続
eth0.10   vlan      接続済み  eth0.10
eth0      ethernet  切断済み  --
lo        loopback  管理無し  --

[root@localhost ~]# ping 192.168.10.120
PING 192.168.10.120 (192.168.10.120) 56(84) bytes of data.
64 bytes from 192.168.10.120: icmp_seq=1 ttl=64 time=0.737 ms
64 bytes from 192.168.10.120: icmp_seq=2 ttl=64 time=0.244 ms

--- 192.168.10.120 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.244/0.490/0.737/0.247 ms

[root@localhost ~]# ping 192.168.200.98
PING 192.168.200.98 (192.168.200.98) 56(84) bytes of data.
64 bytes from 192.168.200.98: icmp_seq=1 ttl=128 time=61.8 ms
64 bytes from 192.168.200.98: icmp_seq=2 ttl=128 time=30.9 ms

--- 192.168.200.98 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 30.955/46.413/61.871/15.458 ms

ホストOS にも ぱそこん にも疎通がとれる。

ぱそこん(コマンドプロンプト)
C:\Users\Administrator>ping 192.168.10.121

192.168.10.121 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。

しかし ぱそこん → ゲストOS に疎通が届かない。

[root@localhost ~]# ssh 192.168.10.120 -l udon
udon@192.168.10.120's password:
Last login: Fri Dec 13 09:37:48 2019 from 192.168.200.98

[udon@kvm_host ~]$ who
udon     pts/0        2019-12-13 09:30 (192.168.200.98)
udon     pts/2        2019-12-13 10:37 (192.168.100.96)

ゲストOS → ホストOS に接続して who を実行するとゲストOSのIPが 192.168.100.96 になっている。

ゲストOS
[root@localhost ~]# ip addr show eth0.10
4: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 52:54:00:51:cc:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.96/16 brd 192.168.255.255 scope global dynamic eth0.10
       valid_lft 42269sec preferred_lft 42269sec
    inet6 fe80::f152:b35b:5f06:6c6/64 scope link
       valid_lft forever preferred_lft forever

OOPS

そうか、静的 IP (ipv4.method manual)を設定する前に DHCP で IP とってきてたか。
該当の IF を再起動する。

ゲストOS
[root@localhost ~]# nmcli con down eth0.10
接続 'eth0.10' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/5)

[root@localhost ~]# nmcli dev
デバイス  タイプ    状態                       接続
eth0      ethernet  接続中(IP 設定を取得中)  eth0
lo        loopback  管理無し                   --

[root@localhost ~]# nmcli con up eth0.10
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/17

[root@localhost ~]# nmcli dev
デバイス  タイプ    状態                       接続
eth0.10   vlan      接続済み                  eth0.10
eth0      ethernet  接続中(IP 設定を取得中)  eth0
lo        loopback  管理無し                   --

[root@localhost ~]# ip addr show eth0.10
5: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 52:54:00:51:cc:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.121/16 brd 192.168.255.255 scope global eth0.10
       valid_lft forever preferred_lft forever
    inet6 fe80::f152:b35b:5f06:6c6/64 scope link
       valid_lft forever preferred_lft forever

めでたく。

ぱそこん(コマンドプロンプト)
C:\Users\Administrator>ping 192.168.10.121

192.168.10.121 に ping を送信しています 32 バイトのデータ:
192.168.10.121 からの応答: バイト数 =32 時間 =62ms TTL=64
192.168.10.121 からの応答: バイト数 =32 時間 =31ms TTL=64
192.168.10.121 からの応答: バイト数 =32 時間 =31ms TTL=64
192.168.10.121 からの応答: バイト数 =32 時間 =31ms TTL=64

192.168.10.121 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 31ms、最大 = 62ms、平均 = 38ms

ぱそこんからも届く。

内向けIF 設定

仮想マシンに IF を追加するため一度停止する。

ゲストOS
[root@localhost ~]# shutdown -h now
Powering off.
[ 4726.878587] Power down.
ホストOS
$ sudo virsh list --all
 Id    名前                         状態
----------------------------------------------------
 -     openstack_cmpt_1               シャットオフ
 -     openstack_cmpt_2               シャットオフ
 -     openstack_cmpt_3               シャットオフ
 -     openstack_cmpt_4               シャットオフ
 -     openstack_ctrl                 シャットオフ

仮想マシンに IF を追加する。

ホストOS
[udon@kvm_host ~]$ sudo ls -l /etc/libvirt/qemu/openstack_ctrl.xml
-rw-------. 1 root root 3718 12月 12 11:48 /etc/libvirt/qemu/openstack_ctrl.xml

[udon@kvm_host ~]$ sudo vim /etc/libvirt/qemu/openstack_ctrl.xml
----------------------------------------------------------------------
  :(省略)
  <interface type='bridge'>
    <mac address='52:54:00:51:cc:92'/>
    <source bridge='br2'/>
    <model type='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  </interface>
+ <interface type='network'>
+   <source network='internal_lan'/>
+   <model type='virtio'/>
+ </interface>
  :(省略)
----------------------------------------------------------------------

[udon@kvm_host ~]$ sudo virsh define /etc/libvirt/qemu/openstack_ctrl.xml
ドメイン openstack_ctrl が /etc/libvirt/qemu/openstack_ctrl.xml から定義されました

[udon@kvm_host ~]$ sudo virsh start openstack_ctrl
ドメイン openstack_ctrl が起動されました

ssh などで先に作成した外部 IF に接続。

ゲストOS
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:51:cc:92 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:0b:e8:0a brd ff:ff:ff:ff:ff:ff
4: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:51:cc:92 brd ff:ff:ff:ff:ff:ff

IF が追加されていることを確認。
あとの設定は同じ。

ゲストOS
[root@localhost ~]# nmcli con
名前        UUID                                  タイプ          デバイス
eth0.10     5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth0        47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  --
有線接続 1  ccebedd6-fc9b-34db-8534-3886fe815009  802-3-ethernet  --

新たに接続した eth1有線接続 1 という名前になっている。
一度削除して再作成する。

ゲストOS
[root@localhost ~]# nmcli con del "有線接続 1"
接続 '有線接続 1' (ccebedd6-fc9b-34db-8534-3886fe815009) が正常に削除されました。

[root@localhost ~]# nmcli con
名前     UUID                                  タイプ          デバイス
eth0.10  5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth0     47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  --

[root@localhost ~]# nmcli con add type ethernet ifname eth1 con-name eth1
接続 'eth1' (4977f7ab-0e84-4cae-8a6d-a9e050880f3b) が正常に追加されました。

[root@localhost ~]# nmcli con
名前     UUID                                  タイプ          デバイス
eth0.10  5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth1     4977f7ab-0e84-4cae-8a6d-a9e050880f3b  802-3-ethernet  eth1
eth0     47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  --

[root@localhost ~]# nmcli dev
デバイス  タイプ    状態                       接続
eth0.10   vlan      接続済み                   eth0.10
eth1      ethernet  接続中(IP 設定を取得中)  eth1
eth0      ethernet  切断済み                   --
lo        loopback  管理無し                   --

[root@localhost ~]# nmcli con mod eth1 \
connection.autoconnect yes \
ipv4.method manual \
ipv4.address "172.19.1.1/23"

[root@localhost ~]# nmcli con down eth1
接続 'eth1' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/30)

[root@localhost ~]# nmcli con up eth1
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/31)

[root@localhost ~]# nmcli dev
デバイス  タイプ    状態                       接続
eth1      ethernet  接続済み                   eth1
eth0.10   vlan      接続済み                   eth0.10
eth0      ethernet  接続中(IP 設定を取得中)  eth0
lo        loopback  管理無し                   --

[root@localhost ~]# nmcli con
名前     UUID                                  タイプ          デバイス
eth0     47162d81-5bb7-45f6-b487-d98c6d6e109d  802-3-ethernet  eth0
eth0.10  5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth1     4977f7ab-0e84-4cae-8a6d-a9e050880f3b  802-3-ethernet  eth1

[root@localhost ~]# ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:0b:e8:0a brd ff:ff:ff:ff:ff:ff
    inet 172.19.1.1/23 brd 172.19.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::535f:d425:c0bb:93cd/64 scope link
       valid_lft forever preferred_lft forever

[root@localhost ~]# ping 172.19.0.1
PING 172.19.0.1 (172.19.0.1) 56(84) bytes of data.
64 bytes from 172.19.0.1: icmp_seq=1 ttl=64 time=0.275 ms
64 bytes from 172.19.0.1: icmp_seq=2 ttl=64 time=0.125 ms
64 bytes from 172.19.0.1: icmp_seq=3 ttl=64 time=0.104 ms
^C
--- 172.19.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.104/0.168/0.275/0.076 ms

再起動

設定した値が正しいことを確認するため、一度ゲスト OS を再起動してみる。
再起動時のブートログが見たいので、ホスト OS からコンソール接続する。

ホストOS
[udon@kvm_host ~]$ sudo virsh console openstack_ctrl
ドメイン openstack_ctrl に接続しました
エスケープ文字は ^] です
root
パスワード:
最終ログイン: Fri Dec 13 05:36:02  192.168.10.120 から

[root@localhost ~]# shutdown -r now
Rebooting.
[ 1696.516847] Restarting system.
:(省略)
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

localhost login:

コンソールから抜けるときは Ctrl + ] を押下。
SSHで接続してIFを確認する。

ゲストOS
[root@localhost ~]# nmcli dev
デバイス  タイプ    状態                       接続
eth1      ethernet  接続済み                   eth1
eth0.10   vlan      接続済み                   eth0.10
eth0      ethernet  接続中(IP 設定を取得中)  有線接続 1
lo        loopback  管理無し                   --

[root@localhost ~]# nmcli con
名前        UUID                                  タイプ          デバイス
eth0.10     5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth1        4977f7ab-0e84-4cae-8a6d-a9e050880f3b  802-3-ethernet  eth1
有線接続 1  6df789a5-c226-3f68-b5d1-2280a0a55c60  802-3-ethernet  eth0

あれ、今度は eth0有線接続 になってしまった。

ゲストOS
[root@localhost ~]# nmcli con del "有線接続 1"
接続 '有線接続 1' (6df789a5-c226-3f68-b5d1-2280a0a55c60) が正常に削除されました。

[root@localhost ~]# nmcli con add type ethernet ifname eth0 con-name eth0
接続 'eth0' (1e5c6e1e-4fc5-427c-99fe-c164501b2748) が正常に追加されました。

[root@localhost ~]# nmcli con mod eth0 connection.autoconnect no

再度コンソールから再起動

ホストOS
[udon@kvm_host ~]$ sudo virsh console openstack_ctrl
ドメイン openstack_ctrl に接続しました
エスケープ文字は ^] です
root
パスワード:
最終ログイン: Fri Dec 13 05:36:02  192.168.10.120 から

[root@localhost ~]# shutdown -r now
Rebooting.
[ 1696.516847] Restarting system.
:(省略)
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

localhost login:root
パスワード:
最終ログイン: Fri Dec 13 06:08:02  ttyS0 上

[root@localhost ~]# nmcli con
名前     UUID                                  タイプ          デバイス
eth0.10  5f995a1a-29b4-4366-96f0-d2f00f5e8051  vlan            eth0.10
eth1     4977f7ab-0e84-4cae-8a6d-a9e050880f3b  802-3-ethernet  eth1
eth0     1e5c6e1e-4fc5-427c-99fe-c164501b2748  802-3-ethernet  --

[root@localhost ~]# nmcli dev
デバイス  タイプ    状態      接続
eth1      ethernet  接続済み  eth1
eth0.10   vlan      接続済み  eth0.10
eth0      ethernet  切断済み  --
lo        loopback  管理無し  --

完了。

その他気にした方がいいDoc

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした