「WSL2_笔记」WSL2 的网络配置什么的的

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq

前情提要

wsl2 + Docker 写 PHP 啥的,直接 127.0.0.1[:port] 就能访问;

为了写 ASP 又久违地装了 IIS ,然后发现 wsl2 内的服务打不开了;

最后找到的真正原因是挂进 Docker 内的一个文件额外用了符号连接产生的权限问题,那个文件实际用决定不需要了所以删掉就好了;

但是找原因的过程中照着一篇设置 wsl2 的网络的文章操作了下:「给 WSL2 设置静态 IP 地址 - 知乎;」

一个问题是,WSL2 在重启后内部的配置会恢复,但是宿主机对应的vEthernet (WSL)则不会,就导致每次都要执行一次命令改内部的配置,否则网络连上不……

win11 下的坑

可以使用Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress命令进行相应的操作,但是 win11 下这个vEthernet (WSL)被隐藏了,实际要加个参数,写成Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPAddress

所以有什么办法让它直接显示出来呢?

Windows 11 下 WSL2 vEthernet (WSL) 如何取消隐藏? - 知乎

https://www.zhihu.com/question/571415099

探索

前边教程中配置 WSL2 内部时会修改/etc/resolv.conf文件,然后重启会被恢复,然后虽然可以设置脚本自动执行,我嫌麻烦就没弄;

然后发现默认生成的/etc/resolv.conf文件里内容如下:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.30.80.1

原来可以通过/etc/wsl.conf文件来控制这个文件的生成……

其实现在的需求就是让 WSL2 内部恢复连网并保持,不需要频繁折腾的话固不固定 IP 都无所谓,尤其vEthernet (WSL)怎么命令行配置也不懂;

# 配置 WSL2 内部的网络,并写入配置文件
# 给 WSL2 设置静态 IP 地址 - 知乎
# https://zhuanlan.zhihu.com/p/380779630
sudo ip addr del $(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1) dev eth0
sudo ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0
sudo ip route add 0.0.0.0/0 via 192.168.50.1 dev eth0
sudo echo nameserver 192.168.50.1 > /etc/resolv.conf

# 写入配置到 /etc/wsl.conf
# sudo echo -e "[user]" > /etc/wsl.conf
# sudo echo -e "default = wdssmq" >> /etc/wsl.conf
sudo echo -e "[network]" >> /etc/wsl.conf
sudo echo -e "generateResolvConf = false" >> /etc/wsl.conf

这样上边的命令理论上执行一次就可以了……

然后在powershell中执行下边的命令,让vEthernet (WSL)的 IP 也固定:

# 给 WSL2 设置静态 IP 地址 - 知乎
# https://zhuanlan.zhihu.com/p/380779630
Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False
New-NetIPAddress -IPAddress 192.168.50.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'
Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False
New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.50.0/24;

wsl2 内部网络测试

# 测试网络连通性
ping -c 1 baidu.com

# 查看 IP
ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1
# 192.168.50.2/24

# 查看路由
ip route show
# default via 192.168.50.1 dev eth0
# 192.168.50.0/24 dev eth0 proto kernel scope link src 192.168.50.2

留存

过程中找到和尝试的各种命令,就不太懂,姑且留存记录下:

Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPAddress

Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPConfiguration

Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPInterface

Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPInterface -Dhcp -- Enabled

Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPInterface -AddressFamily "IPv4"


# ----------------------

# Using PowerShell to Set Static and DHCP IP Addresses – Part 1 | PDQ
# https://www.pdq.com/blog/using-powershell-to-set-static-and-dhcp-ip-addresses-part-1/

$IPType = "IPv4"
$adapter = Get-NetAdapter -IncludeHidden 'vEthernet (WSL)'
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq "Disabled") {
    # Remove existing gateway
    If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
    $interface | Remove-NetRoute -Confirm:$false
    }
    # Enable DHCP
    $interface | Set-NetIPInterface -DHCP Enabled
    # Configure the DNS Servers automatically
    $interface | Set-DnsClientServerAddress -ResetServerAddresses
}

爱发电

本文标题:《「WSL2_笔记」WSL2 的网络配置什么的的》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20220527442.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

太搞了
回复
发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

  • 订阅本站的 RSS 2.0 新闻聚合

搜索

本周旧文

近期观影记录:超级马里奥,死侍与金刚狼。。

搬家也告一段落,虽然搬过来的东西还得归置,新衣柜虽说已经散俩月味儿了,但还是不想放衣服进去。

要不我每年汇总整理一次??碎雨集_沉冰浮水_第1页

所以,不带这条的话,2024 年目前只发了 13 条嘟????

VSCode 内 git 操作卡住的时候没办法主动取消一直是个痛点,一般都是推送或拉取,今天连提交都卡了。。

又一个夏天过去了,所以今年也没买防水鞋套;然后天凉了,为了应对踢被子买了睡袋,不知道 1.2 米会不会略窄。。

《五至七时的克莱奥》,2018 年 6 月加入列表,21 年 11 月底发现 B 站上线了这部,直到前几天才看完,还是分两次看的。。接下来有五项是 2019 年的,都是电影 —— 略长的待办列表。。

有用程序自动抓取自己带 tag 的嘟,然后按年备份后从线上删除;刚发现去年的数据有备份但是没删线上??和本地数据对比后发现线上的还少一条,Why??

本质上,每个人需要的是「让自己面临的问题得到解决」的能力。。

这又涉及到直接能力和间接能力,,缺乏直接能力很正常,视情况可以通过学习来掌握直接能力,或者「请」有直接能力的人来帮自己解决。。

缺乏间接能力的情况是真没救,尤其是对「这是**我自己**面临的问题」这一前提没有明确认知的人。。

其实,在认知意义上,焦虑时我知道这种情绪对应「焦虑」这个文法词汇,此外还有「压抑」「悲伤」等等,然而「抑郁」其实是个我认知体系外的词,虽然经常一些情绪感受我找不到对应的语言词汇来表述,却也只能将其实表述为「找不到对应的语言词汇来表述」的某些感受。。

爱发电支持者

最新留言

友情链接