不要對公網開 port

上一篇留了最後一個問題:從外面怎麼連得進去?答案不是把家裡那台機器的 22 port 直接開放到公網——那大概是最快把自己搞出事的做法。網路上有大量掃描機器人 24 小時不間斷地對全世界的 IP 敲 22 port,你的位址只要出現在公網上,收到第一波嘗試登入通常等不到隔天。更麻煩的是,你家多半是動態 IP,隔一段時間就換一個號碼;你的機器十之八九也躲在 NAT 後面,跟同一個 Wi-Fi 下的其他裝置共用 ISP 分配的那一個對外位址,本來就沒有一個「公網位址」可以開。

傳統解法有多痛

在這類工具出現之前,要打通這條路,得自己在路由器上動手:設定 port forwarding,把公網某個 port 轉給家裡那台機器;為了不管 IP 怎麼變都連得到,還得裝一個 DDNS 服務把主機名稱綁到當下的 IP,或者付費跟 ISP 要一個固定 IP;port 開出去之後,還得自己維護防火牆規則,擋掉除了你以外找上門的人。每一步都要設對,任何一步錯了,不是連不進去,就是把整個家用網路暴露在外。

Tailscale 做了什麼

Tailscale 把這整套麻煩事拿掉。它是一個 WireGuard mesh:在每一台裝置上裝好、登入同一個帳號,裝置之間就會直接建立一條加密連線,不經過任何公開對外的入口——沒有一個 port 被開在公網上等人掃描。連線用的也不是那組看不懂又會變動的 IP:MagicDNS 給每台裝置一個好記的名字,你記得那個名字就好,剩下的解析 Tailscale 自己處理。裝置在 NAT 後面、IP 換了、你人在家裡的 Wi-Fi 還是外面的行動網路——這些 NAT 穿透的細節,全部在背後自動處理掉。

心智模型:多一個只有你連得到的位址

把 Tailscale 想成,你家那台機器多了一個私有位址——這個位址只有登入同一個 Tailscale 帳號的裝置看得到、連得到,網路上的掃描機器人、隨便一個陌生 IP,完全不知道它存在,因為它從來沒有出現在公網上過。接下來的 SSH 連線,接的就是這個私有位址,不是那個天天被人敲門的 22 port。

三個零件都到齊了。接下來的問題是——手機上用哪個 app 接?