🕌

VirtualboxのNATネットワークをVagrantから設定する

2021/03/27に公開

設定内容

忙しい人向けに最初にやったことを書きます。諸々は後ほど。
Vagranfileでmodifyvmを使って設定します。

Vagrantfile
Vagrant.configure("2") do |config|
  (中略)
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--nic1", "natnetwork"]
    vb.customize ["modifyvm", :id, "--nat-network1", "NatNetwork"]
  end
  (中略)
end

Virtualboxのnic1の設定にNAT ネットワークを指定して、
そのNATネットワークはNatNetworkを使用する設定になります。

はじめに

Virtualboxに対してVagrantを使って検証用の仮想サーバを色々立てたりしてると、
複数サーバ間の通信をやりたくなったり諸々の理由でNATネットワークを指定したくなりました。
Vagrantfileの書き方を調べてみるも、NATに関する記述はあっても、NATネットワークになると途端に見つからず…
調べては挫折し、挫折しては挫折しを繰り返していました。
今回再度何の気なしに調べてみたらすんなり解決できてしまい、ちょっと嬉しかったので久々に投稿します。
(Qiitaにも同じ記事がありますがバックアップも兼ねて持ってきました)

環境は下記です。

Virtualbox

c:\> VBoxManage.exe --version
6.1.16r140961

Vagrant

c:\> vagrant -v
Vagrant 2.2.14

Windows

SnapCrab_NoName_2021-2-2_20-5-27_No-00.png

設定内容(再掲)と解説

Vagrantfile
Vagrant.configure("2") do |config|
  (中略)
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--nic1", "natnetwork"]
    vb.customize ["modifyvm", :id, "--nat-network1", "NatNetwork"]
  end
  (中略)
end

肝は、

    vb.customize ["modifyvm", :id, "--nic1", "natnetwork"]
    vb.customize ["modifyvm", :id, "--nat-network1", "NatNetwork"]

です。
項目ごとに説明すると下記のような感じです。

  • vb.customizeはVBoxManage.exeを呼び出します
  • modifyvmはVBoxManage.exeのオプションでVMイメージの設定を変更します(そのまま)
  • :idはイメージIDを指定するのですが、ここはVagrantがよしなにやってくれます
  • --nic1は1つ目のNICの設定をするという意味です
    • 後ろの数字は1-4まで設定でき(ると思い)ます
    • 調べていませんがGUIでは4つまでなのできっと他の数字を指定するとエラーになるのかなと…
  • natnetworkはNATネットワークを指定します(そのまま)
    • ちなみに設定項目としてはnone|null|nat|natnetwork|bridged|intnet|hostonly|genericだけあります
    • GUIの設定項目と同じですね
  • --nat-network1はNIC1に対して設定したNATネットワークのオプションでどのNATネットワークにするかを指定します
  • NatNetworkは、事前に設定したNATネットワークを指定します
    • GUIで言うファイル->環境設定->ネットワークで表示されるNATネットワーク名です

さいごに

結局のところ公式サイトに書いてありました。
日本語にこだわって探すと良くないですね。再認識しました。
それにしても日本語で書かれていなかったのはもしかして…

  • 外に繋ぐならNAT + 内部ネットワークで良いから…?
  • あまりNATネットワークって良くなかったりとかある…?

みたいなのがあるのでしょうか。
個人的にはポート周りがひと目で分かって良いので多用していますが…

参考にしたもの

Discussion