省流:wsl2能否固定ip地址? - 豆腐干的回答 - 知乎

https://www.zhihu.com/question/387747506/answer/2764445888

割---------------------------

因为长期饱受wsl修改地址的困扰,我打算使用脚本来同步wsl在bashrc文件中配置的代理服务器ip

首先需要检查wsl网络适配器的IP地址

利用python库查看网络的接口识别名,即使用netifaces这个库,文档中的示例是这样的:

>>> netifaces.interfaces()
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']

这个应该是linux的例子,windows的例子如下

查阅资料这个应该是windows下的guid查看网络适配器(NIC)命令如下:

PS C:\Users\xxx> wmic nicconfig get description,settingid
Description SettingID
Microsoft Kernel Debug Network Adapter {0D90B06D-1F33-423F-96B8-E1E9EA1AA9F5}
Intel(R) Wireless-AC 9560 160MHz {8A87D1BD-4A73-4997-8DCE-AF20EFB339BA}
Realtek Gaming GbE Family Controller {D3BED80F-C4EA-478A-9745-CDFC9B501305}
Microsoft Wi-Fi Direct Virtual Adapter {01D4FDBF-44D2-4016-B680-37192F214412}
Bluetooth Device (Personal Area Network) {E5EAE072-39BE-4A11-9185-4642591946E3}
Microsoft Wi-Fi Direct Virtual Adapter {6C5EF811-C554-4FA0-A840-6B585A9FAF42}
WAN Miniport (SSTP) {CC2E3F02-C30D-4BE1-B65A-08A6DC064F54}
WAN Miniport (IKEv2) {0F8CC9D6-D04E-4B7E-9079-1716D4AA5D9B}
WAN Miniport (L2TP) {BC92FC3D-9F53-4943-AA76-007E4004D6BD}
WAN Miniport (PPTP) {986E0301-1547-4DFC-ADD0-DEB4B83A0D0F}
WAN Miniport (PPPOE) {5B4E25CF-B6AA-4215-931A-10E9DA32D0E2}
WAN Miniport (IP) {711AB5EA-0D23-45DB-9D7F-5A5A7C40E3FC}
WAN Miniport (IPv6) {4CC1C638-3932-4F77-A62C-CD3BDBD8759D}
WAN Miniport (Network Monitor) {6DEF30ED-E921-43C6-9D99-EEF327B133F4}
Hyper-V Virtual Switch Extension Adapter {D592FA15-C07D-48FA-9C2C-22B2DF230575}
RAS Async Adapter {0128B919-E037-4983-A41C-1490D5BB88C5}

经过对比发现这里的guid和前面python库获得的guid并不完全对应,这里找不到wsl的网络适配器

下面我们利用ipconfig可以查看wsl所在的地址,然后对比python中获取的网络适配器接口的地址发现,python库中返回的数组中的最后一个元素,就是wsl的guid

对比:ipconfig和下面python获取的ip

import netifaces

for line in netifaces.interfaces():
print(netifaces.ifaddresses(line))

现在找到了wsl对应的guid,目前的问题就是guid是否会改变,能否在重启之后(也就是通常的ip地址改变之后)通过guid获取网卡的ip地址

尝试关闭wsl在powershell中输入以下命令

wsl --shutdown

接着在powershell中重启wsl,发现此时wsl的网络适配器ip没有变化,所以需要电脑重新启动

重新启动后发现整个网络适配器重新创建了,所以guid发生了改变。。。。

除了使用guid,还可以把ipconfig的内容放到python中进行解析,获取ip并做自动修改

python读取管道输入用这个

sys.stdin.read()

用python处理掩码和ip的运算需要对文件进行读写,但是shell好像不支持逻辑与运算,如果能够在shell脚本里读取python的输出就好了

shell里读取python输出是可以的,具体代码已经写好了,在文章开头的知乎链接里

还可以优化,未完待续

补充:wsl报错不可访问对象时

powershell 管理员权限输入

netsh winsock reset

wsl 网络探究的更多相关文章

  1. 一次客户需求引发的K8S网络探究

    前言 在本次案例中,我们的中台技术工程师遇到了来自客户提出的打破k8s产品功能限制的特殊需求,面对这个极具挑战的任务,攻城狮最终是否克服了重重困难,帮助客户完美实现了需求?且看本期K8S技术案例分享! ...

  2. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

  3. Linux网络底层收发探究【转】

    转自:https://blog.csdn.net/davion_zhang/article/details/51536807 本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  4. ng-深度学习-课程笔记-12: 深度卷积网络的实例探究(Week2)

    1 实例探究( Cast Study ) 这一周,ng对几个关于计算机视觉的经典网络进行实例分析,LeNet-5,AlexNet,VGG,ResNet,Inception. 2 经典网络( Class ...

  5. 小白探究UE4网络系列(一)、UE4网络基础类分析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 捣鼓UE4也有两个多月了,从这儿开始,逐步探究UE4中经典的值复制,RPC两种同步方式.想要弄到其复制和调用的原 ...

  6. TKE 容器网络中的 ARP Overflow 问题探究及其解决之道

    作者朱瑜坚,腾讯云后台开发工程师,熟悉 CNI 容器网络相关技术,负责腾讯云 TKE 的容器网络的构建和相关网络组件的开发维护工作,作为主力开发实现了 TKE 下一代容器网络方案. 1. 问题背景 1 ...

  7. Docker0网络及原理探究

    个人观点:Docker网络通信在容器编排.集群部署中具有举足轻重的地位,(玩docker不懂docker0那就......玩不透哇)本篇分析Docker网络,并通过启动几个容器来探究Docker网络及 ...

  8. openstack-- neutron 二/三层网络实现探究

    引出 Neutron 是openstack 中提供网络虚拟化的组件,根据二层网络的实现方式不同(即agent的不同),可以分为Linux bridge的方式,Openvswitch的方式.而且,lay ...

  9. 探究UE4网络系列(二)、UE4网络核心类分析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 前面分析了网络核心的基础类Socket/BSDSocket/SocketSubsystem/SocketSubs ...

  10. Java网络编程探究|乐字节

    大家好,我是乐字节小乐,上次给大家讲述了Java中的IO流之输出流|乐字节,本文将会给大家讲述网络编程. 主要内容如下: 网络 网络分层 IP位置 端口port 网络编程 一. 网络 1.概念 网络即 ...

随机推荐

  1. Redis管理及监控工具推荐

    推荐一款Redis管理软件.[官网 http://www.redisant.cn/] 功能描述: 1. 键和字段CRUD和glob. 2. 适用于字符串.列表.散列.集合.有序集合. 通过漂亮的用户界 ...

  2. 最新的ZooKeeper GUI

    Zookeeper 是一个分布式的.开源的程序协调服务,是 hadoop 项目下的一个子项目.他提供的主要功 能包括:配置管理.名字服务.分布式锁.集群管理. 平时用zkCli.sh进行管理不免有点不 ...

  3. springboot集成支付宝的支付(通用版)

    [1.引依赖] <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sd ...

  4. 嵌入式学习-c语言篇01:搭建C语言环境

    使用NotePad++和gcc编译器来搭建c语言环境 NotePad++:C语言编码器 gcc:C语言编译器 这两个软甲可以去官网下载 下载好进入该文件夹,如图: 添加环境变量:直接cmd,运行gcc ...

  5. C#和Open eVision Studio图像库联合编程-读取图像

    OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Image Files (*.t ...

  6. Vue使用axios请求接口返回成功200但是进入到catch中

    发生这个问题时查阅了许多资料,没有一个是对得上的.最后发现原来是在请求拦截器中的错误 错误代码如下 // 添加响应拦截器 axios.interceptors.response.use(functio ...

  7. Spring MVC文件请求处理详解:MultipartResolver

    org.springframework.web.multipart.MultipartResolver是Spring-Web针对RFC1867实现的多文件上传解决策略. 1 使用场景 前端上传文件时, ...

  8. Datawhale组队学习_Task02:详读西瓜书+南瓜书第3章

    第3章 线性模型 家人们又来吃瓜了! 3.1 基本形式 线性模型的本质是通过一个所有属性的线性组合进行预测的函数,即 $\mathcal{f(x)=w_1x_1+w_2x_2+...+w_dx_d+b ...

  9. 记一次InputStream流读取不完整留下的惨痛教训

    前言 首先,问问大家下面这段流读取的代码是否存在问题呢? inputStream = .... try { // 根据inputStream的长度创建字节数组 byte[] arrayOfByte = ...

  10. 链接脚本中 AT> 的作用

    缘由 这两天在梳理芯片的启动流程, 研究到了链接脚本(样本为stm32cube ide 中的 stm32f407 的 flash 链接脚本). 产生了一个疑问AT>是什么? 答案 AT>就 ...