從外網連回家裡電腦的方法 (NAT 穿透)

作者:

分類:

前言

家裡的電腦通常在 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

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *