建好虛擬機後,現在就要處理該怎麼讓我們去成功連線。
兩個方法:
我家沒有特別跟網路供應商(ISP,Internet Service Provider,如中華電信)去綁定固定的 IP,所以根本沒辦法去使用 VPN 。於是我嘗試使用內網穿透,這類技術會想辦法把要連線的裝置設定成一個內網,然後讓裝置間理所當然地彼此連線。當然現在的產品如 tailscale 或是 zerotier 都會對網路流量加密,跟 VPN 非常類似,就是本身關注的重點不同。我具體的網路架構請參考下圖。
其實也不用這麼複雜,基本上在主路由或是副路由上去設定好內網穿透的客戶端,然後在外網找一個伺服器(可以是 vps 等)架設內網穿透的伺服器端,這樣在外網的設備一樣可以連線到內網。只是我做了一件有趣的事,就是切了兩個子網,一個給無線連接用,另一個給有線的設備去使用,如何讓這些設備都能互相連接到,具體如何設定先略過。
劇透兩個子網要流入PVE單網口就勢必要用到網管型交換器(問就是家庭用的路由器沒有支持VLAN的相關協定),然後要調整內網穿透伺服器端的路由表能指向到對應的子網,基本上就可以連線成功了。
由於我不知道 PVE 的上行網路是怎麼設定的,但我就是知道我有一個 IP 能夠通向外網,我則是像這樣設計,請參考下圖
剛剛情境一的劇透有提到調整路由表,其實就是要用 NAT (Network Address Translation) 的技術讓我內網的網路流量全部都包裝成我的外網 IP 傳給伺服器,然後伺服器回應的資料再利用 NAT 將內容傳回到對應的內網 IP。不過此時如果有外網的裝置嘗試直接用內網 IP 連線內網裝置,則會因為沒有轉址而無法連線;同理如果使用外網 IP 去做連線則頂多只會跟路由器作互動,同樣因為沒有轉址無法碰到內網的裝置。所以 NAT 除了減少消耗外網 IP (避免一個裝置要給外部連線就用一個外網 IP )外,同時也有效避免內網的裝置被洩漏到外網去。
然而外網連線這項短板可以由 VPN 去補足,VPN (Virtual Private Network)主要作用為讓連線的裝置間之網路流量能夠加密。VPN 伺服器端會把流量導向內網的子網,而外網如果要連接的話, VPN 客戶端需要設定對應的 IP及相關的公鑰等等設定,確保和 VPN 伺服器連線的人是對的人。
從上面的討論上不難看出,要成功並安全的連線還挺不容易的,而市面上又有非常多的產品可以提供服務。下一次我會針對情境二的情況演示如何設定。