Mac に Homebrew を入れて、そこから Ruby 入れたり MySQL 入れたりして開発してたのですが、やっぱりサーバと同じような環境の方がいいかなと思って、初めて Mac に Virtual Box を導入してみました。
今まで何度か Windows 上で Virtual Box で Ubuntu 環境を構築したことはあったのですが、初 Mac だったのでした。そしたらちょっと苦労したから自分のためにも ssh を繋ぐまでの手順をまとめときます。
…まぁ苦労した原因というのは結局 Mac だったからというわけではなく、ネットワーク環境の違いのためだったんですけどね。
ちなみに環境は
- MacBook Air (Yosemite)
- Virtual Box 5.0.0
- Ubuntu Server 14.04.2 LTS
とりあえず最低限の Ubuntu をセットアップしたという前提から話を始めます。
この段階だと NAT 接続で普通にネットに繋がっているはずです。apt-get など普通に実行できてれば繋がってますね。ただこれだけだと Mac から Ubuntu に対して ssh の接続が出来ません。
ここで今まで使ってきた Windows マシンでは全て有線 LAN で接続していたので、ブリッジ接続で繋げるように設定を変更していました。しかし今回の MacBook Air では無線 LAN での接続をしていたのでブリッジ接続は選べません。
調べてみたところ NAT+ホストオンリーアダプターでの接続が良さそうでしたので、早速それで試してみることに。
まずは Virtual Box 自体の環境設定からネットワークを選択し、続いてホストオンリーネットワークを選びます。その右側にある「+」ボタンから追加を選択すると設定を作成することが出来ます。
アダプターの設定は下図のような初期値のままで問題ないです。DHCP サーバは使用しないのでチェックボックスは外したままで ok です。

続いて Ubuntu の Virtual Box での設定です。アダプター1 は初期設定のまま NAT を選択し、アダプター2 に先程作ったホストオンリーアダプターを設定しましょう。

この設定をしてから Ubuntu を起動し、続いて管理者権限で /etc/network/interfaces を編集します。内容は
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# vboxnet0
auto eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
こんな感じで大丈夫です。eth0 までは元々記入されてたと思います、eth1 の設定を追加する感じですね。
これで再起動して上手く設定が反映されると、上で設定した 192.168.56.2 に対してホスト側から ssh を繋げることが出来るようになります。route を叩くと下図のような感じに表示されてれば ok です。

しかしたまに起動時にネットワークの設定が失敗する場合があります。その場合は下図のような結果になります。

どうもゲートウェイの設定に失敗している模様です。
どうして同じ設定をしているのに場合によって結果が異なるのかはいまいち理解できないのですが、私が検索した限りでは解決策は見つかりませんでした。
おまけに会社で上司に尋ねてみたら「あるあるネタ」とのこと。なるほど、私が無知でした(´・ω・`) 以前のバージョンの Virtual Box でもそうだったみたいですが、5 になってもこの現象は起こっています。Ubuntu の問題?