在 Home Assistant OS 環境中,ha core info
和 ha network info
命令可能顯示不同的 IP 地址,這是因為 Home Assistant OS 使用 Docker 容器化執行,網路配置分為宿主機(虛擬機器)和容器內部兩部分,二者的 IP 地址可能不同。
core stop 將停止HAOS,但是docker還活著,所以虛擬機器還活著。可以用core start重啟HAOS
1. Docker 和 Interfaces 的關係
宿主機與 Docker 網路
-
宿主機網路(interfaces 部分):
ha network info
顯示的是宿主機的網路介面(如eth0
,wlan0
)以及對應的 IP 配置。- 這些介面直接與虛擬機器的網路硬體或橋接設定關聯。
-
Docker 網路:
- Home Assistant Core 和 Supervisor 執行在 Docker 容器中。
- Docker 會建立虛擬網路介面(如
docker0
、br-*
),這些介面為容器提供獨立的網路空間。 - 容器內部的服務透過這些介面訪問網路,其 IP 地址通常是虛擬網路內部的地址(例如
172.x.x.x
或192.168.x.x
)。
兩者的區別
- 宿主機的介面負責連線外部網路,並透過橋接或 NAT 將流量轉發到容器。
- Docker 網路介面為容器提供獨立的 IP 地址,用於容器間通訊。
2. 為什麼 core info
和 network info
IP 不一樣
ha core info
- 顯示的是 Home Assistant Core Docker 容器的網路資訊。
- 這個 IP 地址是容器在 Docker 網路中的地址(例如
172.x.x.x
)。 - 容器的 IP 地址由 Docker 網路自動分配,通常無法直接從外部訪問。
ha network info
- 顯示的是宿主機的網路介面配置。
- 包含虛擬機器的網路介面(如
eth0
、wlan0
)的 IP 地址。 - 這個 IP 地址通常是虛擬機器在物理網路中的地址。
3. 它們如何工作
-
流量流程:
- 外部裝置透過宿主機的 IP 地址訪問虛擬機器。
- 虛擬機器的網路流量透過宿主機介面(如
eth0
)進入 Docker 網路。 - Docker 將請求路由到對應容器(如 Home Assistant Core)。
-
訪問控制:
- 宿主機 IP 地址:外部網路訪問的入口,對映到 Docker 網路的服務埠。
- 容器 IP 地址:用於容器間通訊或從容器內部訪問外部網路。
4. 如何確認兩者的對映關係
檢視宿主機網路介面
執行以下命令檢視虛擬機器的網路介面和 IP 地址:
ha network info
觀察 interfaces
部分,特別是:
- 介面名稱(如
eth0
)。 ipv4
和ipv6
地址。gateway
(閘道器)。
檢視 Docker 網路
-
使用命令檢查 Docker 網路:
docker network ls
-
檢視 Home Assistant Core 的容器網路資訊:
docker inspect homeassistant
在輸出中查詢
Networks
部分,記錄容器的 IP 地址和網路名稱。 -
檢視 Docker 網橋地址(宿主機與 Docker 網路的橋接地址):
ifconfig docker0
或使用:
ip addr show docker0
5. 如何解決網路混亂的問題
場景 1:需要訪問容器 IP
- 解決方法:
- 透過宿主機的 IP 和埠訪問 Home Assistant 服務,而不是容器的 IP。
- 容器的 IP 通常是內部使用的,不適合直接暴露。
場景 2:容器無法訪問外部網路
-
檢查閘道器配置:
ha network info
確保閘道器地址正確。
-
檢查 DNS 配置: 確保容器能正確解析域名,修改
ha dns options
設定。
場景 3:需要統一 IP 地址
- 可以透過 Docker 的
host
網路模式,使容器與宿主機共享同一個 IP 地址:- 修改 Home Assistant 的 Docker 網路配置為
host
模式:docker run --net=host homeassistant/home-assistant:latest
- 注意:在 Home Assistant OS 環境下,修改網路模式較為複雜且可能不支援。
- 修改 Home Assistant 的 Docker 網路配置為
總結
core info
顯示的是 Docker 容器的內部網路資訊。network info
顯示的是宿主機的物理網路介面資訊。- 宿主機的 IP 是外部訪問 Home Assistant 的入口,容器 IP 通常只用於內部通訊。
根據你的需求,通常只需要確認宿主機的網路是否正常,使用其 IP 地址和埠訪問 Home Assistant 即可。如果仍有疑問,可以提供具體場景進一步分析。