随机
Enter 搜索 ↑↓ 切换 Esc 清空

wsl_network_fix

命令

WSL 网络故障修复命令

wsl_network_fix

WSL 网络故障修复命令

补充说明

wsl_network_fix 提供一组用于诊断和修复 WSL2 网络问题的命令集合,涵盖 DNS 解析失败、代理配置错误、网络桥接异常、防火墙阻断等常见场景。

诊断命令

# 检查 WSL 网络状态
wsl --status

# 查看 WSL 网络配置
wsl -d <发行版> -- ip addr show
wsl -d <发行版> -- ip route show

# 检查 DNS 配置
wsl -d <发行版> -- cat /etc/resolv.conf

# 测试网络连通性
wsl -d <发行版> -- ping -c 4 8.8.8.8
wsl -d <发行版> -- curl -I https://www.google.com

# 检查 Windows 防火墙
Get-NetFirewallRule | Where-Object DisplayName -like "*WSL*"

DNS 修复

# 方法一:重启 WSL 重新生成 resolv.conf
wsl --shutdown
wsl

# 方法二:手动配置 DNS
wsl -d <发行版> -u root -- bash -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf"
wsl -d <发行版> -u root -- bash -c "echo 'nameserver 114.114.114.114' >> /etc/resolv.conf"

# 方法三:固定 DNS 配置(防止重启被重置)
wsl -d <发行版> -u root -- bash -c "cat > /etc/wsl.conf << 'EOF'
[network]
generateResolvConf = false
EOF"
wsl --shutdown
wsl

代理修复

# 查看代理配置
wsl -d <发行版> -- env | grep -i proxy

# 清除代理
wsl -d <发行版> -- unset http_proxy https_proxy all_proxy

# 自动获取宿主机 IP 并设置代理
wsl -d <发行版> -- bash -c 'host_ip=$(cat /etc/resolv.conf | grep nameserver | awk "{print \$2}"); export http_proxy="http://$host_ip:7890"; export https_proxy="http://$host_ip:7890"; echo "代理已设置"'

网络桥接修复

# 重置 Winsock
netsh winsock reset

# 重置 WinHTTP 代理
netsh winhttp reset proxy

# 重置 WSL 虚拟交换机
wsl --shutdown
Get-VMSwitch | Where-Object Name -like "*WSL*" | Disable-VMSwitch -Force
# 重新启动 WSL 后自动重建虚拟交换机
wsl

防火墙配置

# 添加防火墙规则放行 WSL
New-NetFirewallRule -DisplayName "WSL Network" -Direction Inbound -Action Allow -LocalPort Any -RemoteAddress "172.16.0.0/12,192.168.0.0/16"

# 临时关闭防火墙(测试用)
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
# 测试后重新开启
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

一键重置

# 完全重置 WSL 网络
wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
# 重启电脑后生效
shutdown /r /f /t 0

注意事项

相关命令