VirtualBox 設定 Port 轉發功能教學-以 SSH 和 HTTP 為例

此篇文章為VirtualBox虛擬機器的延伸教學,在此篇文章中筆者將會示範如何在Windows或其他的系統環境,來使用VirtualBox軟體內建的連接埠轉送功能(Port forwarding;筆者下面教學會將其稱為『Port轉發』),以可以直接從電腦本機,或甚至是從外部網路來進行連線至虛擬機器中所安裝好的作業系統。

筆者在此篇教學所使用的本機主系統為Windows 10,VirtualBox中的作業系統為Ubuntu Server 16.04LTS。在此篇教學中筆者將會示範兩個不同的傳輸協定,一個是SSH傳輸協定,另一個是HTTP傳輸協定。在參考本篇教學之前,你電腦需要安裝好VirtualBox虛擬機器及虛擬機器中你也需要安裝好你所需要作業系統,如:本文教學所使用的Linux發行版-Ubuntu伺服器版本

1)在VirtualBox中使用指令來查看作業系統的IP位址及查看SSH服務是否有在啟用的狀態。

Step 1:直接『啟動』你VirtualBox上已安裝好的作業系統。

執行你VirtualBox上已安裝好的Linux系統-virtualboxnat001

 

**筆者此部分會以Ubuntu作業系統來做示範教學,所以會使用Linux指令來查看IP位址,假如你使用其他的作業系統的話,那你需要自己知道要怎麼去查看作業系統所獲得的IP位址。

Step 2:筆者此次教學是使用Ubuntu作業系統,所以這邊會輸入『ip a』或者『ifconfig』來查看系統的網卡資訊,如下圖所示可以看到Ubuntu所獲得IP位址為『10.0.2.15』,假如你跟筆者一樣使用預設的NAT,那基本上你看到的IP位址也會是跟筆者一樣的。知道IP之後,就將其IP位址記錄下來,因為等下在設定VirtualBox的Port轉發功能時會使用到。

**如下圖所示可以看到筆者的網卡代號為『enp0s3』,當然你也可能會看到網路卡名稱為『eth0』,這都沒關係,因為這不會影響到接下來的設定。

**在Unix-like系列的系統,查看網卡資訊的指令參考如下:

ifconfig

**現在比較新的Unix-like系統,已使用ip指令來替代ifconfig,所以你應該使用ip指令來查看網卡介面資訊,ip指令查看網卡資訊的指令參考如下:

ip a

**在Windows系統的電腦,查看網卡資訊的指令參考如下:

ipconfig

在Linux系統上,使用ifconfig指令來查看系統的網卡資訊-virtualboxnat021

 

Step 3:因為筆者想要使用SSH協定連線至VirtualBox中的Ubuntu作業系統,所以筆者在這邊還需要進一步使用指令『sudo service ssh status』來查詢SSH服務是否有在執行的狀態,如下圖所示可以看到回傳為檔案『not-found』的訊息,也就表示說此系統還未安裝好OpenSSH Server的套件,那接下來需要在系統上安裝會使用到的套件。

sudo service ssh status

**假如你的Linux系統SSH服務已經有在啟用的狀態,那就直接略過Step 4,直接到Step 5步驟。

輸入指令來查看SSH服務是否有在啟用的狀態-virtualboxnat022

 

Step 4:假如Linux或其他的Unix環境還未安裝好SSH服務,那可以輸入指令來安裝OpenSSH套件,如下圖所示為在Debian/Ubuntu的系統上安裝OpenSSH套件的指令:

**將Debian/Ubuntu系統的套件資訊與版本更新到最新的指令參考如下:

sudo apt-get update && sudo apt-get upgrade -y

**在Debian/Ubuntu的系統上安裝OpenSSH套件的指令參考如下:

sudo apt-get install openssh-server -y

假如Linux系統上還未安裝SSH服務,那需要輸入指令來安裝OpenSSH套件-virtualboxnat023

 

Step 5:知道VirtualBox中的作業系統IP位址及確定需要使用到的服務會在開機時自動執行之後,那接下來就可以將其作業系統關機。

**在設定VirtualBox的Port轉發規則時,是可以不用將VirtualBox的虛擬機關機的,而你可以在虛擬機開機的狀態下,也是可以直接來設定Port轉發規則。

確定Linux系統的IP位址以及SSH服務有在啟用之後,就可以將系統關機-virtualboxnat024

 

2)開始設定VirtualBox上的Port轉發功能(Port forwarding)。

Step 1:在VirtualBox虛擬機器上,選擇你要設定Port轉發的作業系統,然後點選『設定值』。

開始在VirtualBox上設定網卡-virtualboxnat041

 

Step 2:在『設定』視窗中,點選左側欄的『網路』,然後就點選『介面卡 1』頁籤,附加到的選項就選擇『NAT』,展開『進階』,點擊『連接埠轉送』,以可以來新增與設定Port轉發規則。

設定連接埠轉發-virtualboxnat042

 

Step 3:點選如下圖所示的『+』按鈕,來新增Port轉發規則。

新增連接埠轉發規則-virtualboxnat043

 

Step 4:如下圖所示按照各個欄位輸入相關的資料,『名稱』欄位可以填你日後能看得明白名稱;『協定』欄位,以SSH服務來說就選擇預設的『TCP』;『主機 IP』因為筆者想要從本機的主系統連上去,所以就填了『127.0.0.1』的IP位址;『主機連結埠』欄位就填寫你要使用到的Port號,以SSH服務來說,筆者會給他設『22』的Port號,當然假設你電腦的主系統的22 Port號已經被監聽(被其他服務使用著),那你可以改至其他的Port,比如說『2222』;『客體 IP』欄位就填寫剛剛在上面第一部分Step 2已經查好的作業系統IP位址,如:筆者剛剛查到的IP位址是『10.0.2.15』;『客體連接埠』以SSH服務來說,預設的Port號就是『22』。

**假如你要從區域網路或外部網路連上的話,那你的『主機 IP』欄位需要填寫你本機電腦所獲得的IP位址,這方面的設定可以參考本文教學最後一頁。

完成一筆連接埠轉發規則-virtualboxnat044

 

Step 5:Port轉發規則設定完成後,就可以點選『確定』來儲存你的設定。

儲存剛剛新增好的連接埠轉發規則-virtualboxnat045

 

3)使用SSH工具連上VirtualBox虛擬機器中的作業系統。

Step 1:VirtualBox的Port轉發規則設定完成之後,接下來就可以『啟動』機器了。

VirtualBox的網卡設定完成後,就可以啟動機器了-virtualboxnat046

 

Step 2:如下圖所示為Ubuntu系統開機完成後的畫面,因為筆者剛剛已經設定好SSH的遠端連線,所以就可以不用從這邊登入主機了。

系統已啟動完成-virtualboxnat061

 

Step 3:你可以使用你比較習慣使用的SSH遠端連線工具或輸入SSH指令來連線至VirtualBox虛擬機器中的作業系統,如下圖所示筆者是使用Putty的遠端連線工具,如果你跟筆者一樣是使用Putty,那可以參考筆者的步驟連線至你的作業系統,在Putty的『Host Name』欄位輸入你剛剛在前面Port轉發規則中設定『主機 IP』的IP位址,如筆者是設定『127.0.0.1』本地主機的IP位址;『Port』欄位就設定『主機連結埠』中的Port號,如筆者是設定SSH預設所使用的Port:22,所以可以不用改;因為是使用SSH服務,所以在『Connection type』當然就選擇了預設的『SSH』選項;設定好之後,可以儲存當前的工作階段(Session),你可以在『Saved Sessions』欄位為這個工作階段命一個你日後好辨識的名稱,並點選『Save』儲存。在Putty上完成此次新的連線設定後,就可以點選『Open』來進行連線至虛擬機器中的作業系統。

使用SSH連線至剛剛已設定好的系統上-virtualboxnat062

 

Step 4:首次連線至新的主機會出現如下圖所示的『PuTTY Security Alert』視窗是正常的,點選『是』繼續連線吧。

確定Putty Security Alert的提醒-virtualboxnat063

 

Step 5:如下圖所示可以看到筆者已成功使用SSH服務來連線與登入VirtualBox中的作業系統畫面,接下來你就可以直接使用SSH遠端服務來控制你的作業系統了。

可以使用SSH登入至你剛剛設定好的Linux系統了-virtualboxnat064

已成功使用SSH登入至Linux系統-virtualboxnat065

 

4)安裝Nginx網頁伺服器套件及嘗試在新增另外一筆Port轉發規則。

Step 1:當你將SSH服務設定完成後,那現在就可以很方便的從Windows來直接控制你的Linux環境,就像你從Windows控制遠端的Linux系統的電腦一樣。有時筆者想要在Linux環境測試一些新套件,或在網站上新增功能時,那都會使用這樣的方式來進行測試,確定需要的功能穩定之後,那才會套用到正式的伺服器環境,而筆者最常使用另外一個服務就是Nginx,Nginx是網頁服務,為了方便測試環境,筆者也會將其服務設定Port轉發,以可以直接在本地主系統的瀏覽器來開啟虛擬機器主機上的網頁。如下圖所示為在Debian/Ubuntu的系統上安裝Nginx網頁伺服器套件的指令:

sudo apt-get install nginx -y

可以試著安裝Nginx網頁伺服器,以可以新增一筆連接埠轉發規則-virtualboxnat066

 

Step 2:接著可以來設定Port轉發的功能了,筆者當時在設定時,是有將虛擬機關機。

**在設定VirtualBox的Port轉發規則時,是可以不用將VirtualBox的虛擬機關機的,你也可以在虛擬機開機的狀態下,來直接設定好Port轉發規則。

讓虛擬機器中的系統關機-virtualboxnat067

 

Step 3:如下圖所示筆者新增了一筆Port轉發規則,Nginx預設所使用到的HTTP Port為『80』,假如你沒有變更到Nginx的預設設定的話,那在『客體連接埠』欄位就輸入『80』,而『主機連接埠』你可以跟筆者一樣輸入『80』,當然假設你本機電腦主系統的80 Port已經被其他服務使用,那你在這個欄位記得改至其他的Port,比如說『8080』。

新增一筆連接埠轉發規則-virtualboxnat081

 

Step 4:Port轉發規則設定完成後,你就可以點選『啟動』你所設定好的作業系統。

完成連接埠轉發規則的設定後,就可以啟動機器了-virtualboxnat082

 

Step 5:虛擬主機的作業系統開機完成後,你就可以在本地主機主系統的瀏覽器網址列輸入『localhost』或者是『127.0.0.1』,就可以看到如下圖所示的畫面了。

**假如你在設定Port轉發規則時,有將『主機連接埠』的欄位設定成其他的Port號,如:『8080』,那在網址列這邊記得是要輸入『localhost:8080』或者是『127.0.0.1:8080』。

剛剛的連接埠轉發規則已成功設定-virtualboxnat083

 

5)讓外部網路或區域網路來連線到VirtualBox內的虛擬主機上的網頁伺服器。

Step 1:要讓其他電腦或裝置連上你的電腦,那就需要先知道你電腦目前所獲得的IP位址,以Windows系統來說,你可以先按下鍵盤『windows鍵+R』,開啟『執行』對話框,輸入『cmd』,並點選『確定』來開啟命令提示字元視窗,開啟命令提示字元視窗後,輸入指令『ipconfig』,及按下『Enter』鍵,就可以知道你電腦上的網卡資訊了。

ipconfig

輸入ipconfig指令來查看電腦的網卡資訊-virtualboxnat101

 

Step 2:你需要自己知道你電腦是經由哪個網路介面卡來連線到網路上,如下圖所示筆者這台電腦是經由乙太網路的介面卡來連線到網路的,所以在輸入好指令後,就可以在有乙太網路字眼部分查到此台電腦目前所獲得的IPv4位址,如筆者此台電腦目前所獲得的IPv4位址為『140.12X.XXX.XXX』。

查看電腦所獲得的IP位址-virtualboxnat102

 

Step 3:知道電腦的IP位址之後,就選擇你要設定Port轉發的作業系統,然後點選『設定值』。

在VirtualBox上設定網卡-virtualboxnat103

 

Step 4:一樣點擊『連接埠轉送』,以可以來修改Port轉發的規則。

設定連接埠轉發-virtualboxnat104

 

Step 5:在『連接埠轉送規則』視窗,因為在前面已經設定好HTTP Port的轉發規則,所以在這邊只需修改『主機 IP』的欄位,就將剛剛查詢到的IP位址輸入進去,輸入完成後點選『確定』。

修改連接埠轉發規則-virtualboxnat105

 

Step 6:如下圖所示點選『確定』將剛剛設定好的資料儲存。

儲存設定好的連接埠轉發規則-virtualboxnat106

 

Step 7:Port轉發規則設定完成後,你就可以『啟動』你剛剛設定好的作業系統。

網卡設定完成後,就可以啟動機器了-virtualboxnat107

 

Step 8:筆者在電腦的主系統瀏覽器網址列輸入了IP位址,如下圖所示可以看到是可以正常連線的。

在電腦的網址列輸入剛剛設定好的IP位址,可以看到是可以正常訪問網頁的-virtualboxnat108

 

Step 9:筆者嘗試在其他裝置的網址列輸入了剛剛設定好的IP位址,一樣可以看到是可以正常訪問網頁。

**假如你無法連結到網頁,那需要檢查你電腦的防火牆,你可以先暫時將火牆關閉,來試看是否是防火牆阻擾到此次的連線,如果確認是防火牆影響到連線,那你需要自行設定防火牆的規則了。

**假如你需要從外部網路來連上電腦,那你自己還需要確認一件事就是你電腦的IP是否是實體IP,或還是虛擬IP,在IPv4中,虛擬IP的3個網段分別是192.168.0.0~192.168.255.255、172.16.0.0~172.31.255.255及10.0.0.0~10.255.255.255,如果你的IP位址有在這3個網段的範圍內,那你電腦所獲得IP位址通常是從路由器的DHCP協定所自動分配出來的虛擬IP位址。

**假如你電腦本機獲得的是實體IP位址,一般來說如果沒有防火牆阻擾的話,那都可以正常從外部網路直接連線到你的電腦。

**但假如你電腦獲得的是虛擬IP位址,那你就要自行設定路由器或分享器的DMZ功能(Demilitarized Zone;非軍事區)了,這樣你才能從外部網路直接連線到你的電腦。

在其他裝置的網址列輸入剛剛設定好的IP位址,一樣可以看到是可以正常訪問網頁-virtualboxnat109