WSL2 中配置桥接模式、虚拟交换机及固定 IP

news/2024/10/4 15:34:28/

WSL2 中配置桥接模式、虚拟交换机及固定 IP

        • 一、创建虚拟交换机
          • 1.1 使用 Hyper-V 管理器创建虚拟交换机
          • 1.2 使用 PowerShell 创建虚拟交换机
        • 二、更新 WSL 配置
        • 三、设置 WSL2 中的静态 IP、网关和 DNS
          • 3.1 编辑网络配置文件
          • 3.2 应用网络配置
          • 3.3 测试网络连接
        • 四、重启 WSL

在使用 WSL2 时,某些场景下我们需要为其设置固定的 IP 地址和 DNS。同时,如果你希望 WSL2 能够与主机共享相同的物理网络,并获取独立的 IP 地址,则可以通过桥接模式来实现。本文将介绍如何为 WSL2 设置桥接模式、固定 IP 以及 DNS 配置。

一、创建虚拟交换机

报错表明指定的虚拟交换机 VmSwitch='WSL' 没有被找到,导致 WSL 无法配置桥接模式的网络。要解决这个问题,首先需要在 Windows 中创建一个虚拟交换机。

你可以选择使用 Hyper-V 管理器或 PowerShell 来创建虚拟交换机。

1.1 使用 Hyper-V 管理器创建虚拟交换机
  1. 打开 “Hyper-V 管理器”(在开始菜单中搜索 Hyper-V Manager)。
  2. 在右侧选择 “虚拟交换机管理器”(Virtual Switch Manager)。
  3. 选择 “外部”(External),并点击 “创建虚拟交换机”。
  4. 命名该交换机为 WSL 或其他名称,并选择正确的网络适配器(通常是你的物理网卡)。
  5. 点击 “应用” 并 “确定”。
1.2 使用 PowerShell 创建虚拟交换机

如果你更喜欢使用命令行操作,可以通过 PowerShell 创建虚拟交换机:

New-VMSwitch -Name "WSL" -NetAdapterName "<您的物理网卡名称>" -AllowManagementOS $true

<您的物理网卡名称> 替换为你实际使用的网卡名称。可以通过以下命令查看系统中的网卡信息:

Get-NetAdapter

注意: -AllowManagementOS $true 参数表示主机可以继续使用这张网卡上网,不会完全影响主机的联网功能。

二、更新 WSL 配置

创建虚拟交换机后,需要将 WSL 配置为使用该交换机。可以通过编辑 wslconfig 文件实现。

  1. 打开 %UserProfile%\.wslconfig 文件(如果没有这个文件,手动创建一个)。
  2. 添加以下配置:
[wsl2]
networkingMode=bridged
vmSwitch=WSL  # 确保名称和创建的虚拟交换机一致
三、设置 WSL2 中的静态 IP、网关和 DNS

接下来,我们需要为 WSL2 中的 Ubuntu 配置静态 IP 地址。

3.1 编辑网络配置文件

使用 netplan 工具来管理网络配置,编辑 /etc/netplan/00-installer-config.yaml 文件:

sudo nano /etc/netplan/00-installer-config.yaml

添加以下内容来设置固定 IP、网关和 DNS:

network:version: 2ethernets:eth0:addresses:- 192.168.1.100/24      # 设置固定 IP 地址和子网掩码gateway4: 192.168.1.1      # 设置默认网关nameservers:addresses:- 8.8.8.8             # 设置 DNS,使用 Google 公共 DNS- 8.8.4.4dhcp4: false               # 禁用 DHCP
3.2 应用网络配置

编辑完成后,使用以下命令应用新配置:

sudo netplan apply
3.3 测试网络连接

完成配置后,可以使用 ping 命令测试网络连接:

ping 8.8.8.8        # 测试外网连接
ping www.google.com # 测试 DNS 是否正常工作
四、重启 WSL

配置完成后,为了使更改生效,可以重启 WSL:

wsl --shutdown

重新启动后,WSL2 将使用桥接模式并应用你设定的静态 IP 和 DNS。


http://www.ppmy.cn/news/1533425.html

相关文章

鸿蒙开发(NEXT/API 12)【硬件(外设扩展驱动开发)】驱动开发服务

场景介绍 [DriverExtensionAbility]是Driver类型的ExtensionAbility组件&#xff0c;提供驱动相关扩展框架能力。对于部分设备&#xff0c;支持插入外接的硬件模块来扩展设备能力&#xff0c; 此时可以以应用方式安装该硬件模块的驱动程序。通过DriverExtensionAbility可实现此…

笔记整理—linux进程部分(5)syslog调试信息记录

守护进程将fd0、1、2指向垃圾桶&#xff0c;无法正常查看其进程信息或调试信息。 void openlog(const char *ident, int option, int facility);openlog("a.out",LOG_PID|LOG_CONS,LOG_USER); option是个宏操作操作选项&#xff0c;其中常用的为LOG_CONS将信息打印到…

UE5: Content browser工具编写02

DebugHeader.h 中的全局变量&#xff0c;已经在一个cpp file中被include了&#xff0c;如果在另一个cpp file中再include它&#xff0c;就会有一些conflicts。先全部给加一个static Add static keyword to debug functionsWrap all the functions inside of a namespaceprint …

【设计模式-命令】

定义 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装为一个对象&#xff0c;从而使您能够使用不同的请求、排队请求或记录请求&#xff0c;并支持可撤销的操作。该模式通过将请求与其执行分离&#xff0c;使得请求者和接收者之间…

【MAUI】CommunityToolkit社区工具包介绍

一、为什么需要声明式开发 .NET的MVVM,始于WPF,很古典,它甚至可能是现代前端框架“声明式开发”的鼻祖。声明式开发,之所以出现,是因为命令式开发在UI层和代码层上无法解耦的问题。如下图所示: 1、命令式开发:后台代码需要调用UI层的控件(label.Text),如果更新UI层…

高精度(1)——高精度减法

题目描述 给定两个正整数&#xff08;不含前导 0&#xff09;&#xff0c;计算它们的差&#xff0c;计算结果可能为负数。 输入格式 共两行&#xff0c;每行包含一个整数。 输出格式 共一行&#xff0c;包含所求的差。 数据范围 1≤整数长度≤100000 输入样例 32 11 …

【2024】前端学习笔记11-网页布局-弹性布局flex

学习笔记 网页布局弹性布局&#xff1a;flex案例&#xff1a;flex布局案例 网页布局 在页面布局中&#xff0c;display属性用于设置一个元素的显示方式。它可以指定元素是作为块级元素、内联元素还是充当表格元素显示。 display的常见属性值&#xff1a; block&#xff1a;将…

解决$‘r‘ command not found或者文件夹显示’tvsf 33‘$‘r‘

问题现象: 某客户反馈在执行脚本的时候文件夹显示存在问题,如下图: 但是脚本文件中的内容并没有\r字符,如下图: 也有客户反馈如下: 问题分析: $\r’是回车符的转义表示。在Unix和Linux系统中,回车符是一个不可见的控制字符,它通常用于文本文件中的行结尾。以上…