WSL2使用桥接网络,并指定IP
前言
微软终于解决了宇宙级难题了,一直以来的WSL2每次启动IP都是动态分配的,并且是NAT的网络。当然网上对此也有一些解决方案,编写脚本在启动时修改,但是太麻烦了,这次很完美的解决了这个难题。
检查
wsl --version # 版本>1.0即可
如果出错,请安装最新版本
配置文件
- .wslconfig
用于在 WSL 2 上运行的所有已安装分发版 全局 配置设置。 - wsl.conf
为 WSL 1 或 WSL 2 上运行的 Linux 发行版配置 每个分发 版的设置。
这里详细配置介绍请移步 高级设置配置
配置WSL2使用外部网络
- 使用Hyper-V创建外部网络(其他方式创建也行)
# 查看网络交换机名称 Get-VMSwitch -SwitchType External
- 配置 .wslconfig
存储在目录中 %UserProfile%,或者 PowerShell 中使用 cd ~ 访问主目录
[wsl2] networkingMode=bridged vmSwitch=bridge # 上图中的Name值 ipv6=true
重启 WSL2
wsl --shutdown wsl ip a
可以看到eth0的网络是桥接网络了
设置特定静态IP
修改 .wslconfig
[wsl2] networkingMode=bridged vmSwitch=WSL_external dhcp=true # 动态分配 此处若设置为false, eth0只有一个IP地址,会导致上外网失败 ipv6=true
增加制定IP vim /usr/lib/systemd/network/wsl_external.network
[Match] Name=eth0 [Network] Description=bridge DHCP=false Address=192.168.1.10/24 # 自行修改 Gateway=192.168.0.1 # 自行修改
重启WSL2 (wsl --shutdown)
ip addr
你会发现eth0已经有自定义的网络了
修改DNS禁止自动生成
添加 /etc/wsl.conf
加入以下内容
[boot] systemd=true [network] generateResolvConf = false
先删除再创建,因为resolv.conf是软链接创建的
rm -f /etc/resolv.conf echo "nameserver 223.5.5.5" > /etc/resolv.conf
重启WSL2 (wsl --shutdown)
而且还启用了systemd
(systemctl 命令回来了)
systemctl list-unit-files --type=service systemctl restart systemd-networkd systemctl enable systemd-networkd systemctl restart systemd-resolved.service systemctl enable systemd-resolved.service
常用配置
.wslconfig
[wsl2] # Bridged networking networkingMode=bridged vmSwitch=bridge dhcp=false ipv6=true # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB memory=4GB # Sets the VM to use two virtual processors processors=2 # Turn on/off default connection to bind WSL 2 localhost to Windows localhost ; default is true localhostforwarding=true # Turns on/off output console showing contents of dmesg when opening a WSL 2 distro for debugging ; default is false debugConsole=false # Turns on/off running GUI apps ; default is true guiApplications=true
wsl.conf
# Automatically mount Windows drive when the distribution is launched [automount] # Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab. # enabled = true # Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. # root = / # DrvFs-specific options can be specified. options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off" # Sets the `/etc/fstab` file to be processed when a WSL distribution is launched. # mountFsTab = true # Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1). [network] hostname = DemoHost generateHosts = false generateResolvConf = false # Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables. [interop] enabled = false appendWindowsPath = false # Set the user when launching a distribution with WSL. [user] default = DemoUser # Set a command to run when a new WSL instance launches. This example starts the Docker container service. [boot] command = service docker start
https://learn.microsoft.com/en-us/windows/wsl/wsl-config
https://github.com/luxzg/WSL2-fixes
https://github.com/luxzg/WSL2-fixes/blob/master/networkingMode%3Dbridged.md
本文来自博客园,作者:流年灬似氺,转载请注明原文链接:https://www.cnblogs.com/lic0914/p/17003251.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~