繼上一篇 家庭流媒體解決方案 - Jellyfin:我🈶獨特的使用方法 - zfsjlll 的自留地 折騰完流媒體後,我的 WinNAS 搬到了老家長期安置,由於網絡環境以及運營商服務的變化。家寬從千兆變成了 300Mbps, 沒有了動態的公網 IPv4,於是就需要重新設計遠程訪問方案。
(之前方案可看 Cloudflare CDN 開放端口 - zfsjlll 的自留地)
1. 需求場景與痛點剖析#
- 家庭 NAS 遠程訪問的典型困境:
- 動態公網 IP 的穩定性問題
- 運營商封鎖 80/443 端口的尷尬
- HTTP 明文傳輸的安全隱患
模擬用戶登錄
請求URL:http://vulnerable-site.com/login
表單字段:username=admin&password=123456
Wireshark 抓包 Http 報文,導致隱私泄露
POST /login HTTP/1.1
Host: vulnerable-site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
username=admin&password=123456
2. 技術方案全景圖#
[用戶瀏覽器] --HTTPS(443)--> [CDN節點] --HTTP(自定義端口)--> [反向代理服務器] --> [WinNAS服務]
- 關鍵技術組件說明:
- CDN 當然是選擇賽博大善人 Cloudflare, 對個人站長非常友好,就是有一些技術門檻,都已經免費了,還要什麼自行車(笑)
- 反向代理不使用常見的 Nginx/Caddy,最近 Lucky 在 NAS 圈特別火,可以實現:軟硬路由公網神器,ipv6/ipv4 端口轉發,反向代理,DDNS,WOL,ipv4 stun 內網穿透,cron,acme, 阿里雲盤,ftp,webdav,filebrowser。功能完全夠用,而且對小白及其友好,圖形化界面操作,官網地址:Lucky
3. 實戰部署步驟#
3.1 基礎網絡架構搭建
具體的部署教程可以上網搜索,這裡只講幹貨,全是進階玩法。
- 動態域名解析方案(Lucky 工具在 Windows 服務的靜默部署)
- 反向代理配置(依舊是 Lucky)
- 除了 DDNS 和反向代理模塊,還有端口轉發,遠程網絡喚醒,網絡存儲(WebDav,FTP 等協議的服務器實現,我已經部署了 Alist,暫不需要)等超多實用功能可以探索,(類似於軟路由 ALL IN ONE?我沒部署過軟路由,如有錯誤請指正)
3.2 CDN 層安全改造
- 端口隱身術:通過 CDN 的「頁面規則」實現 URL 重定向(以 Cloudflare 為例):
- 創建規則實現:
*.yourdomain.com/*
→ 轉發到http://nas.yourdomain.com:yourport$1
- 創建規則實現:


自定義篩選表達式,第一條規則選擇通配符匹配所有子域名,有個性化需求再添加規則,如圖中 jellyfin 服務不進行重定向,以避免 "CDN 降速"
最後給需要重定向的域名開啟 "小雲朵" 即可
- 開啟 Always Use HTTPS 強制跳轉
- SSL 證書自動化:
- 使用 acme 申請 Let's Encrypt 通配符證書
- 證書自動更新
- 如果申請證書失敗,可能需要配置代理
3.3 攻擊面收縮策略
-
IP 白名單強化:通過 CDN 防火牆限制源站訪問(僅允許 CDN 節點 IP)
# Windows防火牆入站規則(管理員PowerShell) New-NetFirewallRule -DisplayName "Allow_CDN_IPs" -Direction Inbound -LocalPort 8765 -Protocol TCP -Action Allow -RemoteAddress 173.245.48.0/20,103.21.244.0/22
-
協議安全加固:
- 禁用 TLS 1.0/1.1
在 Lucky 中配置 TLS 最低版本限制為 TLS1.2 即可 - 配置 HSTS 頭
- 禁用 TLS 1.0/1.1
反向代理模塊添加響應頭
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
建議詳細了解之後再配置 preload 選項,需要全部子域名都符合 HTTPS,而且一旦發現有子域名不符合 HTTPS(包含非公開訪問的內部子域名),刪除過程是非常緩慢而痛苦的。
4. 讀者互動環節#
- 開放討論:
"如果你有物理服務器資源,是否會改用 WireGuard 建立 VPN 隧道?為什麼?"
5. 技術細節增強建議#
- 流量偽裝技巧:在 CDN 配置中添加偽裝的
/health-check
路徑,返回虛假的 404 頁面迷惑掃描器 - 應對 fofa 等掃描器的威脅:配置反向代理默認規則為 “關閉連接”,詳細可參考:在 Windows 下使用 lucky 配置反向代理以實現較為安全的 WEB 訪問 - 哔哩哔哩
