【VirtualBox】ホストPCの「localhost」 から、ゲストPCの「localhost」にアクセスする方法

ホストPCからゲストPCにアクセスする方法についての備忘録です。

通常はゲストPCのIPアドレスを入力したり、hostsファイルで名前解決したドメインを入力してアクセスできますが、 "localhost" ではホストPCにアクセスしてしまいます。

http://localhost

このアドレスでゲストPCにアクセスすることに成功したため、その設定内容を解説します。

検証環境

★ホストPC

・OS:Windows 11

★ゲストPC

・仮想環境アプリ:VirtualBox(ver : 7.1.4)
・OS:AlmaLinux 9
・IPアドレス:192.168.1.10
 * Apacheを起動しており、ドキュメントルート直下にはindex.phpを配置
 * index.phpは「phpinfo()」を表示するのみ

ホストPCからゲストPCにアクセス

http://192.168.1.10

このアドレスにアクセスすると、ゲストPCにアクセスできます。

vb_blog_1
※ドキュメントルート直下のindex.phpが表示されています。

http://guest  (hostsにオリジナルドメイン "guest" を追記)

guest 192.168.1.10

この1行をhostsファイルに追記すると、"http://guest" でゲストPCにアクセスできるようになります。

vb_blog_2

http://localhost

このアドレスにアクセスすると、ホストPCのlocalhostにアクセスします。

vb_blog_3
※ホストPCでは何もサーバを立ち上げていないので、見つからないページが表示されています。

"localhost" というドメインをhostsファイルに追記した場合は??

localhost 192.168.1.10

この1行をhostsファイルに追記して "http://localhost" にアクセスしても、ホストPCのlocalhostにアクセスしてしまいます。

vb_blog_3
どうもwindows側の仕様(?)なのか、localhost名義はhostsの設定が効かず、
強制で自分自身(127.0.0.1)にアクセスしてしまいます。

ポートフォワーディング設定

VirtualBoxの設定を以下のように変更すると解決できました。
(たぶんVMやHyper-Vでも同様の機能はあると思う)

設定  →  ネットワーク  →  (NATが割り当たっているアダプター内の) ポートフォワーディング

vb_blog_4

(httpでアクセスする場合)
・プロトコル : TCP
・ホストIP : 127.0.0.1
・ホストポート : 80
・ゲストIP : ゲストPCのIPアドレス
・ゲストポート : 80

vb_blog_5


このように設定すると、http://localhostでゲストPCにアクセスできるようになります。

vb_blog_6

他にも、ゲストPC内の3000番ポートにアクセスしたい、httpsでアクセスしたいといった場合は、
以下のように設定することで実現できます。

vb_blog_7

これで、"http://localhost:3000" や "https://localhost" でもゲストPCにアクセスできるようになります。


以上です。
どうしてもlocalhost名義でゲストPCにアクセスしたいときに役立つかもです。