ネットワークの基本的な知識がないので、いつもネット上の知識を鵜呑みにしてその場凌ぎで生きています…
現状
- Macbookに入れたVMware Fusion 5の仮想マシン(CentOS6)を開発用サーバーにしている
- 普段は家で開発してるけど、たまに外出先でもしたい
- でも外だとIPが変わってしまって、sshのconfigやhostsの書き換えが面倒(やってられん)
※以下に記載のIPは全てワタシの環境です。適宜読み替え願います!
今までVMwareのネットワーク設定を「ブリッジされたネットワーキング(自動検出)」にしてました。これだと、家のルーターにMacbook(192.168.24.53)と仮想マシン(192.168.24.60)が同じようにぶら下がった状態です。この状態で、仮想マシンのIPを192.168.24.60に固定して開発するのも、自宅にいる分には何の問題もありません。
…が、外出すると家のルーターは存在しません。192.168.24.***アドレスシリーズではなくなります。hostsも書きなおさなくてはなりません。面倒でやってられない!
なので、その時々のネットワークにぶら下げる形ではなく、Macから直接アクセスできる形でIPを固定しようと思ったのが今回の敬意です。例のように、ネット上の知識の力です。
VMware Fusion のゲスト(仮想)マシンのIPアドレスの固定化
設定手順
- VMware Fusionでネットワーク設定を「Macを共有」に
- 仮想マシンに割り振るIPを固定化する
- 仮想マシン側のIPアドレス設定を固定
VMware Fusionでネットワーク設定を「Macを共有」に
VMware Fusionで対象の仮想マシンの設定画面から、ネットワークアダプタ設定を開いて「Macを共有」にチェック。その際、下にある「詳細オプション」に書いてあるMACアドレスをコピーする。後で必要になります。
仮想マシンに割り振るIPを固定化する
ネットワーク設定の変更を有効にするために仮想マシンのOSを再起動(※多分必要)します。Mac側のターミナルで「ifconfig」コマンドを実行すると、「vmnet8」という「Macを共有」用のゲートウェイが確認できると思います。そこで、vmnet8に仮想マシンのIPを固定化して払い出す設定をします。
vi /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
恐らく下記のような記述があるはず。
subnet 192.168.123.0 netmask 255.255.255.0 {
range 192.168.123.128 192.168.123.254;
option broadcast-address 192.168.123.255;
option domain-name-servers 192.168.123.2;
option domain-name localdomain;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours
option netbios-name-servers 192.168.123.2;
option routers 192.168.123.2;
}
このファイルの末尾に下記のような記述を追加します。ホスト名(vmnet8-centos)は、わかりやすい名前をつけておけばOKのはず。hardware ethernetは最初にコピーしておいた仮想マシンのMacアドレス、fixed-addressが払い出したいIPアドレスとなります。このMacアドレスの仮想マシンには、このIPを払い出すよーっていうことですね。ここで注意なのは、上で「range」に記載の通り「192.168.123.128〜192.168.123.254」は動的な払い出しに使用されるので、「192.168.123.3〜127」の間で割り振るのが良いでしょう。
host vmnet8-centos {
hardware ethernet 00:0C:29:FC:1D:CA;
fixed-address 192.168.123.100;
}
VMware Fusionの設定変更のため、VMwareを再起動してから(※仮想マシンではなく!)、仮想マシンを起動してifconfigコマンドを実行します。eth0のIPアドレスが上で設定したもの(192.168.123.100)になっていれば、正しくIPアドレスが払い出されていることでしょう。
仮想マシン側のIPアドレス設定を固定
ここまででも、Macから192.168.123.100のサーバーなり何なりにアクセス出来るようになっているはずです。自分の場合は、IP設定がブリッジ接続だった時のままになっていたため、phpでDNS接続エラーが発生してしまいました。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.123.100
NETMASK=255.255.255.0
GATEWAY=192.168.123.2
上記のようにIPADDRは今回設定したIPアドレス、GATEWAYはdhcpd.confに記載されていたdomain-name-serversのアドレスを指定しました。ここが古かったために、ドメイン解決できないといって怒られたんですね。あっ、設定を変更したら念のため(必須?)仮想マシンのOSを再起動しましょう。
まとめ
以上で設定は完了です。試しにMacのWi-Fiを無効にしてネットワークから切断しても、ちゃんと仮想マシンに繋がる!これでいつでも開発できます…うぅ。
上で設定した内容もざっくりは分かるんですが、知識がどれもこれも中途半端なのですね。ちゃんと勉強しなきゃと思いながら、なんやかんや今日に至ります。よくない。