首頁

目前文章總數:234 篇

  

最後更新:2026年 05月 30日

0029. 解決 Hyper-V Default Switch 重啟後 IP 變動導致 n8n 連線失敗的解決方案

日期:2026年 05月 30日

標籤: Linux Ubuntu Docker Docker-Compose Container Stable Diffusion ComfyUI WSL 2

摘要:資訊筆記


應用所需:1. 已安裝 Windows 的 Docker Desktop (Use WSL 2 instead of Hyper-V)
     2. 已安裝 Hyper-V
     3. 顯示卡使用 RTX 5050 以上 (本篇 RTX 5070)
     4. Windows 10 以上作業系統
相關參考:0027. Hyper-V 虛擬機器 - 固定 IP 的 3 種方案 (解決 DHCP 伺服器重新分配一個隨機網段的 IP 問題)
解決問題:延續參考文章設定 Hyper-v 的固定 IP 後,虛擬機遇到無法訪問本機容器的錯誤,提供解決方案
基本介紹:本篇分為 3 大部分。
第一部分:問題描述
第二部分:解決方案
第三部分:驗證成果 & 補充失效狀況






第一部分:問題描述

Step 1:主機間架構關係

延續這篇文章:Hyper-V 虛擬機器 - 設定了固定 IP
但經過一段時間後,突然出現虛擬機器無法訪問宿主機容器的問題


Step 2:問題描述 - Ubuntu 主機無法訪問

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



第二部分:解決方案

Step 1:原因說明 - Hyper-V 與 主機 Default Switch 的 IP 變動

雖然之前設定固定 IP,但如果之前是依賴 172.x.x.x(Default Switch)的連線,那麼就會有這種狀況發生

對應現象 Default Switch 的網段在每次電腦重啟、或是從睡眠喚醒後,都有可能自動更換網段( Windows Update 也有可能導致)。
對應結果 因此 n8n 節點裡寫死的 IP 變成了另一個虛擬機的 IP,或原本的 Gateway IP 已失效



Step 2:解決方案 - 建立「內部虛擬交換器」並設定固定網段

開啟 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 



Step 3:解決方案 - 轉換網路設定檔為 - 私人Private

然後 PowerShell (管理者權限) -> 再輸入以下:
將虛擬網卡從「公用 (Public)」改為「私人 (Private)」 (開放 windows 訪問)

Get-NetConnectionProfile -InterfaceAlias "vEthernet (內部虛擬交換器)" | Set-NetConnectionProfile -NetworkCategory Private




第三部分:驗證成果 & 補充失效狀況

Step 1:驗證成果

現在 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 主機中的容器


Step 2:補充 - 未來失效的狀況

未來仍有可能會失效,但我們已定位出失效的可能點,因此推估以下 3 點,未來若有異動也仍有方向排除相關問題

狀況點 描述
重新安裝 Docker Desktop Windows Desktop Docker 更新重置其內部的網路轉發(vEthernet (WSL))
手動刪除了虛擬交換器 Hyper-V 管理員裡刪除並重建了「內部虛擬交換器」,那張網卡的名稱可能會變,這時就需要重跑一次解決方案中的指令。
新的 Hyver-V 虛擬機 同上,仍要重跑一次解決方案中的指令