前置き:vagrantのネットワーク話
vagrantが相手をするproviderに依存せずnicの追加をする場合、たぶんこんな風に書いていると思います
Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "192.168.50.4"
end
上記の場合、virtualboxは、「ホストオンリーネットワーク」の中で「192.168.50.1」が設定されているvboxnetを探して接続します。
該当するネットワークアドレスを持つvboxnetが無い場合には、新規にホストオンリーネットワークを作成します。
油断すると、ホストオンリーネットワークが大量に作成されていると思います。
しかし、こいつ、名前の通り外に出れません。
また、デフォルトでは、VM間の通信も出来ません(拒否設定)
本題:NICの追加
vagrantで作成したVMにNICを追加する一般的なやり方は上記です。
しかし、これだと追加したネットワークは外部とやりとりできません。
通常は特に問題ないと思いますが、例えばNested VMなどをする場合に外部通信できるネットワークを追加したくなる場合が稀にあります。
vagrantの基本の書き方では、上記のprivate_networkするか、もうひとつのpublic_networkという書き方があります。
しかし、public_networkはホストのマシンのNICにbridgeするだけなので、あまり嬉しくない場合もあります。
そこで、virtualboxのネットワーク機構を直にいじる方法です。
事前にNATネットワークを作っておくと良いです。
NICを追加して、virtualboxのNatnetworkに接続し、VM間通信も許可する設定
ということで、こんな感じ
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--nic2","natnetwork"]
vb.customize ["modifyvm", :id, "--nictype2","82540EM"]
vb.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
end
end
nicXという書き方で、アダプタを外部から操作します
上記を実行するとこんな感じ
nic1は、もともと付いているnicでこいつをいじってしまうと、vagrantコマンドと通勤できなくなります。
他にもいろいろできると思います。このあたりの設定とにらめっこすれば・・・
virtualboxのネットワークの話は、以下の記事が参考になりました。
VirtualBox ネットワーク設定
http://iwsttty.hatenablog.com/entry/2013/12/08/194430