#navi_header|技術| VirtualBoxのネットワーク設定がよく分からなかったので実際に実験したメモ。 実験日 : 2014-01-13 Host : Win7SP1 VirtualBox : 4.3.6 * 主なネットワークアダプタの種類 |名称|外部 <- Guest|Guest <-> Guest|Guest <- Host| |NAT|OK|NG|NG(要ポートフォワーディング)| |NAT Networks(NATネットワーク)|OK(?)|OK|NG(要ポートフォワーディング)| |Host-only networking(ホストオンリーアダプター)|NG|OK|OK| |Inetrnal networking(内部ネットワーク)|NG|OK|NG| ** NAT - Guestマシンそれぞれに、専用のNATルータが割り当てられるイメージ。Guest <-> Guest間は独立しており、通信出来ない。 - HostからGuestへの通信については、ポートフォワーディングを使う。 -- VirtualBoxマネージャーから、ゲストOSのネットワークアダプター設定画面で「ポートフォワーディング」のボタンが有効化される。クリックすると、Host -> Guestへのポートフォワーディング設定画面が表示される。 -- ゲストOSのネットワークアダプタそれぞれに個別にポートフォワーディングの設定を行う形になる。 ** NAT Networks(NATネットワーク) - VirtualBox 4.3で追加された。複数のGuestマシンが同じNATルータの下にぶら下がる。 - 4.3.6の時点ではまだ"experimental"扱い。そのためか、実験時にはいくつか問題が発生した。 - 予めVirtualBoxマネージャーの「ファイル」→「環境設定」→「ネットワーク」→「NAT ネットワーク」タブで、仮想のNATルータに相当する設定を追加しておく必要がある。 -- 複数の設定を追加出来るので、複数のNATでGuestマシンをグルーピングすることも出来る。 -- see : https://blogs.oracle.com/fatbloke/entry/what_s_new_in_virtualbox - HostからGuest方向のポートフォワーディングについては、VirtualBoxマネージャー側でそれぞれのNATごとに設定する形になる。ただの"NAT"の時は、ゲスト毎に設定していたのとは対照的。 実験時に遭遇したトラブル(いずれも原因不明で、未解決): - Guestから外部ネットワークへの接続ができなくなってしまった。 -- NAT ネットワークのIPv4設定は 10.0.2.0/24 で、Guestへは10.0.2.15などが割り当てられ、デフォルトゲートウェイは 10.0.2.1 に設定された状態。 -- ここまでは良いのだが、ping 10.0.2.1 してもDestination Host Unreachableになってしまい、外に出れなくなってしまった。 -- Guset <-> Guest間は問題なく通信できた。 - また、ポートフォワーディングを設定しても、Host -> Guestへ接続できなかった。SSH接続しても"read: Connection reset by peer"でTCPのレイヤーで接続エラーとなる。 ** Host-only networking(ホストオンリーアダプター) - HostOnlyの仮想ネットワークの下に、GuestとHostが仲良くぶら下がるイメージ。 - VitualBoxのマネージャーから、ホストオンリー用のIPアドレス・サブネットマスクを設定出来る。 Host側(Win7) #pre||> イーサネット アダプター VirtualBox Host-Only Network: 接続固有の DNS サフィックス . . . : 説明. . . . . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter 物理アドレス. . . . . . . . . . . : 08-00-27-00-EC-FB DHCP 有効 . . . . . . . . . . . . : いいえ 自動構成有効. . . . . . . . . . . : はい リンクローカル IPv6 アドレス. . . . : fe80::d84:62c8:29f7:2c64%25(優先) IPv4 アドレス . . . . . . . . . . : 192.168.56.1(優先) サブネット マスク . . . . . . . . : 255.255.255.0 デフォルト ゲートウェイ . . . . . : DHCPv6 IAID . . . . . . . . . . . : 419954727 DHCPv6 クライアント DUID. . . . . . . . : 00-01-00-01-17-D7-6E-11-94-DB-C9-3A-8A-E4 DNS サーバー. . . . . . . . . . . : fec0:0:0:ffff::1%1 fec0:0:0:ffff::2%1 fec0:0:0:ffff::3%1 NetBIOS over TCP/IP . . . . . . . : 有効 ||< Guest1(CentOS6): #pre||> eth0 Link encap:Ethernet HWaddr 08:00:27:01:26:50 inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe01:2650/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:58 errors:0 dropped:0 overruns:0 frame:0 TX packets:57 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12175 (11.8 KiB) TX bytes:8864 (8.6 KiB) ||< Guest2(CentOS6): #pre||> eth0 Link encap:Ethernet HWaddr 08:00:27:1B:8A:69 inet addr:192.168.56.102 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe1b:8a69/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:50 errors:0 dropped:0 overruns:0 frame:0 TX packets:61 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7631 (7.4 KiB) TX bytes:7735 (7.5 KiB) ||< ** Inetrnal networking(内部ネットワーク) - Host-onlyと異なり、VirtualBoxマネージャーなどからIPアドレスの設定は出来ない。 * 参考 NAT/NAT Networks/Host-onlyの組み合わせで皆さん、それぞれ苦労されているようです。 - Chapter 6. Virtual networking -- https://www.virtualbox.org/manual/ch06.html --- VirtualBox公式のドキュメントなので、これが一次情報源となります。 - 9.11. Fine-tuning the VirtualBox NAT engine -- https://www.virtualbox.org/manual/ch09.html#changenat - ネットワーク設定 | VirtualBox Mania -- http://vboxmania.net/content/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A - VirtualBox Virtual Networking | WebLog about me. -- http://nwing.knowd.co.jp/yamazaki/index.php?q=node/169 - VirtualBox を利用する際のネットワーク設定の話 - ゆどうふろぐ -- http://d.hatena.ne.jp/Yudoufu/20100117/1263677767 - Linux - VirtualBoxでNAT + Host-Only Network環境を構築する - Qiita [キータ] -- http://qiita.com/muniere/items/878837964f3b11fb7663 - VirtualBox ネットワーク設定 - bit -- http://iwsttty.hatenablog.com/entry/2013/12/08/194430 * 感想(2014-01-13) "NAT Networks"はexperimentalというだけ有り、まだ安定してないかも。 GuestOS単体で完結するような環境構築であれば、そのGuestにNATとHost-onlyの2つのアダプタを設定するだけで問題ないだろう。 Webサーバ <> DBサーバ構成など2台以上のGuestが相互に通信できるようにする場合も、それぞれにNATとHost-onlyの2つを設定する方式でも良いが、やや設定が冗長であるし、実運用環境とネットワーク設定が異なりそれによる諸問題が発生する可能性もある。 その場合は、個人的には以下のような構成の方がシンプルで、実運用環境にも近くなると考えます。Guest1, Guest2のdefault gatewayはGuest3のHost-onlyアダプタになるように設定し、Guest3側はルータとして、Host-onlyに入ってきたoutboundをNAT側のアダプタにルーティングします。 #pre||> [Guest1] Host-only <--------+ | [Guest2] | Host-only <--------+--------> [Host] | [Guest3(router)] | Host-only <--------+ NAT ------------------> Internet ||< デメリットとしては、Host-onlyアダプタについて、DHCPではなく静的に色々設定する必要があります。また、1台分余分に動かす必要があります。とはいえ、これもこれで構成パターンの一つとしてアリではなかろうかと。 #navi_footer|技術|