IP 衝突導致網路斷斷續續、無法通訊。Windows 7/10/11 修改靜態 IP 步驟如下,並提供 PowerShell 自動化檢測衝突腳本。
# CMD
ipconfig
# PowerShell (更豐富)
Get-NetIPConfiguration -Detailed
Get-NetIPAddress -AddressFamily IPv4 | Format-Table InterfaceAlias, IPAddress, PrefixLength, DefaultGateway, DNSServer
# 需管理員權限執行
function Resolve-IPConflict {
$adapter = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' -and $_.PhysicalMediaType -ne 'Bluetooth' } | Select-Object -First 1
if (-not $adapter) { Write-Error "找不到啟用的網卡"; return }
$currentIP = (Get-NetIPAddress -InterfaceIndex $adapter.ifIndex -AddressFamily IPv4 -PrefixOrigin Dhcp).IPAddress
if (-not $currentIP) { Write-Host "目前非 DHCP 或無 IPv4"; return }
# 發送 Gratuitous ARP 偵測衝突 (Windows 內建機制通常已處理)
# 這裡示範 Ping 掃描同網段找重複 (僅示範,生產環境建議用 ARP 掃描工具)
$subnet = $currentIP.Split('.')[0..2] -join '.'
$conflicts = @()
1..254 | ForEach-Object -Parallel {
$ip = "$subnet.$_"
if ($ip -ne $currentIP) {
$result = Test-Connection -ComputerName $ip -Count 1 -Quiet -ErrorAction SilentlyContinue
if ($result) { $ip }
}
} -ThrottleLimit 50 | ForEach-Object { $conflicts += $_ }
if ($conflicts.Count -gt 0) {
Write-Warning "偵測到潛在 IP 衝突: $($conflicts -join ', ')"
# 這裡可加入自動切換新 IP 邏輯 (需 DHCP 保留或靜態規劃)
} else {
Write-Host "未偵測到 IP 衝突"
}
}
Resolve-IPConflict
| 場景 | 原因 | 對策 |
|---|---|---|
| 筆電帶回家/外出回辦公室 | 舊租約未釋放、家用路由器同網段 | ipconfig /release && ipconfig /renew、重啟網卡、重啟電腦 |
| 虛擬機/容器橋接模式 | VM/Container 直接佔用實體網段 IP | 改用 NAT/Host-only、或在 DHCP 保留 MAC 範圍 |
| 雙 DHCP 伺服器 | 路由器 + Server 同時啟用 DHCP、或兩台路由器 | 僅保留一台 DHCP、其他關閉/設定 Relay Agent |
| 靜態 IP 手動衝突 | 文檔缺失、人為疏失、設備出廠預設 IP 相同 | 建立 IPAM、標籤管理、上線前掃描驗證 |