2009-11-10

VirtualBox 3.x 設定 Port Forwarding

VirtualBox 4.x 之後的版本參考這裡

首先要先說一下為什麼要設定這個東西呢 ?? 這個是因為 VirtualBox 的 NAT 預設只有讓 Guest 連到 Host 及經由 Host 連外部,但是,預設卻沒有可以讓 HOST 直接連到 Guest ,所以,不論是在 Guest 上架了 SSH、FTP 或是 Apache 等伺服器,Host 端就是連不到 Guest。

因此,要讓 Host 可以連到 Guest 的伺服器的話,那就要設定 NAT 的 Port Forwarding,讓 VirtualBox 的 NAT 可以知道 Host 的要求要對應到 Guest 的那一個 Port 去,設定 Port Forwarding 的方法如下:

1.把設定的 Guest 虛擬機器關機。

2.到 VirtualBox 的管理畫面找出要設定的 Guest 名稱。

3.在 Host 上執行下列三個指令 ( VBoxManage 是在 VirtualBox 安裝資料夾的一支程式 )

VBoxManage setextradata "Ubuntu910DT" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP

VBoxManage setextradata "Ubuntu910DT" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80

VBoxManage setextradata "Ubuntu910DT" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 8080

上面的例子是將 HOST 的 Port 8080 對應到名稱為 "Ubuntu910DT" 的 Guest 的 TCP Port 80 ( 就是 HTTP Server ) 的意思。

另外,上指令裡的 "guesthttp" 是類似一個設定檔名稱的意思,所以可以隨便命名,只要方便識別就可以了。

4. 啟動 Guest

設定完成之後,在 Host 上打開灠瀏器並輸入 Guest 的 IP 及 Port 8080 ( 如,http://ip:8080) ,這樣就可以看到 Guest 的網頁了 。

5.移除設定

如果之後要移或停用這組 Port Forwarding,只要用和上面一樣的指令,但是後不加參數就可以了。

VBoxManage setextradata "Ubuntu910DT" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol"

VBoxManage setextradata "Ubuntu910DT" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort"

VBoxManage setextradata "Ubuntu910DT" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort"

設定完成之後要重開啟 Guest 才會生效的,這個是要注意的,雖然不關機也可以設定而且也不會出現錯誤,但是新設就是不會生效的...。

另外,也可以直接透過調整網卡設定的方式,不需要設定 Port Forwarding 就可以連通,請參考這裡

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁