前言
家裡的電腦通常在 NAT 後面(私有 IP 如 192.168.x.x),無法直接從外面連入。本文介紹幾種從外網連回家裡電腦的方法。
方案一:Router Port Forwarding
最傳統的方式,在 Router 上設定 port forwarding:
設定範例
- 外部 port 22 → 192.168.89.168:22 (SSH)
- 外部 port 80 → 192.168.89.168:80 (HTTP)
- 外部 port 3389 → 192.168.89.168:3389 (RDP)
從外面連線
ssh user@你的公網IP
優點
- 不需要額外軟體或服務
- 延遲最低
缺點
- 需要 Router 管理權限
- 如果是浮動 IP,每次 IP 變動都要更新
- 需要搭配 DDNS 服務解決 IP 變動問題
方案二:Tailscale(推薦)
Tailscale 是基於 WireGuard 的 VPN 服務,可以自動穿透 NAT,不需要設定 Router。
安裝
# Ubuntu/Debian
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
使用方式
安裝後會取得一個固定的 Tailscale IP(如 100.x.x.x),從任何有安裝 Tailscale 的裝置都能連線:
ssh user@100.x.x.x
優點
- 完全不用管 NAT 和 Router 設定
- IP 固定不變
- 加密安全
- 免費版支援最多 100 台裝置
缺點
- 兩邊都要安裝 Tailscale
- 依賴第三方服務
方案三:FRP (Fast Reverse Proxy)
需要一台有公網 IP 的 VPS 作為中繼站。
架構
[你的電腦] → Internet → [VPS (frps)] ← [家裡電腦 (frpc)]
VPS 端 (frps)
# 下載 frp
wget https://github.com/fatedier/frp/releases/download/v0.52.0/frp_0.52.0_linux_amd64.tar.gz
tar -xzf frp_0.52.0_linux_amd64.tar.gz
cd frp_0.52.0_linux_amd64
# frps.ini
[common]
bind_port = 7000
# 啟動
./frps -c frps.ini
家裡電腦 (frpc)
# frpc.ini
[common]
server_addr = 你的VPS_IP
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222
[http]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080
# 啟動
./frpc -c frpc.ini
連線方式
ssh -p 2222 user@你的VPS_IP
優點
- 完全自己控制
- 可以轉發任何 TCP/UDP 服務
- VPS 費用便宜(約 $5/月)
缺點
- 需要另外維護一台 VPS
- 設定較複雜
方案四:Reverse SSH Tunnel
不需要額外軟體,只用 SSH 就能做到。
在家裡電腦執行
ssh -R 2222:localhost:22 user@你的VPS -N -f
從外面連線
ssh -p 2222 user@你的VPS
優點
- 不需要額外軟體
- 簡單快速
缺點
- 連線可能會斷,需要搭配 autossh 保持連線
- 仍然需要一台 VPS
總結
| 方案 | 難度 | 需要 VPS | 適合場景 |
|---|---|---|---|
| Port Forwarding | 簡單 | 否 | 有 Router 權限、固定 IP |
| Tailscale | 最簡單 | 否 | 懶人首選 |
| FRP | 中等 | 是 | 需要完全控制、多服務轉發 |
| Reverse SSH | 簡單 | 是 | 臨時使用、只需 SSH |
發佈留言