分享程式代碼相關筆記
目前文章總數:234 篇
最後更新:2026年 05月 30日
延續這篇文章:Hyper-V 虛擬機器 - 設定了固定 IP
但經過一段時間後,突然出現虛擬機器無法訪問宿主機容器的問題
Hyper-V 安裝的 Ubuntu 上的 n8n 想要訪問宿主機的容器,宿主機 IP 已確定為 192.168.68.59,但執行時出現以下錯誤
Problem in node ‘HTTP Request 生成圖片‘
The host is unreachable, perhaps the server is offline
Windows 本機可以正常訪問此 Http Request API
雖然之前設定固定 IP,但如果之前是依賴 172.x.x.x(Default Switch)的連線,那麼就會有這種狀況發生
| 對應現象 | Default Switch 的網段在每次電腦重啟、或是從睡眠喚醒後,都有可能自動更換網段( Windows Update 也有可能導致)。 |
| 對應結果 | 因此 n8n 節點裡寫死的 IP 變成了另一個虛擬機的 IP,或原本的 Gateway IP 已失效 |
開啟 PowerShell (管理者權限) -> 輸入以下:
其中 192.168.100.10 是我當前 Hyper-v 配置的靜態 IP 位址,開放指定的 Port 8188 直接通行
New-NetFirewallRule -DisplayName "n8n_to_ComfyUI_Internal" -Direction Inbound -LocalPort 8188 -Protocol TCP -Action Allow -RemoteAddress 192.168.100.10
然後 PowerShell (管理者權限) -> 再輸入以下:
將虛擬網卡從「公用 (Public)」改為「私人 (Private)」 (開放 windows 訪問)
Get-NetConnectionProfile -InterfaceAlias "vEthernet (內部虛擬交換器)" | Set-NetConnectionProfile -NetworkCategory Private
現在 Hyper-V Ubuntu 主機訪問是透過 192.168.100.1 (Windows 宿主機),來進行訪問
curl -I http://192.168.100.1:8188/prompt
可以看到出現 HTTP/1.1 200 OK ,可以從 Ubuntu Hyper-V 訪問 Windows 主機中的容器
未來仍有可能會失效,但我們已定位出失效的可能點,因此推估以下 3 點,未來若有異動也仍有方向排除相關問題
| 狀況點 | 描述 |
|---|---|
| 重新安裝 Docker Desktop | Windows Desktop Docker 更新重置其內部的網路轉發(vEthernet (WSL)) |
| 手動刪除了虛擬交換器 | Hyper-V 管理員裡刪除並重建了「內部虛擬交換器」,那張網卡的名稱可能會變,這時就需要重跑一次解決方案中的指令。 |
| 新的 Hyver-V 虛擬機 | 同上,仍要重跑一次解決方案中的指令 |