現場(環境): Ubuntu 16.04 套件:virtualbox
原因:
今天在ubuntu主機裏面建立了虛擬主機,
現在想把虛擬主機的服務向外提供。
所以要針對要用的PORT做反向NAT。
處理方式:
1.前情提要!!
今天用ubuntu開立虛擬主機這件事情,要先注意一件事情。
也就是有沒有要做port foward,如果沒有要這樣用,
那恭喜你不需要特地做什麼就可以直接用了。
用不到port foward就代表兩件事情。
I. 你的虛擬主機是用Bridge模式。已經跟外網串接了。
II.你的虛擬主機是NAT模式,只是要做單機使用而已。
現在要來說重點:
如果你今天要用 Oracle Virtualbox Port forward功能,
在ubuntu主機上你要特別注意。
你是用哪個帳號開啟Oracle VirtualBox!!!!
因為這會影響到你之後做Port Foward上的問題。
今天你是用root權限開。所有的port forward都沒有問題。
但若是用一般使用者權限開。你最重要的那些服務很可能無法做Port Forward。
因為在linux系統上。一般的使用者帳號是無法啟用 Port 1 ~ 1024的。
所以會影響到什麼???
TCP-22 (SSH)、TCP-80(HTTP)、TCP-443(HTTPS)….這些重要的服務都無法反向NAT。
所以很重要。這要注意。
所以一開始要先定義好,你到底要怎麼使用Oracle VirtualBox!!!
以下面兩個例子來說:
(1)
-->user:~# virtualbox
-->直接用使用者桌面上的Oracle VirtualBox圖形開啟。
(2)
user:~#sudo virtualbox
雖然這兩個方式都可以開啟Oracle VirtualBoxe,
如果你還沒有建立VM的狀況下,會發現兩邊出現的畫面相同。
如果已經建立VM了,你就會發現兩邊裏面存在的VM不一樣。
(1) 的開啟方式 是用一般使用者的權限開啟,這
這種時候你做Port Forward,Port 1~1024是無法被做反向的。
(2) 的開啟方式是用root的權限去開啟,
你再這狀況下。你Port Foward要怎麼做都行!
這就是一些比較需要先知到的訊息。
用 (1) & (2)的方法開VM 做 port forward時,
都可以在外面的實體主機檢查一下狀況。
#ss -tnlp (檢查一下目前這台實體主機上運作了什麼Port)
如果有做Port forward,
你使用的port 就會被當成是實體主機上的一個服務,而顯示再上面。
簡單測試一下就會發現。你在(1)上做的1~1024的port fowrad都無法成立。
這也是我後來發現root & user開的VirtualBox使用上的差異。
最後要注意就是虛擬主機內的port 作port forward時,
絕對不可以跟外面的相衝突,原因就不多說明,經過上面的測試應該都會知道。
(2) 開啟virtualbox
依照上面的說明。
我會建議大家在linux上使用virtualbox的時候,都要sudo 去執行。
這樣才能確保你是用root權限執行,不會有一些不必要的狀況產生。
#sudo virtualbox
(3) Port forward
在virtualbox內建立VM這階段我就不說明,
我直接來說做port forward的地方。
在virtualbox開啟後,在工具列「file」的地方。
選擇「Preference」來處理相關設定。
選擇到「Network」選項,
這邊我們要用的是「 Nat Networks 」。
一開始什麼都沒設定時就是空白的。
可以到旁邊的「Adds new NAT network選項」增加NAT網卡的設定。
到這邊我們可以定義這張網卡的名稱 ( 這部份要記起來。因為你再VM選往卡時會挑選到)
Network CIDR網路部份他預設是:10.0.2.0/24 。可以直接沿用就好。
預設support DHCP會是打開的,
因為一般使用者選了NAT模式就想直接用了,
但我這邊是因為我想設portforward(要固定IP),
我不希望有DHCP 的出現,所以我把選項拿掉。
這邊設定完按OK就好。 這樣一張NAT網卡就設定好了。
再來就是到我們的VM主機那邊進行設定
右鍵 -->「setting 」--> 「Network」
找到正在使用的網卡,把Attached模式設定為NAT。
並將Advanced打開來,選擇「Port Forwarding」
打開後就可以開始設定相關IP對應。
Name的部份不用管它,他只是規則的紀錄。
Protocol部份可以選擇 TCP 或者 UDP
Host IP部份就是實體主機的IP位址
( 通常會留空白,讓他自己對應)
Host Port 要對應到實體主機的什麼port
Guest IP 虛擬主機的IP。
(VM建議設定為固定IP的用意就在這裡)
Guest Port 虛擬主機的Port。
通常我們比較要留心的是Host Port ,
因為今天對應到實體主機時,
可能會發生PORT已經被佔用掉要換PORT的狀況,
那這邊就要跟著調整。
例如:
10.0.2.241 (虛擬主機) :443
轉換成
123.45.67.89 (實體主機) : 8443
也就是原本虛擬主機內的443 port ,我們改用8443進行呈現。
這樣子修改完後。我們就可以去進行網頁的連線測試了。
當然你也可以先利用實體主機的指令確認一下到底有沒有轉成功。
看到下圖的8443出現,就代表我們的測試成功了。
(本篇完)
留言列表