在法國用 Freebox Pop 跑 Tailscale 子網路由的實測

这篇内容暂时只有 繁體中文 版本,以下是原文。

我住里昂,家裡是 Freebox Pop,光纖 2Gbps/600Mbps,機器是一台閒置的 NUC(i5-8259U,16G),跑 Debian 12。需求很簡單:人在外面時要能連回家裡的 NAS、印表機跟幾台 IoT 設備,不想在 Livebox 或 Freebox 後台一個一個開端口,也不想暴露公網 IP。數據量不大,日常就是同步幾百 MB 的文件,偶爾從 NAS 拉 10GB 左右的備份。

做法是把 NUC 當成 Tailscale 的 subnet router,讓整個 192.168.1.0/24 走進 tailnet。先在 NUC 上裝好 Tailscale,然後開轉發:

sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo tailscale up --advertise-routes=192.168.1.0/24 --accept-dns=false

接著在 Tailscale 後台把這條路由 approve 掉,客戶端才能用。Freebox 那邊什麼都不用改,因為 Tailscale 是出站連線。實測從巴黎的咖啡館連回家,ping 大概 18–25ms,拉一個 8GB 的備份檔穩定在 40–60MB/s,比我想的快。

為什麼這樣做:subnet router 的好處是不用碰 ISP 的 NAT,也不用在 Freebox 後台開端口;代價是流量全部繞過 Tailscale 的 DERP 或直連,如果兩邊 NAT 打不通就會走 relay,速度直接掉到 2–5MB/s。我這邊剛好打通過,所以沒踩到,但換到某些飯店網路或 4G 分享器就可能中。

會失效的地方:一是 --accept-dns=false 要加,不然 NUC 自己的 DNS 會被 Tailscale 接管,我當時沒加,結果 NUC 上的 Pi-hole 查詢全部亂掉,花了半小時才找到。二是 Freebox 的 DHCP 範圍如果跟 192.168.1.0/24 衝突(預設就是這個段),要嘛改 Freebox 的網段,要嘛改路由宣告,不能兩邊都一樣。三是 IPv6 我只開了 forwarding,沒宣告 v6 路由,因為 Freebox 的 v6 前綴會變,宣告了不穩定,這點我不確定長期怎麼處理比較好。

你們在法國用 Freebox 或 Orange 的時候,subnet router 是宣告整個 /24 還是只挑幾台機器?我現在有點想把 IoT 那段切出去,但又怕規則一多自己記不住。

0
赞同度 100% · 0 条评论 · 4 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。