error: A NAT rule of this name already exists|bug fix


結論

Vagrantfileで以下の行をコメントアウトすると解消できます。

  config.vm.network "private_network", ip: "192.168.33.10"

この行を有効にすることで192.168.33.10でvirtual boxの中のアプリにブラウザからもアクセスできるようになります。
(hostsファイルの編集も必要です。)

状況

久々にvagrant+virtualbox構成を触って上記設定を忘れていました。
当初前述の設定をせず立ち上げた際、立ち上げることはできました。
vagrant sshもでき中身のアプリもきちんと反映されていました。
ただifconfigした際にinet 10.0.2.15、inet 192.168.122.1などの
インターフェースしかでてこずブラウザから接続しようとしても
接続できない状況がありました。

そこでvagrant 10.0.2.1などのキーワードで検索してみたところ
ネットワーク設定をブリッジネットワークに設定するとプライベートネットワークが設定できるとでたので
virtualboxのguiから設定→ネットワーク→割り当てをブリッジネットワーク(自宅ルータを選択)
してみて立ち上げたところタイトルのエラーが出ました。

エラーメッセージ

以下詳細です。

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["modifyvm", "9d8553f3-2aa4-4b26-b2f8-3c428bc1ca1c", "--natpf1", "ssh,tcp,127.0.0.1,2222,,22"]

Stderr: VBoxManage.exe: error: A NAT rule of this name already exists
VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component NATEngineWrap, interface INATEngine, callee IUnknown
VBoxManage.exe: error: Context: "AddRedirect(Bstr(strName).raw(), proto, Bstr(strHostIp).raw(), RTStrToUInt16(strHostPort), Bstr(strGuestIp).raw(), RTStrToUInt16(strGuestPort))" at line 1927 of file VBoxManageModifyVM.cpp

翻訳かけるとNATという名前がかぶっているという内容で
コマンドも実行してみましたが自分の環境ではそもそも
VBoxManageコマンドがセッティングできておりませんでした。

config.vm.networkとは

config.vm.network "private_network", ip: "192.168.33.10"とは
何をしているんでしょう。
Vagrantfileにコメントで書いてくれていました。

マシンへのホストのみのアクセスを許可するプライベートネットワークを作成します
特定のIPを使用します。

ちなみに192.168.33.20などとすれば自分の好きにIPを設定することも可能です。