如何永久将WSL对应的Windows网络适配器设置为DHCP?
如何永久将WSL对应的Windows网络适配器设置为DHCP?
我太懂这种烦恼了!WSL2的虚拟网卡确实经常在VPN断开、网络波动后偷偷把DHCP改回静态IP,折腾起来挺闹心的。下面给你几个亲测有效的永久解决办法,一步步来就行:
方法一:用管理员PowerShell强制锁定DHCP配置
图形界面改的设置容易被WSL或系统重置,用命令行操作更靠谱:
- 先右键点击开始菜单,选择Windows PowerShell(管理员)(一定要管理员权限!)
- 运行命令
Get-NetAdapter,找到名称带vEthernet (WSL)的适配器(不同版本名字可能略有差异,比如vEthernet (WSL (Ubuntu))),记好这个名字 - 执行以下命令设置IPv4为DHCP:
Set-NetIPInterface -InterfaceAlias "vEthernet (WSL)" -Dhcp Enabled - 再设置IPv6为DHCP:
Set-NetIPInterface -InterfaceAlias "vEthernet (WSL)" -AddressFamily IPv6 -Dhcp Enabled - 最后可以用
Get-NetIPInterface -InterfaceAlias "vEthernet (WSL)"确认一下,看Dhcp列是不是显示Enabled
方法二:创建开机自动执行脚本,防止配置被重置
如果还是会偶尔变回静态IP,那就让系统开机时自动帮你重置DHCP:
- 打开记事本,粘贴以下内容(记得把适配器名称改成你刚才查到的):
# 强制设置WSL虚拟网卡为DHCP Set-NetIPInterface -InterfaceAlias "vEthernet (WSL)" -Dhcp Enabled Set-NetIPInterface -InterfaceAlias "vEthernet (WSL)" -AddressFamily IPv6 -Dhcp Enabled - 把文件保存为
Set-WSL-DHCP.ps1,比如放在C:\根目录下 - 打开「任务计划程序」,创建一个基本任务:
- 触发器选择「当计算机启动时」
- 操作选择「启动程序」,程序或脚本填
powershell.exe,添加参数填-ExecutionPolicy Bypass -File "C:\Set-WSL-DHCP.ps1" - 一定要勾选「使用最高权限运行」,否则脚本可能没权限修改网卡配置
方法三:切换WSL2的网络模式(推荐给新版本WSL)
如果你的WSL是较新版本,可以试试切换到mirrored网络模式,这种模式下WSL会直接复用Windows的网络栈,网卡配置更稳定:
- 打开你的用户目录(比如
C:\Users\你的用户名),新建一个名为.wslconfig的文件(注意文件名前面有个点) - 打开文件,粘贴以下内容:
[wsl2] networkingMode=mirrored - 保存后,打开PowerShell运行
wsl --shutdown关闭所有WSL实例,再重新启动WSL就生效了
小提示
如果以上方法还是偶尔失效,建议检查你的VPN客户端设置——有些VPN会强制修改所有网卡的IP配置,可能需要在VPN的「排除列表」里添加WSL的虚拟适配器,避免它被VPN篡改。
备注:内容来源于stack exchange,提问作者cozzymotto




