雙棧寬頻用 IPv6 直連 NAS 完整教學:不做連接埠轉發、不用內網穿透

雙棧寬頻用 IPv6 直連 NAS 完整教學:不做連接埠轉發、不用內網穿透

適用前提:你的寬頻已經是 IPv4 + IPv6 雙棧(不確定的話先去 IPv6 檢測工具 測一次)
目標:從外網用 IPv6 直接連到家裡的 NAS —— 不做連接埠轉發、不裝 frp、不買中轉
耗時:約 30 分鐘,其中一半時間花在「確認位址到底變不變」上

先把一個誤會說清楚:IPv6 不需要連接埠轉發,但需要防火牆放行

很多人第一次配 IPv6 直連時會卡在同一個地方:路由器裡找了半天「IPv6 連接埠轉發」,結果根本沒有這個選單,於是以為自己路由器不支援。

其實是概念對不上。

IPv4 時代之所以要做連接埠轉發(NAT 轉發),是因為你家裡所有設備共用一個公網 IPv4,路由器必須知道「外面來的 5000 連接埠該丟給哪台機器」:

外網 → 公網 IPv4:5000 → 路由器查 NAT 表 → 192.168.1.100:5000(NAS)
                        ↑ 這一步就是連接埠轉發

IPv6 下每台設備自己就有公網位址,路由器不需要翻譯,只需要決定「這個封包放不放進來」:

外網 → [2408:xxxx:xxxx:xxxx::100]:5000 → 路由器 IPv6 防火牆 → NAS
                                          ↑ 只有「放行/攔截」,沒有轉譯

所以:

IPv4 IPv6 需要連接埠轉發嗎 需要 不需要 需要動路由器嗎 需要 需要(改防火牆入站規則,不是轉發) 需要公網 IP 嗎 需要(大部分家用寬頻拿不到) 電信商已經給了 需要內網穿透嗎 多數情況下要 不要

路由器 IPv6 防火牆預設是「全部入站拒絕」的,這是設計如此、也是應該的。你要做的就是給 NAS 那個位址、那幾個連接埠開一個口子。找選單的時候別找「連接埠轉發」,找 「IPv6 防火牆」。

直連比中轉快在哪

這裡不吹具體倍數(不同線路差別太大,任何統一數字都是編的),只說結構上的差別:

  • 走中轉/穿透:你的資料 NAS → 中轉伺服器 → 你,多繞一圈,且上限被中轉節點的頻寬和它的付費方案卡死
  • 走 IPv6 直連:NAS → 你,走電信商骨幹,上限是你家寬頻的上行頻寬

家用寬頻上行通常是 30–50 Mbps(千兆寬頻),這個數字才是你直連看片、拉檔案的天花板。中轉方案往往連這個數字都跑不滿,這才是「直連更快」的真正來源。

第一步:確認你確實是雙棧

打開 17NAS 的 IPv6 檢測,看結果屬於哪一類:

檢測結果 含義 這篇教學適用嗎 IPv4 ✅ + IPv6 ✅ 雙棧,最理想 ✅ 完全適用 只有 IPv6 純 v6 網路 ✅ 適用,但存取端也必須有 v6 只有 IPv4 電信商沒下發 v6,或路由器沒開 ❌ 先去開 IPv6,見文末延伸閱讀

注意一個陷阱:這個測試測的是「你現在這台設備」的出口。手機連 WiFi 測出來有 IPv6,不代表 NAS 也有 —— NAS 可能插在一台不轉發 IPv6 的交換器/軟路由後面,或者本身把 IPv6 關了。所以下一步要單獨確認 NAS。

順帶記住測出來的位址前綴(2408:/240e:/2409: 這些),後面對照 NAS 位址會用到。

第二步:確認 NAS 拿到的是「公網 IPv6」

IPv6 位址不是有就行,得是公網可路由的那一種。三類位址一定要分清:

位址開頭 類型 能不能遠端存取 fe80:: 連結本地位址(Link-Local) ❌ 只在本網段有效,永遠不通 fd00:: ~ fdff:: 唯一本地位址(ULA),相當於 v6 版內網位址 ❌ 不可路由 2000::/3(即 2xxx: 240e: 2408: 2409: 240c: 等) 全球單播位址(GUA) ✅ 就是它

各平台查看方法

群暉 DSM:控制台 → 網路 → 網路介面 → 選取區域網路 → 編輯 → IPv6,模式選「自動」,下方會顯示取得的位址。

威聯通 QTS:主控台 → 網路和虛擬交換器 → 介面 → 對應網卡 → IPv6。

飛牛 / Linux / 群暉 SSH:

ip -6 addr show scope global

Windows(如果 NAS 是 Windows 或軟路由虛擬機):

ipconfig /all

如果 NAS 只有 fe80:: 開頭的位址,說明路由器沒有向內網下發 IPv6 前綴。回到路由器:

  • WAN 埠 IPv6 連線類型:選 DHCPv6 或 SLAAC(國內電信商基本都是 DHCPv6-PD)
  • 前綴取得方式:DHCPv6-PD(前綴委派),前綴長度一般 /60 或 /56
  • LAN 埠分配方式:SLAAC 或 SLAAC + 無狀態 DHCPv6

改完等 1–2 分鐘,NAS 上重新查。還是沒有就把 NAS 網卡停用再啟用一次。

第三步(最容易被跳過的一步):讓 NAS 的位址穩定下來

配好之後過兩天突然連不上了,八成栽在這裡。IPv6 位址由兩部分拼成:

2408:8210:1234:5678  :  a1b2:c3d4:e5f6:0789
└── 前綴(電信商給) ──┘   └── 介面 ID(設備自己定)──┘

兩部分都可能變,但原因和對策完全不同。

變化一:介面 ID 變(IPv6 隱私擴充)

為了防止被透過固定位址追蹤,很多系統預設啟用「臨時位址/隱私擴充」,介面 ID 每天甚至每幾小時換一次。桌上型電腦上這是好事,NAS 上是災難 —— 你的 DDNS 永遠追不上。

怎麼判斷自己中招了:

ip -6 addr show scope global

輸出裡如果出現 temporary 或 secondary 字樣,就是臨時位址。另一個土辦法:位址中間含有 ff:fe 的是 EUI-64 位址(由網卡 MAC 推導,天生穩定);一串看不出規律又天天變的,就是臨時位址。

關掉它:

Linux / 飛牛 / 群暉 SSH:

# 暫時生效,先驗證
sudo sysctl -w net.ipv6.conf.all.use_tempaddr=0
sudo sysctl -w net.ipv6.conf.default.use_tempaddr=0

# 確認沒問題後寫進 /etc/sysctl.conf 永久生效
echo "net.ipv6.conf.all.use_tempaddr=0" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.use_tempaddr=0" | sudo tee -a /etc/sysctl.conf

Windows(管理員 PowerShell / CMD):

netsh interface ipv6 set global randomizeidentifiers=disabled
netsh interface ipv6 set privacy state=disabled

群暉 DSM / 威聯通預設使用 EUI-64,介面 ID 一般是穩定的,但仍建議按上面的方法確認一遍,不同版本行為不一樣。

變化二:前綴變(電信商換 IP)

這個你控制不了。中華電信/遠傳/台灣大等家用寬頻在光貓重撥、線路割接、長時間連線後,都可能換一個新前綴。表現是:位址後半截沒變,前面 4 組變了。

對策只有一個:DDNS(第七步細講)。別想著手動配靜態 IPv6 —— 前綴一變,靜態配的位址立刻作廢。

如果路由器支援「IPv6 介面 ID 手動指定」(OpenWrt、愛快、部分華碩機型有),可以把 NAS 的介面 ID 固定成好記的值比如 ::100,這樣前綴變了也只是位址的前半截改變,排查起來省事很多。

第四步:路由器 IPv6 防火牆放行

核心動作:允許遠端存取 NAS 的完整 IPv6 位址 的 指定連接埠。

先確定要開哪些連接埠。常見的:

服務 預設連接埠 建議 群暉 DSM 5000 (HTTP) / 5001 (HTTPS) 改成非預設連接埠,只開 HTTPS 威聯通 QTS 8080 / 443 同上 飛牛 fnOS 5666 同上 反向代理 443 最推薦:只開這一個 SSH 22 非必要不開,要開就改連接埠 + 金鑰登入

能只開一個 443 走反代,就別開一堆。 每多開一個連接埠,就是多一個被掃的入口。

各品牌操作位置

華碩(ASUS)
防火牆 → IPv6 防火牆 → 啟用 IPv6 防火牆 = 是 → 新增規則:

欄位 填什麼 遠端 IP / 長度 留空(表示任意來源) 本機 IP NAS 的完整 IPv6 位址(不是縮寫,不是 ::100) 連接埠範圍 例如 5001 協定 TCP

TP-LINK
IPv6 設定 → 防火牆 /「IPv6 轉發規則」(不同韌體叫法不一),填 NAS 的 IPv6 位址和連接埠。部分舊韌體只有「IPv6 防火牆 開/關」總開關。

小米 / 紅米
一般路由 → 進階設定 → IPv6 設定,多數機型只有防火牆總開關。若只能關總開關,務必把安全防護做在 NAS 端(第八步)。

華為
更多功能 → 安全設定 → IPv6 防火牆,選「自訂」後新增放行規則;選「關閉」等於全放行,不推薦。

OpenWrt / iStoreOS(最精確,推薦)
SSH 上去執行:

uci add firewall rule
uci set firewall.@rule[-1].name='Allow-NAS-DSM'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest='lan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_ip='2408:xxxx:xxxx:xxxx::100'
uci set firewall.@rule[-1].dest_port='5001'
uci set firewall.@rule[-1].family='ipv6'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
/etc/init.d/firewall restart

其中 dest_ip 換成你 NAS 的實際位址。前綴變了這條規則會失效 —— 更穩的寫法是只匹配介面 ID,OpenWrt 支援用 ::100/::ffff:ffff:ffff:ffff 這種遮罩形式,具體版本差異較大,配完務必用第六步的方法實測。

光貓也可能攔一道

如果你的光貓是路由模式(自己撥號),那麼資料要先過光貓再過路由器,光貓上的 IPv6 防火牆同樣會攔。這種雙層結構非常難調。

強烈建議先把光貓改成橋接、由路由器撥號,只留一層。參考:教你 10 分鐘搞定光貓改橋接。

⚠️ 不要圖省事直接把 IPv6 防火牆整個關掉。 那等於把 NAS 上所有監聽連接埠(包括 SMB、SSH、資料庫、Docker 裡那一堆容器)全部暴露到公網。寧可多點兩下加規則。

第五步:別忘了 NAS 自己的防火牆

路由器放行了,NAS 自己還有一道。這是「路由器規則明明加了卻還是不通」的高頻原因。

群暉 DSM:控制台 → 安全性 → 防火牆。檢查規則裡的「來源 IP」,如果你之前只寫了 IPv4 網段(比如 192.168.1.0/24),IPv6 流量會被預設規則攔掉。需要新增一條允許對應連接埠、來源為「所有」的規則。

威聯通:主控台 → 系統 → 安全性 → 允許/拒絕清單。

Linux(ufw):

sudo ufw allow proto tcp to any port 5001
sudo ufw status verbose

注意 /etc/default/ufw 裡的 IPV6=yes 必須打開(新版預設開),否則規則只作用於 IPv4。

Docker 部署的服務要單獨驗證。容器網路的 IPv6 行為取決於 Docker 版本和 daemon 設定,-p 5001:5001 在有的環境下 IPv6 能通、有的不能,不要憑經驗假設,直接用下一步的方法實測。如果實測不通,兩個常見解法:

  • 容器改用 network_mode: host(最省事)
  • 在 /etc/docker/daemon.json 裡開啟 IPv6 支援("ipv6": true 配合 "ip6tables": true),改完重啟 dockerd

第六步:驗證 —— 從公網真實回連

這一步別用「我在家連一下試試」糊弄過去。內網能通不代表公網能通:你在家存取 NAS 的 IPv6 位址,封包壓根沒出過路由器,防火牆規則有沒有生效完全測不出來。

必須從外部驗證。下面兩條指令直接在 NAS 上(SSH 或群暉的終端機)執行,是最快的辦法:

1. 先確認 NAS 自己有 IPv6 出口,並拿到它的公網位址

curl -6 https://v6.17nas.com

正常會直接回一個位址,比如 2408:8210:1234:5678:a1b2:c3d4:e5f6:789。

  • 報錯 / 逾時 → NAS 根本沒有 IPv6 出口,回第二步
  • 回來的位址和你在 DSM 裡看到的不一致 → 多半是臨時位址在作怪,回第三步

想連帶看歸屬地和電信商:

curl -6 "https://v6.17nas.com?format=json"

2. 讓公網伺服器主動回連你的連接埠

curl -6 "https://17nas.com/api/tools/port-check.php?port=5001"

這個介面會從 17NAS 的伺服器主動向你剛才那個位址的指定連接埠發起一次 TCP 連線,然後把結果告訴你。回傳類似:

{"success":true,"status":"open","ip":"2408:8210:...","port":5001,"ip_version":6,"latency_ms":24}

status 三種結果,對應三種完全不同的問題:

status 含義 該查哪裡 open 通了 設定完成,進入第七步 refused 封包能到 NAS,但那個連接埠沒人監聽(收到 RST) 路由器防火牆是對的;問題在 NAS:服務沒啟動,或連接埠填錯了 filtered 封包被丟了,沒有任何回應 路由器/光貓防火牆沒放行,或 NAS 自身防火牆攔了

能區分 refused 和 filtered,就能省掉一半瞎試的時間 —— 前者別再折騰路由器了,後者別再折騰 NAS 了。

注意:這個介面只會回連發起請求的那個位址,不接受指定任意 IP。所以指令必須在 NAS 上跑,在你電腦上跑測的是你電腦。每小時限 30 次。

3. 瀏覽器驗證(記得加方括號)

IPv6 位址裡全是冒號,瀏覽器會把它當連接埠分隔符,必須用方括號包起來:

❌ https://2408:8210:1234:5678::100:5001
✅ https://[2408:8210:1234:5678::100]:5001

用手機關掉 WiFi、走 4G/5G 打開這個位址,這是最貼近真實使用情境的驗證。如果手機電信商網路沒有 IPv6,會打不開 —— 這不是你配錯了,是手機那端的問題。

第七步:位址會變,所以要配 DDNS(AAAA 記錄)

現在能連了,但位址是一串沒人記得住的十六進位,而且前綴隨時會變。解決方案是把網域的 AAAA 記錄(IPv6 用 AAAA,IPv4 才是 A)自動指向目前位址。

方案 A:ddns-go(推薦,圖形介面)

支援 Cloudflare、阿里雲、騰訊雲、DNSPod 等,Docker 一行起:

docker run -d --name ddns-go --restart=always \
  --network=host \
  -v /opt/ddns-go:/root \
  jeessy/ddns-go

存取 http://NAS 內網 IP:9876 設定。關鍵設定:

  • 啟用「IPv6」,網域類型選 AAAA
  • 取得方式:優先選「透過網卡取得」,然後用正規表示式過濾掉臨時位址
  • TTL 設成 60–120 秒,預設的 600 秒意味著前綴變了要等 10 分鐘

方案 B:自己寫腳本(最簡單可靠)

配合前面那個介面,一條 cron 就夠了。以 Cloudflare 為例:

#!/bin/bash
# /opt/ddns6.sh —— 每 5 分鐘同步一次 AAAA 記錄

TOKEN="你的_Cloudflare_API_Token"
ZONE_ID="你的_Zone_ID"
RECORD_ID="AAAA記錄的_Record_ID"
NAME="nas.example.com"

IP6=$(curl -6 -sS --max-time 10 https://v6.17nas.com)
[ -z "$IP6" ] && exit 0                       # 取不到就不動,別把記錄清空

LAST=$(cat /tmp/.ddns6_last 2>/dev/null)
[ "$IP6" = "$LAST" ] && exit 0                # 沒變就不發請求

curl -sS -X PUT \
  "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  --data "{\"type\":\"AAAA\",\"name\":\"$NAME\",\"content\":\"$IP6\",\"ttl\":120,\"proxied\":false}" \
  && echo "$IP6" > /tmp/.ddns6_last

加執行權限並掛到 crontab:

chmod +x /opt/ddns6.sh
crontab -e
# 加入這行
*/5 * * * * /opt/ddns6.sh >> /var/log/ddns6.log 2>&1

ZONE_ID 在 Cloudflare 網域總覽頁右下角;RECORD_ID 需要先手動建一條 AAAA 記錄,再用 API 列出記錄拿到。

三個容易踩的點:

  1. 腳本必須跑在 NAS 上,因為 curl -6 v6.17nas.com 回傳的是「發起請求那台機器的位址」。跑在路由器上拿到的是路由器的位址,兩者不一樣。
  2. proxied 必須是 false。開了 Cloudflare 小黃雲,流量就繞回中轉了,直連的意義沒了(而且 5000/5001 這類連接埠小黃雲也不代理)。
  3. 取不到位址時不要更新記錄。上面腳本裡那句 [ -z "$IP6" ] && exit 0 就是幹這個的 —— 見過太多人網路抖一下把 AAAA 記錄刷成空值,然後花兩小時排查「網域怎麼突然解析不了」。

第八步:安全 —— 這一步比前面七步加起來都重要

必須清醒地認識到:IPv6 直連意味著你的 NAS 真真切切地站在公網上,沒有 NAT 幫你擋任何東西了。

有個流傳很廣的錯誤安慰是「IPv6 位址空間那麼大,掃不到我」。這在 2018 年也許成立,現在不成立了。攻擊者不再暴力遍歷位址空間,而是從這些地方直接拿到活躍位址:

  • 憑證透明日志(CT Log):你用 Let's Encrypt 給 nas.example.com 簽了憑證,這個網域當天就會出現在公開的 CT 日志裡,任何人可查
  • DNS 記錄爆破:nas. home. syno. ds. 這類子網域是字典裡的頭幾條
  • 被動 DNS 資料庫、你自己在論壇貼過的截圖

結論:只要你配了網域,就要假設位址已經公開。 安全必須靠設定本身,不能靠「沒人知道我」。

必做清單

連接埠層面

  • 只放行必要連接埠,能用反代收斂到 443 就只開 443
  • 絕對不要暴露:445/139(SMB,勒索軟體的頭號入口)、111/2049(NFS)、3389(RDP)、3306/5432(資料庫)、Docker 的 2375
  • 管理連接埠(DSM 5000/5001、QTS 8080)改成 10000 以上的非常見連接埠
  • SSH 非必要不開;要開就改連接埠 + 停用密碼登入、只用金鑰

帳號層面

  • 停用/改名預設管理員帳號(群暉的 admin、威聯通的 admin),這是掃描器的第一發子彈
  • 管理員帳號開兩步驗證(2FA),這一項的性價比最高
  • 密碼 16 位以上,不與其他網站重複

防護層面

  • 群暉:控制台 → 安全性 → 帳戶 → 開啟自動封鎖(建議 5 分鐘內失敗 5 次封鎖 IP)
  • 開啟通知,登入成功/失敗推送到手機
  • 系統和套件保持更新 —— 群暉、威聯通歷史上都出過被大規模利用的遠端漏洞,打補丁比什麼都管用

加密層面

  • 一律走 HTTPS,別用明文 HTTP 傳密碼
  • 申請憑證優先使用 DNS-01 驗證(在 DNS 裡加一條 TXT 記錄),不需要開放 80 連接埠,也不受「電信商封 80」影響
  • 群暉 DSM 內建的 Let's Encrypt 走的是 HTTP-01,需要 80 連接埠可達;如果 80 被封,改用 acme.sh 走 DNS-01

再進一步

  • 如果只有你自己和家人用,最穩的做法是不直接暴露 Web 面板,而是只開一個 WireGuard/Tailscale 入口,建立加密組網連線後再存取內網。IPv6 直連在這裡依然有價值 —— 它讓 WireGuard 能直接建立點對點連線,不用中轉
  • 定期翻一遍登入日志(群暉:控制台 → 日志中心)

常見問題速查

現象 最可能的原因 怎麼修 curl -6 v6.17nas.com 逾時 NAS 沒有 IPv6 出口 回第二步,檢查路由器 IPv6 下發 NAS 只有 fe80:: 位址 路由器沒做前綴委派 路由器 WAN 改 DHCPv6-PD,LAN 改 SLAAC port-check 回傳 filtered 路由器/光貓防火牆沒放行 回第四步;光貓是路由模式的先改橋接 port-check 回傳 refused 連接埠沒人監聽 服務沒啟動,或連接埠號填錯了;和路由器無關 內網能存取,外網不能 只測了內網,沒驗證公網路徑 用第六步的方法從公網回連 昨天能連,今天不能 位址變了 臨時位址(第三步)或前綴變了(第七步 DDNS) 手機 4G 打不開,家裡 WiFi 能開 手機電信商網路沒有 IPv6 換個網路試;確認不是自己配錯 瀏覽器提示位址無效 忘了加方括號 http://[位址]:連接埠 公司/學校網路存取不了 那邊是純 IPv4 網路 IPv6 直連在這種情境下不可用,見下 Docker 裡的服務不通,主機服務通 容器沒有 IPv6 改 network_mode: host 或給 dockerd 開 IPv6

什麼時候 IPv6 直連不夠用

誠實地說,IPv6 直連有一個硬性前提:存取端也必須有 IPv6。以下情境會翻車:

  • 公司/學校內網(大量企業網路至今純 IPv4)
  • 部分飯店、公共 WiFi
  • 少數還沒開通 IPv6 的寬頻方案
  • 需要分享給別人存取,而對方的網路環境你控制不了

這些情況下需要一個「IPv4 落地點」作為補充。常見做法是用 CDN/邊緣節點做 IPv4 到 IPv6 的回源轉換 —— 訪客用 IPv4 存取 CDN,CDN 用 IPv6 回源到你家 NAS。具體可以看:無公網 IPv4 怎麼辦?騰訊雲 EdgeOne + IPv6 實現家庭寬頻內網穿透。

最佳實踐是兩條腿走路:IPv6 直連作為主路徑(快、免費、無限流量),CDN 或 Tailscale 作為兜底。

相關工具與延伸閱讀

設定過程中會用到的檢測工具:

延伸閱讀:

最後再強調一遍:第六步的驗證一定要做,第八步的安全一定要做。前者省時間,後者省的可能是你整個 NAS 上的資料。

資料參考:想知道你所在縣市和電信商的 IPv6 普及情況,可以查看 台灣各省 IPv6 可達率統計(近 30 天真實測試樣本,每小時更新)。