在Windows 11安裝WLS
安裝WLS
開啟 PowerShell(以系統管理員身分)
wsl --install -d Ubuntu-24.04
安裝後會詢問要使用什麼帳密,可直接用目前登入windows用的帳密會比較好記
登入後是空空全新的Ubuntu Linux環境,你可以針對需求進行安裝及設定
關聯port
進入UbuntuLinux後,會看到IP是隨機的net (外面不能連入)
假設我在 Ubuntu 裝好 nginx port 用 80,我在本機輸入隨機IP 172.26.94.32,就能看到Nginx的畫面
我想要讓外面的連入,要這樣做
使用 PowerShell(以系統管理員身分)
netsh interface portproxy add v4tov4 listenport=81 listenaddress=0.0.0.0 connectport=80 connectaddress=172.26.94.32
確認建立規則
netsh interface portproxy show all
刪除
netsh interface portproxy delete v4tov4 listenport=81 listenaddress=0.0.0.0
開通 81 PORT 防火牆
netsh advfirewall firewall add rule name="WSL2 Port 81" dir=in action=allow protocol=TCP localport=81
檢查是否生效
netsh advfirewall firewall show rule name="Allow WSL2 Port 81"
移除WLS
使用 PowerShell(以系統管理員身分)
列出
wsl -l -v
NAME STATE VERSION
* Ubuntu-24.04 Running 2
docker-desktop Running 2
移除
wsl --unregister Ubuntu-24.04
其他
自動更新 WSL2 IP 的 PowerShell 腳本
# ================================
# WSL2 PortProxy 自動更新腳本
# ================================
# 設定對外端口 (Windows listen port) 與內部端口 (WSL2 connect port)
$ListenPort = 81
$ConnectPort = 80
# 抓取 WSL2 當前 IP
$wsl_ip = wsl hostname -I | ForEach-Object { $_.Trim() } | Select-Object -First 1
if (-not $wsl_ip) {
Write-Host "❌ 無法取得 WSL2 IP,請確認 WSL2 已啟動。" -ForegroundColor Red
exit
}
Write-Host "✅ 偵測到 WSL2 IP: $wsl_ip" -ForegroundColor Green
# 移除舊規則(避免重複)
netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 > $null 2>&1
# 新增新的 PortProxy 規則
netsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 connectport=$ConnectPort connectaddress=$wsl_ip
# 確保防火牆允許該 Port
netsh advfirewall firewall add rule name="WSL2 Port $ListenPort" dir=in action=allow protocol=TCP localport=$ListenPort > $null 2>&1
Write-Host "✅ PortProxy 已更新: 0.0.0.0:$ListenPort → $wsl_ip:$ConnectPort" -ForegroundColor Cyan
執行
powershell -ExecutionPolicy Bypass -File C:\Users\你的帳號\update-wsl-port.ps1
開機自動執行
開啟 工作排程器 (taskschd.msc)
建立基本工作 → 觸發器選「當登入時」
動作選「啟動程式」,程式輸入:
powershell
參數輸入:
-ExecutionPolicy Bypass -File C:\Users\你的帳號\update-wsl-port.ps1
✅ 這樣你就不用擔心 WSL2 IP 每次重開會變,永遠能透過 http://192.168.0.168:81/ 存取。