WSL 环境桥接与雷达通信配置笔记

作者: DWDROME

维护时间: 2025-03-22

参考文章:Windows子系统(WSL)通过桥接网络实现被外部局域网主机直接访问

WSL 环境桥接与雷达通信配置笔记

环境说明

  • Windows 11 专业版(启用 Hyper-V)
  • WSL2 Ubuntu 20.04
  • 物理网线(连接 Livox 雷达)
  • WSL 使用桥接方式访问物理网段,设置静态 IP 与雷达同网段

实现方法

思路就是将 WSL2 自建的虚拟 NAT 网络桥接到 Windows 主机网卡(以太网 2)上,再通过脚本为 WSL 配置静态 IP,从而实现与雷达设备通信。

1、开启 Hyper-V

桥接功能依赖 Hyper-V 组件,仅在 Windows 10/11 专业版中提供。开启方法如下:

  1. 打开控制面板 → 程序 → 启用或关闭 Windows 功能;
  2. 勾选 Hyper-V 相关项;
  3. 重启电脑生效。

2、桥接网络

WSL2 默认采用 NAT 网络,不利于局域网通信,需将其桥接到物理网卡(如以太网 2)。

操作步骤:

  1. 启动一次 wsl,确保 Hyper-V 为其创建虚拟交换机;
  2. 管理员身份打开 PowerShell,执行 Get-NetAdapter 查出网卡名称;
  3. 使用以下命令桥接网卡:
Set-VMSwitch "WSL (Hyper-V firewall)" -NetAdapterName "以太网 2"

3、手动修改 WSL 网络

进入 WSL,配置 IP 与路由,保持与雷达在同一网段:

ip addr del ...
ip addr add ...
ip route add ...
nano /etc/resolv.conf

若步骤繁琐,可参考下方自动脚本配置。

4、一键桥接脚本说明

为了简化配置,建议编脚本:

(1)WSL 网络配置脚本 set_eth0.sh

作用:在 WSL 内配置 eth0 的 IP、路由和 DNS。

内容如下(请自行填写):

#!/bin/bash
# 设置 eth0 的静态 IP 以连接 Livox 雷达new_ip=192.168.1.50
brd=192.168.1.255
gateway=192.168.1.1
nameserver=192.168.1.1
net_dev=eth0# 获取当前 IP
current_ip=$(ip addr show $net_dev | grep 'inet\b' | awk '{print $2}' | head -n 1)# 删除旧 IP(如果存在)
if [ -n "$current_ip" ]; thenecho "检测到当前 IP 为 $current_ip,正在删除..."echo "YourPassword" | sudo -S ip addr del "$current_ip" dev $net_dev
elseecho "未检测到已有 IP,跳过删除。"
fi# 添加新 IP 和网关
sudo ip addr add $new_ip/24 broadcast $brd dev $net_dev
sudo ip route add 0.0.0.0/0 via $gateway dev $net_dev# 设置 DNS
sudo sed -i "\$c nameserver $nameserver" /etc/resolv.conf

(2)PowerShell 桥接脚本 wsl-bridge-on.ps1

作用:以管理员权限运行,桥接虚拟交换机,并调用 WSL 中的配置脚本。

内容如下(请自行填写):

# wsl-bridge-on.ps1
# 自动桥接 WSL 到物理网卡(以太网 2)并配置 WSL 静态 IP
$currentWi = [Security.Principal.WindowsIdentity]::GetCurrent()
$currentWp = [Security.Principal.WindowsPrincipal]$currentWi
if (-not $currentWp.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {$boundPara = ($MyInvocation.BoundParameters.Keys | foreach { '-{0} {1}' -f $_, $MyInvocation.BoundParameters[$_] }) -join ' '$currentFile = $MyInvocation.MyCommand.Definition$fullPara = $boundPara + ' ' + $args -join ' 'Start-Process "$psHome\pwsh.exe" -ArgumentList "$currentFile $fullPara" -verb runasreturn
}Write-Host "`n正在检测并准备 WSL 网络..."
wsl --cd ~ -e ls$switchName = "WSL (Hyper-V firewall)"
$netAdapter = "以太网 2"if ((Get-VMSwitch).Name -contains $switchName) {Write-Host "`n检测到交换机已存在,跳过创建。"
} else {Write-Host "`n未检测到交换机,正在创建..."New-VMSwitch -Name $switchName -NetAdapterName $netAdapter -AllowManagementOS $true
}Write-Host "`n执行桥接配置..."
Set-VMSwitch $switchName -NetAdapterName $netAdapterWrite-Host "`n正在配置 WSL 静态 IP..."
wsl bash -c "/home/dw/set_eth0.sh"Write-Host "`ndone"
pause

(3)PowerShell 桥接脚本 wsl-bridge-off.ps1

取消桥接脚本,同时重启wsl

# 检查并以管理员身份运行 PS 并带上参数
$currentWi = [Security.Principal.WindowsIdentity]::GetCurrent()
$currentWp = [Security.Principal.WindowsPrincipal]$currentWi
if (-not $currentWp.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {$boundPara = ($MyInvocation.BoundParameters.Keys | foreach { '-{0} {1}' -f $_, $MyInvocation.BoundParameters[$_] }) -join ' '$currentFile = $MyInvocation.MyCommand.Definition$fullPara = $boundPara + ' ' + $args -join ' 'Start-Process "$psHome\pwsh.exe" -ArgumentList "$currentFile $fullPara" -verb runasreturn
}echo "正在解除 WSL 桥接..."
Set-VMSwitch "WSL (Hyper-V firewall)" -SwitchType Internalecho "正在重启 WSL..."
wsl --shutdown
wsl --cd ~ -e lsecho "`ndone"
pause

6、启用 PowerShell 脚本执行权限

默认 Windows 禁止执行 .ps1 脚本,需手动启用:

管理员 PowerShell 中执行:

Set-ExecutionPolicy RemoteSigned

输入 Y 确认。

7、使用方法

  • 执行桥接:双击 wsl-bridge-on.ps1,等待执行完成;
  • 执行取消桥接:双击 wsl-bridge-off.ps1

如需修改打开方式:右键 .ps1 → 选择 pwsh.exe 打开,并设为默认。

8、补充说明

  • 使用过程中若出现多个 vEthernet 接口,建议删除无效网卡并重建交换机;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ToDesk云电脑各类鼠标有什么区别?虚拟/3D/游戏鼠标等各有利

不知道各位在使用ToDesk云电脑的时候是否是有注意到,这其中的鼠标竟有多种名称、多种模式可以选,比如锁定鼠标、3D鼠标、游戏鼠标这几项。 那么这些不同名称的鼠标都代表什么意思呐,又应该怎么选择、怎么用呐?本篇内容小编就为大…

DeepBI:重构流量逻辑,助力亚马逊广告实现高效流量增长

在日益激烈的跨境电商竞争环境中,广告投放早已从“粗放撒网”走向“精细化运营”。尤其是在亚马逊这样一个成熟且竞争白热化的平台,如何在广告预算有限的前提下实现高效曝光、精准触达、稳定转化,成为众多卖家和运营团队面临的核心挑战。 De…

java项目之基于ssm的毕业论文管理系统(源码+文档)

项目简介 毕业论文管理系统实现了以下功能: 本毕业论文管理系统主要实现的功能模块包括学生模块、导师模块和管理员模块三大部分,具体功能分析如下: (1)导师功能模块:导师注册登录后主要功能模块包括个人…

【自学笔记】Linux基础知识点总览-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Linux 基础知识点总览目录Linux 简介文件和目录结构常用命令文件操作目录操作权限管理文本处理 Shell 脚本基础进程管理用户和组管理网络配置 总结 Linux 基础知识点…

【PCB工艺】晶体管的发展历史

晶体管被认为是20世纪最伟大的发明之一,因为没有晶体管就不会有现代电脑、手机或平板​​,你也无法阅读到这里的内容,因为不存在网络。 ——本文纯粹出于对过往奋斗在这个领域中科学家的缅怀。科学家有太多宝贵的思想和经验值得我们认真总结和…

第23章:Kubernetes网络模型深度剖析

第23章:Kubernetes网络模型深度剖析 作者:DogDog_Shuai 阅读时间:约25分钟 难度:高级 目录 1. 引言2. Kubernetes网络模型基础3. 四种网络通信模式4. CNI架构深度解析5. 网络实现原理

HTML应用指南:利用GET请求获取猫眼电影日票房信息——以哪吒2为例

2025年春节档期,国产动画电影《哪吒之魔童闹海》(以下简称《哪吒2》)以颠覆性的叙事风格与工业化制作水准震撼登场,不仅刷新了中国动画电影的票房纪录,更成为全球影史现象级作品。影片凭借春节档期的爆发式开局、持续5…

Model Context Protocol:下一代AI系统集成范式革命

在2023年全球AI工程化报告中,开发者面临的核心痛点排名前三的分别是:模型与业务系统集成复杂度(58%)、上下文管理碎片化(42%)、工具调用标准化缺失(37%)。传统API集成模式在对接大语言模型时暴露明显短板:RESTful接口无法承载动态上下文,GraphQL缺乏工具编排能力,gR…

Java 锁机制全面解析

在 Java 并发编程中,锁(Lock)是保证线程安全的关键工具。本文将全面介绍 Java 的锁机制,包括 synchronized 关键字、Lock 接口及其实现、读写锁、乐观锁与悲观锁等,帮助新手理解 Java 并发控制。 1. Java 中的锁概述 …

JavaScript 中 “new Map()”的使用

new Map() 是 JavaScript 中用于创建 Map 对象 的构造函数。Map 是一种键值对集合,类似于普通对象(Object),但有以下区别: 1. Map 的特点 1.1 键的类型 Map:键可以是任意类型(包括对象、函数、…

Rust语言的集成测试

Rust语言的集成测试 引言 随着软件开发的不断发展,测试已成为一个不可或缺的环节。特别是在系统复杂度日益增加的今天,确保代码质量和稳定性变得尤为重要。Rust作为一门强调安全性和性能的编程语言,其测试框架提供了丰富的工具来帮助开发者…

手写简单的Spring基于注解配置的程序

需求说明: 自己写一个简单的 Spring 容器, 通过读取类的注解(Component ControllerService Reponsitory) ,将对象注入到 IOC 容器,自己使用 IOAnnotaion反射集合 技术实现 思路分析: 一、新建一个包component并在包下创建bean类 …

WSL 导入完整系统包教程

作者: DWDROME 配置环境: OS: Ubuntu 20.04.6 LTS on Windows 11 x86_64Kernel: 5.15.167.4-microsoft-standard-WSL2ros-noetic 🧭WSL 导入完整系统包教程 ✅ 一、准备导出文件 假设你已有一个 .tar 的完整系统包(如从 WSL 或 L…

使用selenium来获取数据集

使用selenium来获取数据集 1、下载最新的chrome浏览器与chromedriver.exe 查看chrome的版本,打开谷歌浏览器,点击右上角的三个点,然后点击【帮助】, 点击【关于Google Chrome】 然后去下载同样为134版本号的chromedriver.exe, 网址:https://googlechromelabs.github.…

(二)VMware:VMware虚拟机安装CentOS教程

目录 1、准备CentOS 7镜像1.1、官网镜像下载1.2、清华大学开源镜像下载​1.3、阿里云开源镜像下载 2、使用 VMware安装CentOS 72.1、创建虚拟机2.2、选择自定义安装2.3、硬件兼容性,保持默认2.4、选择下载的ISO镜像2.5、设置虚拟机名称以及存放磁盘位置2.6、按照需求…

【Agent】Dify Docker 安装问题 INTERNAL SERVER ERROR

总结:建议大家选择稳定版本的分支,直接拉取 master 分支,可能出现一下后面更新代码导致缺失一些环境内容。 启动报错 一直停留在 INSTALL 界面 我是通过 Docker 进行安装的,由于项目开发者不严谨导致,遇到一个奇怪的…

MySQL -- 复合查询

数据库的查询是数据库使用中比较重要的环节,前面的基础查询比较简单,不做介绍,可自行查阅。本文主要介绍复合查询,并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表,可以自行下载,也可以自己创建…

flutter 开发web端的性能优化

参考资料 Flutter for Web 首次首屏优化 ——JS 分片优化_main.dart.js-CSDN博客文章浏览阅读1.4k次。本文介绍了如何通过延迟加载组件和js分片优化Flutter for Web应用的加载速度。在实践中,通过按需加载减少js文件大小,使用并行加载提升加载效率。通过…

编译安装redis,systemtcl配置redis自启动,系统并发调优

编译安装redis,systemtcl配置redis自启动,系统并发调优 1、编译安装redis wget https://download.redis.io/releases/redis-7.4.2.tar.gz tar -zxf redis-7.4.2.tar.gz cd redis-7.4.2/ make make install/usr/local/bin/redis-server -v2、systemtcl配…

firefly经典蓝牙和QProcess、QFileSystemWatcher记录

QProcess 默认不会启动一个 shell 来解析命令,而是直接调用操作系统的系统调用来启动外部程序。也就是通过fork一个子线程或者exec一个子进程来执行命令。 QProcess的参数模式 QProcess 需要明确指定命令的可执行文件路径或参数列表。 如果命令是一个可执行文件的路径…