使用ZeroTier VPN架設連回家裡的Linux遠端桌面服務

為了要讓手機遠端連線到家裡的電腦,曾經試過很多家的遠端桌面,後來還是覺得自己架比較好,不想再讓資料經過第三方的伺服器了。所以找到了ZeroTier,它只負責處理連線的部份,連線有經過加密。

個人使用的話花不到半毛錢,ZeroTier只是一個類似VPN的服務,延遲還算可以接受。

ZeroTier開源跨平台,支援Linux / Windows / MacOS / Android / iOS / BSD系統。

使用ZeroTier達成內網穿透,讓不同網路下的裝置連線到同一個虛擬區網。這樣要進行ssh、vnc遠端桌面就簡單多了。

以下示範讓分處不同網路的Android手機可以遠端到家裡的Linux電腦。

1. 設定SSH、VNC、ZeroTier

電腦為Arch Linux,用systemd啟動系統服務。

  1. 安裝SSH,設定SSH開機自動啟動
1
2
3
sudo pacman -S openssh
sudo systemctl enable sshd
sudo systemctl start sshd
  1. 安裝X11版的VNC server,可讓遠端連線直接登入目前的工作階段(session)而非開一個新桌面。
1
sudo pacman -S x11vnc
  1. 設定VNC server密碼
1
x11vnc -storepasswd
  1. 編輯~/.config/autostart/x11vnc.desktop,設定登入桌面後自動啟動x11vnc。用-geometry降低螢幕解析度節省頻寬。
1
2
3
4
5
6
7
8
9
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=
Exec=x11vnc -bg -auth guess -usepw -display :0 -forever -geometry 1280x720
StartupNotify=false
Terminal=false
Hidden=false
  1. 安裝ZeorTier,設定開機自動啟動
1
2
3
4
sudo pacman -S zerotier-one
sudo systemctl enable zerotier-one
sudo systemctl start zerotier-one
sudo zerotier-one -d
  1. 防火牆允許SSH、VNC、ZeroTier通過,UFW的指令如下:
1
2
3
sudo ufw allow 22,9993,5900:5910 proto tcp
sudo ufw allow 22,9993,5900:5910 proto udp
sudo ufw reload
  1. 一切設定好後重開機。

2. 新增ZeroTier網路

  1. ZeroTier官網註冊帳號,到後台 建立一個私人(private)網路。

  2. 點選前面的一串數字,將此網路ID記下來。

3. 讓電腦連上ZeroTier

  1. 執行ZeroTier
1
sudo zerotier-one -d
  1. 加入網路
1
zerotier-cli join  "網路ID"
  1. 開啟ZeroTier後台,在Members處的Auth框框打勾同意電腦加入網路,並取名方便識別。

4. 讓手機連上ZeroTier

  1. Google Play下載ZeroTier APP。

  2. 加入網路ID,啟動VPN連線

  3. 開啟ZeroTier後台,在Members處打勾同意手機加入網路,並取名識別。

  4. 到這邊ZeroTirer後台應該長這樣,目前有二個裝置。前面172開頭的是ZeroTier給的虛擬區域網路IP,最後面顯示的是真實IP。

5. 遠端登入示例

  1. 手機安裝Termux,安裝openssh套件。用ssh登入電腦,輸入ZeroTier的172開頭的區網IP:

  2. 同理,安裝Real VNC Viewer APP,登入虛擬區域網路上的vnc server:

  3. 附註:殺死所有VNC server的指令:x11vnc killall

6. 參考資料

如果本網站文章對您有幫助,歡迎贊助我。