vagrantではこれまでゲストに対しては、ポートフォワードを使用して
DBなどへホストから通信させていたのですが、
今回はゲストに対してprivate ipを設定し、そのipで通信させようとしたところ、
一向につながらないという事象に出くわしました。
簡単に解決できそうかと思いきや、全然できなかったんですよねー。
どうやって解決したかを備忘録。
環境
OS: mac Monterey
vagrant: 2.2.7
virtualbox: 6.1.30
vagrantで使用するbox:bento/amazonlinux-2
設定したprivate ip:192.168.33.10
確認したこと
ゲストにssh通信:OK
ゲストにてifconfigでipが割り当てられている:OK
うーん、vagrant設定的には問題なさそう。という感じでした。
virtualboxの設定を見てみる
Vagrantfileの書き方の問題かと思ってしばらくハマってしまったのですが、
原因はvirtualbox側にありました。
仮想マシンのネットワーク
virtualboxでの仮想マシンの設定→ネットワークとたどっていくと
「NAT」と「ホストオンリーアダプタ」という2つのものが割り当てられています。
NAT:sshやポートフォワードで使用
ホストオンリーアダプタ:ホスト⇔ゲストを内部ネットワークとして接続するために使用
設定確認
VBoxManage list -l hostonlyifs
このコマンドで、現在作成されているホストオンリーアダプタが表示されます。
Name: vboxnet1 GUID: 786f6276-656e-4174-8000-0a0027000001 DHCP: Disabled IPAddress: 192.168.33.1 NetworkMask: 255.255.255.0 IPV6Address: IPV6NetworkMaskPrefixLength: 0 HardwareAddress: 0a:00:27:00:00:01 MediumType: Ethernet Wireless: No Status: Up VBoxNetworkName: HostInterfaceNetworking-vboxnet1
このIPAddressに割当たっているものが、
vagrant側で設定したものでないと接続ができません!!
僕の場合は、このIPが違うものになっていました。
ホストオンリーアダプタの設定を修正する
と、いうことで今割当たっているもののIPを192.168.33.1に修正しようとしましたが。。。
E_ACCESSDENIED
が表示され変更できませんでした。。。
なぜアクセスが拒否される??
こちらの記事によると、
virtualboxの6.1.28以降、ホストオンリーアダプタを作成する際は、
192.168.56.XX〜作成されるようで、192.168.33.XXは許可されていないって
ことみたいです。
どうする?
拒否はされるものの、解決策はちゃんとあって、
/etc/vbox/networks.confを作成します。
vboxのフォルダがなければ作成すればOKです。
そこに、
* 192.168.0.0/16
これを追記します。
この記述で192.168始まりはすべてOKになります。
このファイルを作成したあと、
virtualboxにてホストオンリーアダプタのIPを
192.168.33.10に修正したら、
仮想マシンのアダプタを変更します。
これでホストからゲストへのpingも通るようになっているはずです。
それでは!!!
20代前半までは東京で音楽をやりながら両手の指以上の業種でアルバイト生活をしていましたが、某大手プロバイダのテレアポのバイトでPCの知識の無さに愕然とし、コンピュータをもっと知りたい!と思ったことをきっかけに25歳の時にITの世界に未経験で飛び込みました。
紆余曲折を経て、現在は個人事業主としてお仕事させていただいており、10年ほどになります。
web制作から企業システム構築、ツール開発など、フロントエンドもバックエンドもサーバーもDBAも依頼があれば何でもやってきた雑食系エンジニアです。
今風にいうとフルスタックエンジニアということになるのでしょうか??
→ 詳細プロフィールというか、生い立ちはこちら
→スキルシートをご覧になる場合はこちら
→お仕事のご依頼やお見積りなどお問い合わせはこちらから!