找回密碼
 立即註冊
    查看: 3|回覆: 0

    從外面連回家裡的 Home Assistant:四種做法的完整設定與風險

    [複製鏈接]

    !lvup!   100%

    383

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005836
    發表於 2 小時前 | 顯示全部樓層 |閱讀模式
    這篇從「什麼都還沒設定」開始,做到你人在外面、用行動網路就能打開 Home Assistant,而且家裡的路由器一個埠都沒有對外打開。四種做法各有完整步驟。

    每一步都有「你會看到什麼」。做完第三步能自己確認第三步成功了,才走第四步。

    這篇從「什麼都還沒設定」開始,做到你人在外面、用行動網路就能打開 Home Assistant,而且家裡的路由器一個埠都沒有對外打開。四種做

    做完這篇你會有什麼


    • 一條從外面連得回家的路,而且你知道它的風險在哪裡
    • 一份驗證過的「真的是從外網進來」的測試結果,不是在家裡自己騙自己
    • HA 的兩步驟驗證與登入失敗封鎖都設好了
    • 一條「遠端連線斷掉時會通知你」的自動化


    ---

    先講一件絕對不要做的事

    不要把 Home Assistant 的 8123 埠直接轉發到網際網路上。這是官方文件也明講的一條。

    理由不是「理論上有風險」,是每天都在發生:


    • 全世界的掃描機器人二十四小時在掃常見埠。8123 是 HA 的預設埠,它在所有掃描清單裡
    • 被進去之後,對方拿到的不是「一個網頁」,是你家所有裝置的控制權 —— 包括電子門鎖、車庫門、攝影機的即時畫面
    • HA 的登入頁預設沒有速率限制(要自己開,見步驟 1-2)
    • 而且家用寬頻的 IP 很少換,被掃到一次就會一直被回訪


    下面四條路都沒有這個問題。四條裡有三條是「家裡的路由器完全不用開任何埠」。

    ---

    步驟 1:四條路共用的前置作業(不做這個,後面都是白搭)

    1-1 開兩步驟驗證

    左下角點自己的名字 → 安全性分頁 → 多重要素驗證 → 啟用。用手機的 Google Authenticator 或 Authy 掃 QR code。

    ⚠ 把那串備用代碼存起來,存在手機以外的地方。手機掉了又沒有備用碼的話,你就進不去自己的 HA 了。

    你會看到什麼:登出再登入一次,輸入帳密之後應該多出一個六位數驗證碼的欄位。沒有多這一格代表沒設成功。

    1-2 開登入失敗封鎖

    在 configuration.yaml 的最外層(頂格)加上:
    1. http:
    2.   ip_ban_enabled: true
    3.   login_attempts_threshold: 5
    複製代碼

    重啟 HA。之後同一個 IP 連錯五次密碼就會被寫進 `/config/ip_bans.yaml` 並永久擋掉。

    你會看到什麼:故意用錯的密碼登入六次(用無痕視窗,不然你自己也會被鎖),第六次之後頁面連載入都載不出來。到檔案編輯器看 `/config/ip_bans.yaml`,裡面會有一行:
    1. 192.168.1.50:
    2.   banned_at: "2026-09-25T10:14:02"
    複製代碼

    解除封鎖就是把那幾行刪掉再重啟 HA。

    1-3 確認你家是不是 CGNAT —— 這一步決定你有沒有得選

    CGNAT 是電信業者把好幾戶人家共用一個對外 IP 的做法。在 CGNAT 底下,連接埠轉發完全無效,因為那個對外 IP 不是你一個人的。

    判斷方法(兩個數字比一比):


    • 數字 A:登入你家路由器,找「WAN IP」或「外部 IP」
    • 數字 B:用家裡的電腦開瀏覽器搜尋「what is my ip」,看網站告訴你的那個


    你會看到什麼


    • A 和 B 一模一樣 → 你有真實對外 IP,四條路都可以走
    • A 是 `100.64.x.x` 到 `100.127.x.x` 之間 → 這是 CGNAT 的保留網段,確定是 CGNAT
    • A 是 `10.x.x.x` 或 `172.16~31.x.x` 而 B 是別的 → 也是被上游 NAT 了


    是 CGNAT 的話,路線二(自架 WireGuard)直接排除,走路線一、三、四。

    ---

    路線一:Tailscale —— 最少步驟,而且 CGNAT 也能用

    Tailscale 是一套「幫你把 WireGuard 的麻煩部分自動處理掉」的服務。裝置之間直接打洞連線,連不通時才幫你中繼。家裡的路由器一個埠都不用開。

    ⚠ 第一個坑:HA 裡有兩個東西都叫 Tailscale


    • Tailscale 整合(Integration) —— 這個是唯讀的,只會顯示你 tailnet 裡有哪些裝置。裝了它你還是連不回家。
    • Tailscale App(附加元件 / Add-on) —— 這個才是你要的


    很多人裝錯這個,然後在「為什麼還是連不上」上面卡半天。

    A-1 安裝附加元件

    設定 → 附加元件 → 附加元件商店,搜尋 Tailscale,安裝後按啟動。

    (這條路需要 Home Assistant OS 或 Supervised 安裝。Container / Core 安裝的話是把 Tailscale 裝在宿主機上,指令是 `curl -fsSL https://tailscale.com/install.sh | sh`,後面步驟一樣。)

    A-2 登入

    切到附加元件的 日誌 分頁,裡面會出現一行網址:
    1. To authenticate, visit:
    2.     https://login.tailscale.com/a/xxxxxxxxxxxx
    複製代碼

    用電腦開那個網址、用 Google 或 GitHub 帳號登入。

    你會看到什麼:日誌接著出現 `Success.` 以及一個 `100.x.x.x` 開頭的位址。那是這台 HA 在 tailnet 裡的位址。

    A-3 手機也裝上

    手機安裝 Tailscale App,用同一個帳號登入。

    A-4 先用最笨的方法驗證一次

    手機關掉 Wi-Fi,改用行動網路,確定 Tailscale App 是連線狀態,然後在瀏覽器打:
    1. http://100.x.x.x:8123
    複製代碼

    (換成 A-2 看到的那個位址。)

    你會看到什麼:HA 的登入畫面。


    • 看得到 → 基本連線成功,往下走
    • 一直轉圈 → 手機的 Tailscale 沒連上,或兩邊不在同一個帳號


    ⚠ 一定要關 Wi-Fi 測。開著家裡 Wi-Fi 測到的結果是「在同一個區網裡當然連得到」,跟遠端存取一點關係都沒有。

    A-5 開 MagicDNS 與 HTTPS 憑證

    `100.x.x.x` 能用,但很醜,而且 HTTPS 是必要的(自 HA 2023.5 起,瀏覽器要用麥克風做語音助理,一定要有效的 HTTPS)。

    到 login.tailscale.com → DNS 頁面:


    • 先設一個 tailnet 名稱(如果還沒設)
    • 確認 MagicDNS 是開的
    • 往下捲到 HTTPS Certificates,按 Enable HTTPS


    這一步是前提 —— 沒開的話下一步的 Serve 一定失敗。

    A-6 讓 HA 信任反向代理

    HA 預設會擋掉來自反向代理的請求,而 Tailscale Serve 就是一個反向代理。不做這一步的話,下一步會得到「400: Bad Request」。

    設定 → 系統 → 網路 → HTTP 伺服器,展開 反向代理:


    • 打開 Trust X-Forwarded-For
    • 在信任的代理清單加入 127.0.0.1
    • 儲存(介面會重新載入一次,這是正常的)


    A-7 開啟 Serve(不要開 Funnel)

    回到 Tailscale 附加元件的設定分頁,找到分享 Home Assistant 的選項,選 Serve。

    ⚠ Serve 和 Funnel 的差別是「誰看得到」,選錯等於把 HA 公開到整個網際網路:


    • Serve = 只有你自己 tailnet 裡的裝置看得到。你要的是這個
    • Funnel = 對整個網際網路公開。只有在「某台裝置完全不能安裝 Tailscale、而且你確實要公開」時才用


    你會看到什麼

    重新用行動網路開:
    1. https://homeassistant.<你的tailnet名稱>.ts.net
    複製代碼


    • 網址列出現鎖頭、沒有憑證警告 → 完成了
    • 回 400: Bad Request → A-6 沒做,或者 127.0.0.1 沒加進信任清單
    • 憑證錯誤 → A-5 的 Enable HTTPS 沒按


    A-8 設定手機 App

    HA 手機 App → 設定 → 伺服器 → 網址,把「外部網址」設成上面那個 ts.net 網址,內部網址維持 `http://192.168.x.x:8123`。

    Tailscale 的優缺點


    • 優點:不開任何埠、CGNAT 也能用、免費方案可到 100 台裝置、連回家之後 NAS 和其他內網裝置也一起能用
    • 缺點:每一台要連的裝置都得裝 Tailscale 並登入。給爸媽用會很痛苦
    • 一個明確的限制:Tailscale 給的網址不是公開的,所以 Google Home 和 Alexa 的整合不能用這條路(那兩個需要一個公開可存取的網址)


    ---

    路線二:自架 WireGuard —— 完全自己掌握,但需要真實對外 IP

    跟路線一比,這條沒有任何第三方服務參與。代價是要自己在路由器上開一個埠。

    ⚠ CGNAT 底下這條走不通(見步驟 1-3)。

    B-1 安裝附加元件

    設定 → 附加元件 → 附加元件商店 → 右上角三個點 → 儲存庫,加入:
    1. https://github.com/hassio-addons/repository
    複製代碼

    然後搜尋 WireGuard 安裝。

    ⚠ 這個附加元件是在 HA 上跑一台 WireGuard 伺服器,你的手機是連進來的用戶端。它不支援反過來(讓 HA 當用戶端去加入你已經有的 WireGuard 網路,例如架在路由器或 VPS 上的那種)。你已經有一台 WireGuard 伺服器的話,這個附加元件不是你要的東西。

    B-2 準備一個能連回家的名字

    家用寬頻的 IP 會變,所以需要一個動態 DNS 名稱。多數路由器內建 DDNS 功能(華碩的 `xxx.asuscomm.com`、群暉的 `xxx.synology.me`),或者用 No-IP、DuckDNS 這類免費服務。

    你會看到什麼:在家裡以外的網路(或用手機行動網路)`ping 你的名字.duckdns.org`,回來的 IP 要跟步驟 1-3 的數字 B 一樣。

    B-3 設定附加元件

    切到附加元件的設定分頁,用 YAML 模式貼入:

    以下還有約 61% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-25 04:14 , Processed in 0.140553 second(s), 24 queries .

    快速回覆 返回頂部 返回列表