環境
windows8.1 pro
Vagrant 1.6.3
virtualbox 4.3.14r95030
困ったこと
以下のような設定をしてIPアドレスを固定しようとするとvagrant upやvagrant reloadする度にネットワークカードが増えていく・・・
config.vm.network 'private_network', ip: '192.168.21.2'
原因
VagrantはVirtualBoxのインターフェースから同じセグメントのネットワークカードを検索しそれを利用しようとするが、
存在しない場合にVagrantが作成しそれを利用する。
この時に作成されるネットワークカードに正しく設定が反映されていないため、次にvagrant up等を行った際に、また存在しない物としてまた作成する・・・というのを繰り返しているようです。
解決方法(暫定)
ネットワークカードの状態を表示する
ipconfig /all
おそらく169.254.*.*というアドレスが割り当てられているはず。
イーサネットアダプターの名前(ローカル エリア接続 2とか)を覚えておきましょう
ちなみにこれは有効なIPアドレスが無いときに自動で割り当てられるアドレス
DHCPサーバーが死んでる場合などに自動で割り当てられます
VirtualBox上での名前も確認しておきます。GUIの設定から確認してもOKです。
VBoxManage list hostonlyifs
VBoxManageコマンドはVirtualBoxのインストールフォルダにあります
設定したいアダプタのVirtualBox Host-Only Ethernet Adapter [#2~]のようなやつを覚えておきましょう
ipv6を無効にする
IPアドレスの割当を確認する
以下のコマンドで割り当てを確認します。
netsh interface ipv4 show ipaddresses
IPアドレスを割り当てる
host-onlyネットワークにIPアドレスを指定する
以下のコマンドでネットワークカードにIPを指定します。
VBoxManage hostonlyif ipconfig "VirtualBox Host-Only Ethernet Adapter #2" --ip 192.168.21.250 --netmask 255.255.255.0
IPアドレスが割り当てられたかを確認します
netsh interface ipv4 show ipaddresses
この状態で暫く放置すると仮承諾が設定に変わり169.254.*.*が消え静的アドレスのセットはこれで完了です。
蛇足
そもそも静的IPのアドレスはすぐにはIPCONFIGなどで確認出来ないということが理解出来ていませんでした。
静的アドレスせっと!→反映されねぇ!→むきーもう一回だ!
のように何度もセットしたことで正確なIP指定が出来ておらず更に泥沼にハマっていました。
IPの割り当て設定を確認しながら設定していくことが重要だなと学習しました
その他
変なIPアドレスが設定されてしまった場合は以下のコマンドで削除できます
netsh interface ipv4 delete address name=75 192.168.21.2