使用教程(Fachost)

本頁帶你完成:快速上手 → 取得公網 IPv4/IPv6 → SSH 連線 → 初始化(Debian 12)→ DDNS(Cloudflare / DuckDNS)→ NAT 端口轉發 → NAT64 / DNS64(進階)→ 送工單。

NAT 方案:提供共用 IPv4 + 外部端口;部分機型含原生 IPv6。

快速上手

  1. 登入 → 用戶中心我的產品與服務 → 進入服務詳情。
  2. 在服務頁可看到:OverviewNetworkVNCNAT 分頁。

必要時可透過面板進行 Reinstall(作業系統資料不保存,請先備份)。

登入與進入服務詳情

用戶中心 → 我的產品與服務 → 點進要操作的服務。

Panel image

內網 / 公網 IP 判讀

控制台 Network 分頁顯示的是 內網 IP(例:192.168.x.x)。這個位址僅用於主機在內部網段通訊與 NAT 轉發配置。

查詢對外 IPv4/IPv6

curl -4 ip.sb     # 顯示外部 IPv4(建議 -4)
curl -6 ip.sb     # 顯示外部 IPv6(若有)

NAT 方案連線服務時仍需加上 外部端口(見下一節)。

NAT 端口轉發面板

NAT 分頁新增對映:為內部服務(例:192.168.3.103:22)指派一個 外部連接埠(例:27892)。外部連線請用 外部IP:外部端口

# 連線示例
ssh -p 27892 root@<你的外部IPv4>

NAT 端口轉發面板

新增對映:產品自動獲取內網 IP,只需指派外部連接埠(例 27892)→ 內部連接埠(例 22)。

Panel image

SSH 連線(FinalShell / Termius / 命令列)

※ NAT 方案:SSH 端口不一定是 22,請以 NAT 面板顯示的「外部端口」為準。

命令列(macOS / Linux / WSL)

ssh -p <外部端口> root@<外部IPv4>
# 範例:ssh -p 27892 [email protected]

常用初始化指令(Debian 12)

# 系統更新與常用工具
apt update && apt upgrade -y
apt install -y curl wget sudo lsof htop net-tools vim

# (可選)Ookla speedtest(官方來源)
apt install -y gnupg
mkdir -p /etc/apt/keyrings
curl -fsSL https://packagecloud.io/ookla/speedtest-cli/gpgkey | gpg --dearmor | tee /etc/apt/keyrings/ookla-speedtest.gpg >/dev/null
echo "deb [signed-by=/etc/apt/keyrings/ookla-speedtest.gpg] https://packagecloud.io/ookla/speedtest-cli/debian/ bookworm main" > /etc/apt/sources.list.d/speedtest.list
apt update && apt install -y speedtest
speedtest

DDNS(Cloudflare|免安裝套件)

用固定域名對準你的可連線 IP。NAT 仍需加外部端口(例:ssh -p 27892 [email protected])。

  1. Cloudflare 建立 API Token(權限:Zone.DNS:Edit + Zone.Zone:Read),記下 Zone ID記錄名稱(如 vps.example.com)。
  2. 建立腳本 /usr/local/bin/cf-ddns.sh 並貼入:
#!/usr/bin/env bash
set -euo pipefail
CF_API_TOKEN="替換成你的token"
ZONE_ID="替換成你的zone id"
RECORD_NAME="vps.example.com"

IPV4="$(curl -4 -fsS ip.sb || true)"
IPV6="$(curl -6 -fsS ip.sb || true)"

update_record(){
  local TYPE="$1" VALUE="$2"
  [ -z "$VALUE" ] && return 0
  REC_JSON="$(curl -fsS -H "Authorization: Bearer ${CF_API_TOKEN}" \"https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?type=${TYPE}&name=${RECORD_NAME}\")"
  REC_ID="$(echo "$REC_JSON" | grep -oE '\"id\":\"[a-z0-9]+\"' | head -n1 | cut -d: -f2 | tr -d '\"')"
  PAYLOAD='{ "type": "'"$TYPE"'", "name": "'"$RECORD_NAME"'", "content": "'"$VALUE"'", "ttl": 120, "proxied": false }'
  if [ -n "$REC_ID" ]; then
    curl -fsS -X PUT -H "Authorization: Bearer ${CF_API_TOKEN}" -H "Content-Type: application/json" \"https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${REC_ID}\" --data "$PAYLOAD" >/dev/null
  else
    curl -fsS -X POST -H "Authorization: Bearer ${CF_API_TOKEN}" -H "Content-Type: application/json" \"https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records\" --data "$PAYLOAD" >/dev/null
  fi
}
update_record A "$IPV4"
update_record AAAA "$IPV6"
chmod +x /usr/local/bin/cf-ddns.sh
# /etc/systemd/system/cf-ddns.service
[Unit]
Description=Cloudflare DDNS updater
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/cf-ddns.sh
# /etc/systemd/system/cf-ddns.timer
[Unit]
Description=Run Cloudflare DDNS updater every 5 minutes
[Timer]
OnBootSec=1min
OnUnitActiveSec=5min
Unit=cf-ddns.service
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now cf-ddns.timer
systemctl list-timers | grep cf-ddns

DDNS(DuckDNS|最簡)

cat >/usr/local/bin/duck.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
DOMAIN="yourname"   # yourname.duckdns.org
TOKEN="你的token"
curl -fsS "https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip="
EOF
chmod +x /usr/local/bin/duck.sh
(crontab -l 2>/dev/null; echo '*/5 * * * * /usr/local/bin/duck.sh >/dev/null 2>&1') | crontab -

DuckDNS 官網

NAT64 / DNS64(單機自用|共用 IPv4 出口)

適用情境:本機只有一個全球 IPv6,但同時有一條「共用 v4 出口」(例如 NAT44/CGNAT)。目標是讓本機用 IPv6 也能無感訪問純 IPv4 站。

步驟 0:安裝編譯環境 & 載入內核模組

# 建議先安裝 headers(DKMS 需要)
apt update
apt install -y dkms build-essential linux-headers-$(uname -r)

# 安裝 Jool(含 jool-dkms 會自動編譯模組)
apt install -y jool-dkms jool-tools

# 載入 jool 模組並檢查
modprobe jool
lsmod | grep jool || echo "❌ jool 模組未載入"

# 開機自動載入(持久)
printf "jool\n" | tee /etc/modules-load.d/jool.conf >/dev/null

步驟 1:開啟 IPv6 轉發

sysctl -w net.ipv6.conf.all.forwarding=1
cat >/etc/sysctl.d/99-nat64.conf <<'EOF'
net.ipv6.conf.all.forwarding=1
EOF
sysctl --system

步驟 2:建立 NAT64 實例(RFC6052 前綴)

jool instance add default --netfilter --pool6 64:ff9b::/96

步驟 3:指定 pool4(自動抓出口 v4)

IFACE=eth0
IPV4_EGRESS=$(ip -4 addr show dev "$IFACE" | awk '/inet /{print $2}' | cut -d/ -f1)
[ -z "$IPV4_EGRESS" ] && echo "找不到 $IFACE 的 IPv4,請確認有共用 v4 出口" && exit 1
jool -i default pool4 flush
jool -i default pool4 add ${IPV4_EGRESS}/32

步驟 4:掛鉤 Netfilter(本機自用重點:OUTPUT)

ip6tables -t mangle -A OUTPUT     -d 64:ff9b::/96 -j JOOL --instance default
iptables  -t mangle -A PREROUTING -s ${IPV4_EGRESS}/32 -j JOOL --instance default

步驟 5:設定 DNS64(擇一)

  • Cloudflare:2606:4700:4700::64 / ::6464
  • Google:2001:4860:4860::64 / ::6464
resolvectl dns ${IFACE} 2606:4700:4700::64 2606:4700:4700::6464
resolvectl flush-caches

驗證

getent ahosts ipv4only.arpa | head
curl -6 -I http://ipv4only.arpa
jool -i default stats display

常見問題

  • JOOL target not found? 確認 modprobe jool 成功,且 jool-dkms 安裝無錯;必要時 dkms status 檢查。
  • 使用 nftables? 可改用 Jool 的 nft hook;或切回 iptables-legacy。
  • 完全沒有 IPv4 出口? 無法在本機完成 NAT64,需上游 NAT64/464XLAT。

遇到問題如何送工單

路徑:用戶中心 → 我的工單 → 提交工單

請附:服務 ID、外部 IP、外部端口(NAT)、動作時間、錯誤訊息/截圖,客服會在 24 小時內回覆。