遠程訪問如此簡單,通過 ZeroTier 和 Tailscale 輕松組建虛擬局域網(wǎng),實現(xiàn)內(nèi)網(wǎng)穿透。
因為最近用了 Plex 所以研究了一下遠程訪問,經(jīng)過一番折騰基本上算是搞明白了,在這里分享一些自己的經(jīng)驗給和我一樣的小白,如果有不對的地方歡迎指正。
這里的遠程訪問是指在局域網(wǎng)外通過網(wǎng)絡(luò)訪問局域網(wǎng),用來實現(xiàn)屏幕共享、文件共享、遠程桌面、遠程聯(lián)機等操作。比如遠程辦公,你可以在任何地點訪問你在公司或家里的電腦,不但可以實現(xiàn)文件傳輸,還可以對電腦進行遠程操控、屏幕共享;比如你搭建了家庭 NAS 服務(wù)器,通過遠程訪問可以在任何地點訪問 NAS 上的內(nèi)容;比如你在局域網(wǎng)內(nèi)搭建了私人影音媒體庫,可以通過遠程訪問在任何地點觀看本地設(shè)備存儲的音視頻等內(nèi)容;比如你可以和異地的朋友進行聯(lián)機游戲等等。



實現(xiàn)遠程訪問有兩種情況,有公網(wǎng) IP?和沒公網(wǎng) IP。
如果有公網(wǎng) IP 遠程訪問是非常簡單的,可以通過公網(wǎng) IP 直接訪問,訪問指定內(nèi)容只要加上指定的端口即可。
但是由于全球 IPv4 資源枯竭,我國的家庭寬帶一般都被分配了私網(wǎng) IP,如果你需要公網(wǎng) IP 可以向運營商提出申請,過去申請可能相對容易一些,現(xiàn)在相對困難,以四川電信為例,自 2022 年開始已經(jīng)不提供免費的公網(wǎng) IP 了,如果你需要公網(wǎng) IP 要滿足一定條件并支付每月 100 元的服務(wù)費,才能享受動態(tài)公網(wǎng) IP 服務(wù)。當然各地的運營商服務(wù)有差別,大家可以先嘗試向自己的運營商申請免費的公網(wǎng) IP,如果申請成功請把你家的光貓改為橋接模式、關(guān)閉光貓的 DHCP 服務(wù)和無線網(wǎng)絡(luò),使用路由器撥號上網(wǎng),這樣就可以通過公網(wǎng) IP 直接進行遠程訪問了。
如果你的網(wǎng)絡(luò)支持并開啟了 IPv6,你的路由器也支持 IPv6,那么你可以開啟路由器的 IPv6 功能,使用 IPv6 獲取的 IP 地址就是公網(wǎng) IP,但這里有一個問題是大部分路由器都自配了防火墻,自動屏蔽了 IPv6 的遠程訪問,也就是說如果你無法關(guān)閉路由器對 IPv6 的限制,這個 IPv6 的公網(wǎng) IP 也沒什么用,要解決路由器防火墻的問題可能需要刷固件,并不是所有路由器都支持,所以這個辦法其實更麻煩,或者你可以直接選擇支持關(guān)閉 IPv6 防火墻的路由器。但 IPv6 現(xiàn)在并不普及,很多路由器和設(shè)備是不支持 IPv6 的,這樣使用就會受到一些限制。
下面就來講沒有公網(wǎng) IP 的情況,這種情況比較普遍。沒有公網(wǎng) IP 遠程訪問也有很多方式可以實現(xiàn),今天主要分享兩個完全免費且不限速的內(nèi)網(wǎng)穿透解決方案。
通過 ZeroTier 或 Tailscale 可以進行內(nèi)網(wǎng)穿透,輕松組建虛擬局域網(wǎng)/組網(wǎng),就是可以把任意地點、任意網(wǎng)絡(luò)的多臺設(shè)備添加到一個虛擬的局域網(wǎng)/組網(wǎng)中,在這個虛擬局域網(wǎng)/組網(wǎng)下,這些設(shè)備可以實現(xiàn)局域網(wǎng)內(nèi)網(wǎng)的所有功能,因為設(shè)備的物理位置沒有限制,所以就實現(xiàn)了遠程訪問,不同網(wǎng)絡(luò)的設(shè)備可以通過這個虛擬局域網(wǎng)/組網(wǎng)進行直接通信,傳輸速度由設(shè)備自身的網(wǎng)絡(luò)帶寬限制,當通信受到限制時也可以通過 ZeroTier 的服務(wù)器或者自建的云服務(wù)器進行中轉(zhuǎn)。
接下來分別具體講一下 ZeroTier 和 Tailscale 的操作步驟。
ZeroTier
01. 在?ZeroTier(https://www.zerotier.com/)官網(wǎng)注冊一個賬號。
02. 去注冊郵箱里查看驗證郵件并進行驗證。
03. 驗證后刷新之前的網(wǎng)頁即可進入?ZeroTier Central(https://my.zerotier.com/)管理中心。
04. 點擊「Create A Network」創(chuàng)建虛擬網(wǎng)絡(luò)。

05. 創(chuàng)建完成后會顯示如下界面,紅框中是 NETWORK ID,也就是你的虛擬網(wǎng)絡(luò) ID,其他設(shè)備加入虛擬網(wǎng)絡(luò)都需要這個 ID,在紅框這一欄任意位置單擊進入網(wǎng)絡(luò)設(shè)置。

06. 在紅框處修改虛擬網(wǎng)絡(luò)名稱,自定義即可,不改也行。默認為 Private 私人網(wǎng)絡(luò),加入網(wǎng)絡(luò)需要授權(quán),保持默認即可。下面的 IPv4 Auto-Assign 可選擇你的虛擬局域網(wǎng) IP 地址網(wǎng)段,加入虛擬局域網(wǎng)的各個設(shè)備都會在這個網(wǎng)段被分配一個虛擬 IP 地址,各設(shè)備之間互相訪問就要用到這個虛擬 IP 地址,這個網(wǎng)段保持默認即可,也可以自己任選一個。

到這里你的虛擬局域網(wǎng)就已經(jīng)搭設(shè)完成了,接下來就可以添加設(shè)備了。
07. 右擊「the downloads page」(https://www.zerotier.com/download/)打開新的標簽頁為你的設(shè)備下載客戶端,按照你的操作系統(tǒng)選擇客戶端下載并安裝。(iOS 用戶可在 App Store 直接搜索下載安裝,需要美區(qū)賬號,安卓用戶可自行搜索安裝包下載安裝,設(shè)備端的 App 叫 ZeroTier One)


08. 設(shè)備端是無需登錄賬號的,App 也很簡單,各個系統(tǒng)操作基本一致,以 MacOS 為例,運行 ZeroTier 以后圖標顯示在菜單欄,點擊圖標選擇「Join New Network…」,將前面創(chuàng)建的虛擬網(wǎng)絡(luò) ID 復(fù)制粘貼進來,點擊「Join」即可,這樣就連接上了,要斷開連接點擊「Disconnect」或直接退出程序即可。

以 iOS 為例,打開 ZeroTier One 后點擊右上角的加號,點擊「Accept」,將 Network ID 粘貼過來,點擊打開「Enable Default Route」后面的開關(guān),點擊「Add Network」,虛擬網(wǎng)絡(luò)就添加成功了,點擊該網(wǎng)絡(luò)后面的開關(guān)即可開啟或關(guān)閉虛擬局域網(wǎng),開啟后頂部狀態(tài)欄上會顯示「VPN」圖標。(過程中可能會請求系統(tǒng)授權(quán),同意即可)

09. 如果你想邀請其他人加入你的虛擬局域網(wǎng),和他人的設(shè)備進行文件共享或遠程訪問,只要請他們在設(shè)備上安裝 ZeroTier 或者 ZeroTier One 的客戶端,然后參考上面的方式直接通過你的虛擬局域網(wǎng) ID 即可加入你的虛擬局域網(wǎng),你也可以繼續(xù)添加自己的其他設(shè)備,每個虛擬局域網(wǎng)最多可以添加 25 個設(shè)備。
10. 注意上方設(shè)備加入虛擬局域網(wǎng)后需要經(jīng)過管理員也就是虛擬網(wǎng)絡(luò)創(chuàng)建者的授權(quán)才可以進行訪問,進入?ZeroTier Central?管理中心在 Members 部分可以看到已經(jīng)加入網(wǎng)絡(luò)的設(shè)備,設(shè)備前方顯示紅色虛線表示未對其授權(quán),該設(shè)備無法訪問虛擬局域網(wǎng)內(nèi)的其他設(shè)備,點擊勾選設(shè)備前方的方框可對其進行授權(quán),授權(quán)后的設(shè)備前方顯示綠色實線,扳手后方是設(shè)備的虛擬地址,可在「Name/Description」處為設(shè)備修改名稱,后方的「Managed IPs」是設(shè)備在虛擬局域網(wǎng)內(nèi)的虛擬內(nèi)網(wǎng) IP 地址,設(shè)備之間互相訪問就是使用這個虛擬內(nèi)網(wǎng) IP 地址,支持指定 IP,一般使用默認即可,后方是上一次訪問的時間,最后是物理 IP 地址。

11. 以上圖為例,在我授權(quán) iPhone8 訪問虛擬局域網(wǎng)后,假如我在局域網(wǎng)外要通過 iphone8 訪問 iMac 的共享文件夾,只要使用 iphone8 在「文件」App 里通過 smb://192.168.195.173 連接服務(wù)器即可;如果我想訪問 iMac 上的 Plex 服務(wù)器只要在瀏覽器訪問 192.168.195.173:32400 即可;如果我想使用遠程桌面操控家里的 iMac 只要在 iPhone8 打開 VNC Viewer 使用 192.168.195.173 連接這臺 iMac 即可。總之你在局域網(wǎng)里能做的大部分工作通過虛擬局域網(wǎng)都可以實現(xiàn),我這里用的是 iPhone,當然你也可以使用電腦或其他設(shè)備訪問虛擬局域網(wǎng)內(nèi)的設(shè)備,前提是設(shè)備開啟了共享和遠程訪問。

同時 ZeroTier 也為有更多需求的用戶提供了付費服務(wù)。

Tailscale
01.?Tailscale(https://tailscale.com/)僅支持通過谷歌、微軟或?GitHub?賬號授權(quán)登錄,建議使用 GitHub 賬號登錄,若沒有請先注冊一個 GitHub 賬號(微軟賬號可能需要用手機注冊),然后登錄?Tailscale。
02. 登錄后為如下界面,請根據(jù)自己的操作系統(tǒng)下載并安裝客戶端。(MacOS 及 iOS 需要美區(qū)賬號,安卓用戶可自行搜索安裝包下載安裝)

03. 安裝完成后請運行?Tailscale?客戶端,點擊「Get Started」,點擊「Sign in to your network」,跳轉(zhuǎn)網(wǎng)頁登錄你的賬號,返回客戶端點擊「Yes, start on log in」,意思是開機啟動,如果不需要開機啟動請選擇「No, I will manually start Tailscale」,在有需要的時候手動開啟客戶端,現(xiàn)在你的設(shè)備就已經(jīng)成功加入你的虛擬網(wǎng)絡(luò)了,點擊「Close」關(guān)閉窗口,你會在菜單欄看到 Tailscale 圖標。

04. 此時回到引導(dǎo)設(shè)置頁,設(shè)備已經(jīng)出現(xiàn)在右側(cè)了,前方是設(shè)備名稱,后方是虛擬 IP 地址,Tailscale 是無需手動配置的,設(shè)備安裝客戶端并登錄后會自動加入虛擬組網(wǎng),接下來繼續(xù)在其他需要遠程訪問的設(shè)備上安裝客戶端并登錄即可。

以 iOS 為例,打開客戶端點擊「Get Started」登錄你的賬號,使用 GitHub 授權(quán),登錄后界面最上方是啟用和關(guān)閉按鈕,就是虛擬組網(wǎng)的開關(guān),跟著是本機的名稱和虛擬 IP,下方顯示的是你的其他設(shè)備,格式也是名字在上,虛擬 IP 在下,接下來就可以通過其他設(shè)備的虛擬 IP 進行遠程訪問了。

05. MacOS 通過菜單欄的圖標可進行操作,最上面是虛擬組網(wǎng)的開關(guān),跟著顯示的是當前登錄的賬號,點擊「Admin Console」可進入網(wǎng)頁版管理中心,可以查看連接設(shè)備名稱、虛擬 IP、操作系統(tǒng)、連接狀態(tài)等信息,點擊設(shè)備可以對其詳情進行查看和管理。在菜單欄圖標點擊 Network Devices - My Devices 也可查看虛擬組網(wǎng)接入的設(shè)備,點擊設(shè)備名稱可直接復(fù)制設(shè)備的虛擬 IP。


06. 若要與他人共享自己的設(shè)備請將鼠標移至設(shè)備最后方的三個小圓點上,會出現(xiàn)「Share…」按鈕,點擊彈出分享窗口,點擊「Generate & copy invite link」可生成邀請鏈接,將鏈接發(fā)送給你的好友,好友接受邀請后你的這臺設(shè)備就會出現(xiàn)在他的虛擬組網(wǎng)里,他就可以單向訪問你的這臺設(shè)備了,如果要實現(xiàn)雙向訪問你還需要通過他的設(shè)備的邀請鏈接將他的設(shè)備加入你的虛擬組網(wǎng)。(每個訪問虛擬組網(wǎng)的設(shè)備都需要安裝客戶端并登錄賬號,每個虛擬組網(wǎng)初始最多可接入20個設(shè)備,每邀請一個人雙方都會增加兩個設(shè)備位)


07. 上面講到的都是給每個設(shè)備分配一個虛擬 IP,然后互相訪問,如果在外面想訪問本地局域網(wǎng)的設(shè)備還有一個方式,可以使用局域網(wǎng)內(nèi)的一臺設(shè)備做虛擬網(wǎng)關(guān),設(shè)置一個虛擬路由,將你的本地局域網(wǎng)作為這個虛擬網(wǎng)關(guān)的子網(wǎng),這樣就可以通過虛擬網(wǎng)關(guān)訪問本地局域網(wǎng)的所有設(shè)備,直接通過你的本地 IP 訪問即可,就不需要為每個設(shè)備都安裝客戶端加入虛擬組網(wǎng)了。
不過這個設(shè)置有一點小門檻,如果對網(wǎng)絡(luò)不太懂,可能設(shè)置起來會有些困難,但官方也有相應(yīng)的指導(dǎo)說明,除此之外 Tailscale 還有很多高級功能和付費功能。對于個人用戶來說,一般免費版本就可以滿足需求了,如果是機構(gòu)或者企業(yè)也可以選擇付費的版本。

文章寫的有點長,其實操作是非常簡單的,ZeroTier 和 Tailscale 都是非常好的內(nèi)網(wǎng)穿透解決方案,他們的原理都是搭建一個虛擬網(wǎng)絡(luò),設(shè)備經(jīng)過授權(quán)連接到這個虛擬網(wǎng)絡(luò)后就可以互相訪問,就像在同一個局域網(wǎng)內(nèi)一樣。但實際上 ZeroTier 和 Tailscale 使用的技術(shù)并不相同,操作方式上也略有差別。
ZeroTier?只有虛擬網(wǎng)絡(luò)創(chuàng)建者需要用賬號登錄,要訪問虛擬網(wǎng)絡(luò)的設(shè)備都需要安裝客戶端但不用登錄;每個注冊用戶可以創(chuàng)建的虛擬網(wǎng)絡(luò)沒有上限,但每個虛擬網(wǎng)絡(luò)最多只可接入 25 個設(shè)備;虛擬網(wǎng)絡(luò)的管理員可以查看所有接入設(shè)備的信息,并對其進行管理,而接入網(wǎng)絡(luò)的其他設(shè)備除了網(wǎng)絡(luò) ID 是無法獲取虛擬網(wǎng)絡(luò)的其他信息的;訪問虛擬網(wǎng)絡(luò)接入的其他設(shè)備需要管理員告知其他設(shè)備的虛擬 IP 并對其進行授權(quán);數(shù)據(jù)傳輸正常情況下是兩個設(shè)備直接加密通信,但是如果網(wǎng)絡(luò)情況不好或者受到其他限制可能會通過 ZeroTier 服務(wù)器進行中轉(zhuǎn),如果不想使用 ZeroTier 的服務(wù)器也可以使用其他服務(wù)器進行中轉(zhuǎn)。
Tailscale 的每個用戶都需要使用賬號登錄,每個賬號登錄后會自動創(chuàng)建一個虛擬網(wǎng)絡(luò),不支持新建虛擬網(wǎng)絡(luò);使用賬號登錄后會自動加入虛擬網(wǎng)絡(luò),每個虛擬網(wǎng)絡(luò)初始可添加 20 個設(shè)備,但是每邀請一個設(shè)備加入自己的網(wǎng)絡(luò)就會新增 2 個設(shè)備位;支持一個虛擬子網(wǎng),可把一個局域網(wǎng)設(shè)置為虛擬子網(wǎng),這個局域網(wǎng)內(nèi)的所有設(shè)備可以訪問虛擬網(wǎng)絡(luò)但不需要安裝客戶端也不用登錄賬號;如果是自己的設(shè)備可以直接通過虛擬 IP 互相訪問,若要訪問他人的設(shè)備需要通過邀請鏈接將他人的設(shè)備加入自己的虛擬網(wǎng)絡(luò),同理要把自己的設(shè)備共享給別人也需要通過邀請鏈接把自己的設(shè)備分享出去;數(shù)據(jù)傳輸是兩個設(shè)備直接加密通信,也可以自建中轉(zhuǎn)服務(wù)器。
簡單說,如果自己個人使用,用 Tailscale 給自己的每個設(shè)備安裝客戶端并登錄就可以了,用 ZeroTier 還需要給每個設(shè)備添加虛擬網(wǎng)絡(luò),但也不算麻煩;如果只是偶然需要與他人進行遠程共享,使用 ZeroTier 只要對方安裝客戶端再添加虛擬網(wǎng)絡(luò)就可以互相訪問了,而 Tailscale 需要對方先注冊賬號,再通過你的邀請鏈接加入你的虛擬組網(wǎng),這樣對方才可以訪問你的設(shè)備,如果你要訪問他的設(shè)備還需要對方再邀請你加入他的虛擬組網(wǎng),其實有點麻煩。
專業(yè)的術(shù)語我不太懂,但就使用體驗上來看,ZeroTier 應(yīng)該是搭建了虛擬局域網(wǎng),所有設(shè)備的虛擬 IP 都在同一個網(wǎng)段,接入虛擬局域網(wǎng)的所有設(shè)備都可以使用虛擬 IP 互相訪問,因為設(shè)備是不需要登錄的,所以經(jīng)過授權(quán)設(shè)備就直接進入虛擬局域網(wǎng)了。而 Tailscale 搭建的是虛擬組網(wǎng),每個設(shè)備的虛擬 IP 都在不同的網(wǎng)段,但在同一個虛擬組網(wǎng)內(nèi)的設(shè)備可以互相訪問,可是 Tailscale 的分享邀請是單向的,因為每個賬號都有一個獨立的虛擬網(wǎng)絡(luò),我把我的設(shè)備分享給對方后,我的設(shè)備就被添加到了對方的虛擬網(wǎng)絡(luò)中,但是對方的設(shè)備并不會出現(xiàn)在我的虛擬網(wǎng)絡(luò)里,所以他可以通過他的虛擬網(wǎng)絡(luò)訪問我共享的設(shè)備,但是我無法訪問他的設(shè)備,需要對方邀請后才可以將對方的設(shè)備加入我的虛擬網(wǎng)絡(luò)。
這個差異你也可以說 Tailscale 更安全,你也可以說他更麻煩。因為雖然加入 ZeroTier 的虛擬局域網(wǎng)可以訪問網(wǎng)內(nèi)的所有設(shè)備,但是設(shè)備的虛擬 IP 只有管理員知道,即使邀請他人加入虛擬局域網(wǎng),對方也不會知道虛擬局域網(wǎng)內(nèi)其他設(shè)備的虛擬 IP,他甚至都無法查看他自己的虛擬 IP,一切權(quán)限都在管理員這里,如果只想讓對方訪問某個特定的設(shè)備只要給其他設(shè)備取消授權(quán)就萬無一失了。加入他人虛擬網(wǎng)絡(luò)的這一方如果不想對方訪問自己的設(shè)備或某些內(nèi)容,只要關(guān)閉這些內(nèi)容的共享功能即可。
相比之下提到安全只能說在傳輸方式上 Tailscale 更安全,因為你的數(shù)據(jù)是完全不會經(jīng)過 Tailscale 服務(wù)器的,而 ZeroTier 是有可能的,但是如果你使用其他服務(wù)器進行中轉(zhuǎn),那么這兩個也沒有太大的區(qū)別。關(guān)于穩(wěn)定性方面,因為本人沒有測試環(huán)境,所以無法提供信息,初步感受沒有太大差別。
總而言之,這兩個都挺好的,ZeroTier 比較方便與他人共享,Tailscale 相對更加安全,也許可以這樣理解吧,使用體驗差別不算太大,都是不限流、不限速的,即使是用于 4K 視頻的串流也完全不卡,而且是免費的,相較一些收費的內(nèi)網(wǎng)穿透工具,我覺得這兩個還是很不錯的選擇。