KVMのゲストマシンから外部へ通信できるようにする -2-

Posted by rhoboro on 2016-12-29

DigitalOcean上にたてたKVMマシンのネットワークをいじって遊んでみた記録。
ずっと昔に書いたこちらの記事の続きです!

ブリッジ接続しようとしたらどうなるか試してみた

前回の記事で書いている通り、できないのはわかっています!
でも、実際にやったらどういう動きをするのかなと思いやってみました。

久しぶりなので、まずは現状のネットワーク構成をおさらい。 各IFについては前回の記事で説明しています。

[alpaca]~ % ssh [email protected]
Last login: Thu Dec 29 11:00:04 2016
[root@centos ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 2     centos7                        running

[root@centos ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether ae:e0:6f:ca:23:33 brd ff:ff:ff:ff:ff:ff
    inet 188.166.248.189/20 brd 188.166.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.15.0.5/16 brd 10.15.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::ace0:6fff:feca:2333/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether aa:4e:41:c3:5a:1e brd ff:ff:ff:ff:ff:ff
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 52:54:00:ab:1b:1d brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:ab:1b:1d brd ff:ff:ff:ff:ff:ff
6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500
    link/ether fe:54:00:f7:83:82 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fef7:8382/64 scope link
       valid_lft forever preferred_lft forever

ここからが、本題です。
基本的なブリッジ接続の場合の手順は下記のようになります。

  1. 仮想ブリッジの作成
  2. 作成した仮想ブリッジを物理NICと接続
  3. ネットワーク設定を変更
  4. ネットワークを再起動

まずは、仮想ブリッジの作成から。 brctlコマンドのない方は、yum install bridge-utilsでどうぞ。

[root@centos ~]# brctl addbr br0
[root@centos ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
virbr0          8000.525400ab1b1d       yes             virbr0-nic
                                                        vnet0

br0が新しく作成した仮想ブリッジです。 問題なく作成できていますね。
続いて、物理NICのeth0と接続。 物理NICといっていますが、DigitalOcean上の仮想マシンなので実際は物理NICではないですw

とりあえずコマンド叩いてみました。

[root@centos ~]# brctl addif br0 eth0
    .
    .
  数秒後...
    .
    .
[root@centos ~]# packet_write_wait: Connection to 188.166.248.189 port 22: Broken pipe

はい。Broken pipeと言われましたw
pingも通らなくなってしまったので今回はここでお手上げ。

[alpaca]~ % /sbin/ping 188.166.248.189
PING 188.166.248.189 (188.166.248.189): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 188.166.248.189 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

余談ですが、pingって打ったら、not foundって言われちゃいました。

追記

先ほどのVMをDestroyして、同じSnapshotから立ち上げたVM、ゲストOSが起動できなくなったというオチが待ってました\(^o^)/
やっちまった感あるw

[root@centos ~]# virsh start centos7
error: Failed to start domain centos7
error: unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: erms, smep, fsgsbase, rdrand, f16c

まとめ

内容のない記事なっちゃいましたが、とりあえずやったよということで備忘録として残しておきます。

いや〜、それにしてもVPSサービスだと簡単に前回の状態を復帰できていいです。 DigitalOceanもSnapshotの保存料金かかるようになりましたが、安いので全然気にならないですし。

tags: KVM, DigitalOcean