情境是這樣子的,原本的Virtual Machine(VM 虛擬機器)裡面裝的Linux透過WiFi是可以正常連網的,該環境上設定的IP是192.168開頭,然後因為某種需求,需要把WiFi換成是自己的手機網路,以便做一些測試,也就是說VM會變成使用手機熱點的方式來連網,但發現網路切到手機後就無法連線了,是什麼原因造成呢?以下是一些自己排除此問題的經驗,供大家參考。
狀況排除
在這個情境中,很明顯的就是原本尚未切到手機網路時,網路的狀況是正常的,所以八成是切換到手機網路後,環境或設置不對所造成,我是透過以下幾種方式來進行排查:
1. BRIDGE or NAT Mode
虛擬機器的網路有Bridge、NAT等連線模式,初步的想法是用WiFi時可以連線,基本上原本設定的模式應該就OK了,不過還是試了一下不同方式的連線,發現仍是無法連線,表示這可能不是影響連線的原因,所以先排除這個連線模式因素
2. IP位置
查了一下IP的變化,原本用WiFi的網路,本機電腦DHCP取得的IP是「192.168.0.69」,但連接到手機熱點後,發現IP變成了「172.20.10.2」。好的,這代表二者的網段是有不同的,所以當切換到手機熱點的網路後,VM直覺上也要設定成172的網段以便連線,所以就「隨便」把VM的IP設成了比較好記的位址「172.20.10.100」,但發現設完之後還是無法連線,不過本機電腦的連線是正常的,所以此情況至少證明手機網路是可通的,只是應該還是有設定上的問題要解決,但狀況有改善了一點,至少改了IP。
註:不知道如何設定Linux(ubuntu / CentOS)的靜態IP的,可以參考這邊的文章
3. 子網路遮罩 Subnet Mask
重點來囉,這也是大家容易忽略的地方。 後來查了網路的相關資訊,發現手機熱點用的「子網路遮罩」是「
4. 套用子網路遮罩後的IP範圍是多少?
這邊不提子網路遮罩的技術細節,有興趣了解的人可以直接上網搜尋資料,要了解套用子網路遮罩後可用IP範圍的話,可以透過線上工具來協助計算就行了,例如「IP Subnet Calculator」或「IP Subnet Mask Calculator」都是不錯的工具,以前者為例,只要選擇你的子網路遮罩是多少,然後輸入你的IP,按下「Calculate」按鈕就即可。以本例來說,因為子網路遮罩前三個數字都是255,所以直接填本機電腦IP的前三位就行,即「172.20.10.X」,最後一位沒較沒差別,因為我們的目的是要讓它計算出可用範圍而已
計算後的結果告訴我們,可用的範圍是落在
小結
這是我個人遇到這個問題的排除方法,其實主要是提醒大家在設定網路的時候要稍微注意一下「子網路遮罩」的設定,免得走了一些不必要的冤枉路。
延伸閱讀
- [Linux] Ubuntu 如何利用 Netplan 設定 固定IP
- [Linux] CentOS 固定IP 與 DNS 設定教學
- [Linux / Windows] VirtualBox 共用資料夾與雙向剪貼簿之權限設定