- 每次到不同的網路環境下guest os的IP都會不同,因此要透過mac 終端機連線到內部centOS的話,都要先到裡面查詢一下取到的IP後才能使用SSH登入。我希望不要因為Wifi AP配發的網段不同,造成每次的host及guest都配發不同網段IP,而是在不同網路環境上都使用192.168.10.X。
- 未來規劃會有許多guest OS在同一個內網環境,分別扮演不同的伺服器角色,因此需要一個固定的IP內網。
下圖是host(MAC)與guest(CentOS)的網路規劃圖,主要的精神是滿足上面兩個需求,讓Guest OS上網透過NAT網路(網卡1),內部交換使用固定IP(網卡2)。區域網路的話,MAC分配使用192.168.10.1,CentOS第一台使用192.168.10.11,後續的主機依此類推。
[步驟一:virtualBox網路設定]
- 設定VirtualBox的"僅限主機"資訊,並於Guest OS新增加一個網卡,選用此連網模式。程序為:
- 點選出VirtualBox左上角的[喜好設定],並點選[網路]中的[僅限主機]
- 然後按下右邊的+網卡符號後,再[網路卡]填入規劃的IP資訊,例如我規劃讓MAC使用IP 192.168.10.1,網路遮罩為255.255.255.0。
- 我也建議取消僅限主機內的DHCP功能,將選項內的[啟用伺服器]取消。
![]() |
| 選擇VirtualBox[喜好設定] |
![]() |
| 選擇[網路]-[僅限主機],按下右邊+ |
![]() |
| 輸入規劃中的MAC區網IP |
![]() |
| 取消DHCP服務 |
- 設定Guest OS的網路卡介面
進入到虛擬主機的設定畫面,將介面卡2卡開啟,並選用[僅限主機]附加方式,而介面卡1選用NAT附加方式喔,接著就可以開啟虛擬主機。
![]() |
| 啟用guest os的第二張網卡 |
[步驟二:CentOS網路設定]
- 登入CentOS後輸入"ip addr show"命令,得知系統多了一張網路卡(如enp0s8),但是並未分配任何IP。
- 測試網路連線:請輸入ping 168.95.1.1 及ping www.hinet.net來確認都有得到正常的值,如以下範例報表有成功連線囉。
============================================
ping 168.95.1.1
PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data.
64 bytes from 168.95.1.1: icmp_seq=1 ttl=63 time=24.8 ms
ping www.hinet.net
PING hinet-hp.cdn.hinet.net (210.71.222.166) 56(84) bytes of data.
64 bytes from 210-71-222-166.HINET-IP.hinet.net (210.71.222.166): icmp_seq=1 ttl=63 time=17.8 ms
64 bytes from 210-71-222-166.HINET-IP.hinet.net (210.71.222.166): icmp_seq=2 ttl=63 time=76.2 ms
64 bytes from 210-71-222-166.HINET-IP.hinet.net (210.71.222.166): icmp_seq=3 ttl=63 time=80.5 ms
============================================
[CentOS路由資訊確認]
- 小弟開始的時候手賤在CentOS上多設定了Gateway資訊,在開始的時候都可以正常運作,但在某些時候卻無法進行網路連線,而這個問就是所謂的雙路由造成的問題,如果你依照上述的設定方法來設定後,你應該會得到如下圖的route table。其中的Flags=UG,U代表服務界面是開啟的,G代表是gateway。整張路由表代表所有的流量都會往10.0.2.2(就是NAT模式的網卡)這個Gateway來送,包含了區域網路或上網際網路這邊的需求都是。
![]() |
| 正常情況下的路由表 |
- 如果你在enp0s8的網卡上面設定gateway後,你看到的route table應該是如下的圖。其中會有兩個Flags會有UG,代表你有兩個Gateway的設定,因此系統會看後面的Metric值哪一個比較"小",就預設優先走這個Gateway>_<,而目前還是10.0.2.2這個Gateway的Metric值比較小,因此網路可以正常運作。但在系統重新啟動或者網卡重新啟動的情況,就會有機率變成192.168.10.1這個Gateway變成優先,會造成網路無法連線的情況。當然可以手動解決這個問題,透過route del/add指令重新指派Metric的優先順序,並加他加入.bashrc中在每次登入後自動執行,相關完整概念請參考 [鳥哥的linux私房菜]。但我覺得最好的方法就不要加入Gateway資訊,如此就不會有因為route的問題造成無法連線,然後自己又要再調整半天的情況。

[回顧及結論]
- 為了讓Host與Guest能後上網及互聯,簡單使用"橋接模式"方法就可以達到需求,但會因為不同Wifi AP所配發的DHCP網段不同,所以再host與guest所得的IP都會持續的變動,因此每次再使用MAC SSH連入guest之前都需知道配發的網路IP(比較麻煩),且無法使用免認證登入之方式。
- 如果依照網路的route行為來看,其實guest設定gateway為192.168.10.11到host的話,理論上host(mac)也應該可能將封包轉到Wifi AP上,然後可以進行上網?但小弟測試了許多方法我發現只要使用"僅限主機"方法的話,且route metric預設走僅限主機這邊的路由的話,就無法透過host將封包網外送,我最後的猜測是virtualBox的僅限主機這個方法的限制。
- 總結來說,如果你要能夠透過host連取有固定IP的guest,且guest能夠正常上網的話,建議你測試看看本文章的方法,再guest上設定兩張網卡,一張走NAT,一張走僅限主機的方法。









沒有留言:
張貼留言