VirtualBox用NAT也能架伺服器:連接埠轉送機制
摘錄自透過Virtualbox下的Windows的網路印表機問題的說明:
因為客端虛擬機器(Guest OS)是以私有的內部網路透過VirtualBox與主端連接,所以客端所提供的網路服務,不管是主端或是在相同區段的其它電腦,不但看不見,而且是不能使用的。(意思是,在GuestOS的服務,其他人都不能使用)
但是VirtualBox可以透過port forwarding的port轉送機制,讓客端的網路服務也可以被外部所存取。在這情形下,VirtualBox會聆聽主機端(Host OS)的確定ports,當有資料送過來時,把資料打包,再重新轉送到內部的客端系統裡去工作。
對於主端的應用程式或是其它網路上的電腦而言,它看起來就像是主端系統所提供的網路服務一樣。(這也意味著,你不可以在主端及客端提供二個相同的服務,比如網頁伺服器服務)經由此種模式,你可以獲得在客端虛擬機器上提供網路服務的優點,比如當你的主端系統對於網路服務是較弱的,比如容易當機或是容易被入侵等,你就可以運用此種方式在主端系統上提供服務。
雖然如此,但是VirtualBox的連接埠轉送機制得靠指令碼來設定VboxManage,對於不習慣指令碼的Windows使用者來說特別不友善,所以乾脆就寫一個指令產生機,方便大家設定吧。
: | |
: | |
:(如何查詢網路卡?) | |
: | (如指定多個轉接埠時,得用不同名稱,以免被覆蓋) |
: | : |
: | : |
- 連接埠轉送機制指令碼的使用方法:請把輸出的網頁存成bat檔案,存到任意地方並開啟執行即可。
- 執行指令的時候必須先關閉虛擬機器才會生效
- Windows TCP/IP連接埠範圍:根據微軟的說明,Windows XP和2003可供保留的連接埠範圍是從1025到MaxUserPort(預設為5000)以及49152到65535,因此設定時請使用這範圍的連接埠,以免與其他服務相衝。
- 設定完成之後,必需要開啟Host OS的防火牆才行。如何手動開啟 Windows XP 網際網路連線防火牆中的連接埠,其他的設定就麻煩網管吧。
- 網路卡位於[設定值] > [網路] > [介面卡] > [進階] > [介面卡類型]的選單中,請見參考此圖。
如果網路卡為PCnet-開頭,則值應該設定為「pcnet」;如果網路卡為Intel PRO/1000開頭,則應該設定為「e1000」。當你發生「configutation error: Faild to get the "MAC" value」的錯誤時,應該就是網路卡設錯了,請見此討論的說明。
參考網頁:透過Virtualbox下的Windows的網路印表機問題 [論壇 - Ubuntu基本設定] - Ubuntu 正體中文站 (翻譯自VirtualBox的說明)
當連接埠轉遞的設定相衝、或是設定錯誤時,需要取消連接埠轉遞的設定
回覆刪除VboxManage中使用setextradata取消設定的方法是:
VBoxManage setextradata
最後不要輸入值,就能夠取消設定。
--------
舉例來說:
假如你是如此設定虛擬機器:
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort" 50080
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/Protocol" TCP
取消設定的方法是:
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort"
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort"
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/Protocol"
仔細看,取消的語法中不輸入最後的「80」、「50080」跟「TCP」,這樣就能夠取消設定了。
加入的網路卡的參數設定
回覆刪除如果你在虛擬機器使用的網路卡為「PCnet-」開頭,那麼參數就應該設為「pcnet」,例如:
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80
如果你的網路卡使用的是「Intel PRO/1000」開頭,那麼參數應該設為「e1000」,例如:
C:\"Program Files"\"Oracle"\"VirtualBox"\VBoxManage setextradata "vm" "VBoxInternal/Devices/e1000/0/LUN#0/Config/http/GuestPort" 80
請注意這兩個例子中間的變化!
如果你的虛擬機器使用Ubuntu,在轉移時會讓虛擬機器的網路卡設定失效,因為Ubuntu會認伺服器的網路卡。
回覆刪除解決辦法:
到文字模式或終端機底下
輸入指令
sudo -i
先變成有高權限的使用者
cd /etc/udev/rules.d
然後輸入指令
ls
找看看是否有 70-persistent-net.rules 和 75-persistent-net-generator.rules
這兩個檔案,並且將他刪除
指令為
rm 70-persistent-net.rules
rm 75-persistent-net-generator.rules
刪除後重新啟動系統(指令 reboot )
系統就會去抓取新的網路卡
詳細設定請看sWeb Lab 「Ubuntu之網路卡更動導致沒抓到網路卡解決辦法」
http://sweblab.blogspot.com/2009/04/ubuntu.html
事隔多年,VirtualBox已經大幅度改版。其中一個最令我覺得好用的改進,就是NAT的「連接埠轉送」的設定變得更容易使用了。
回覆刪除http://ithelp.ithome.com.tw/question/10108486
iT邦幫忙有baiyuan寫的圖文介紹教學
以後就不需要像這篇這樣子用指令設定,可以直接用GUI視窗來設定就好了。
歐那連接不見了哩~想找在virtualbox裡面架設了nginx伺服器 要轉接哪些port才能讓host主機同網域的能順利測試網站呢?
刪除https://nsrc.org/workshops/2014/btnog/raw-attachment/wiki/Track2Agenda/ex-virtualbox-portforward-ssh.htm
刪除看英文的吧
其實不難設定,自己摸一摸也可以知道
有問題可以在這裡提問喔
或是看YouTube的錄影
刪除https://www.youtube.com/watch?v=_CZar_4_vbk
https://www.pcsetting.com/devtools/77
刪除或是看PcSetting Blog的「VirtualBox 設定 Port 轉發功能教學-以 SSH 和 HTTP 為例」
這個應該就直接貼近你要的目標吧