WSL 固定IP的两种方法

首发于个人博客

1. 网桥配置固定ip

这种模式不稳定,wsl经常崩溃

@echo off
setlocal enabledelayedexpansion
::先停掉可能在跑的wsl实例
wsl --shutdown ubuntu
if !errorlevel! equ 0 (
    ::检查WSL有没有我需要的IP
    wsl -u root ip addr | findstr "192.168.3.100" > nul
    if !errorlevel! equ 0 (
        echo wsl ip has set
    ) else (
        ::IP不存在则绑定IP
        wsl -u root ip addr add 192.168.3.100/24 broadcast 192.168.3.255 dev eth0 label eth0:1
        echo set wsl ip success: 192.168.3.100
    )
    ::检查宿主机有没有我需要的IP
    ipconfig | findstr "192.168.3.200" > nul
    if !errorlevel! equ 0 (
        echo windows ip has set
    ) else (
        ::IP不存在则绑定IP
        netsh interface ip add address "vEthernet (WSL)" 192.168.3.200 255.255.255.0
        echo set windows ip success: 192.168.3.200
    )
)
 ::为主机设置SSH转发端口
 netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=192.168.3.100 connectport=22

pause

wsl无法ping通windows

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

允许wsl通过防火墙

2.另一种模式,自动配置wsl2 host

WSL2 启动时会自动变换IP,IP地址不可固定。使用Localhost有时候可以连接上去,有时候连接不上去。
现在设置一个固定的host来配置WSL2

1. 配置Linux 获取IP启动脚本

如果无法写入,则需要在windows配置etc目录的权限,更改所属组,让User也有写入权

cd /etc
touch initWsl.sh
chmod 775 initWsl.sh
chmod 777 /mnt/c/Windows/System32/drivers/etc/hosts
vim initWsl.sh

initWsl.bash

#! /bin/sh

# 启动对应服务
#service ssh ${1}
#service docker ${1}

# 设置本地Wsl2域名,默认为wsl2host
ipaddr=$(ip -4 addr show dev eth0 | egrep 'inet ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})' | awk '{print $2}' | awk -F/ '{print $1}')
hostName='wsl.local'
sed -i "/${hostName}/d" /mnt/c/Windows/System32/drivers/etc/hosts
echo "${ipaddr} ${hostName}" >> /mnt/c/Windows/System32/drivers/etc/hosts

sed -i "/${hostName}/d" /etc/hosts
echo "${ipaddr} ${hostName}" >> /etc/hosts

winip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
winhost='win.local'

sed -i "/${winhost}/d" /etc/hosts
echo "${winip} ${winhost}" >> /etc/hosts

./initWsl.sh start
2. 配置Windows 启动运行脚本
  1. 进入 C:\Users\hanli\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  2. 创建Ubuntu.vbs
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Ubuntu -u root /etc/initWsl.sh start", vbhide
  1. 执行Ubuntu.vbs

3. 通过localhost访问

curl localhost:port 

即可访问到wsl2的端口

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在WSL Linux中设置固定IP地址,需要进行以下步骤: 1. 首先,打开WSL Linux终端。 2. 查看当前网络接口。使用ifconfig命令来查看当前网络接口和IP地址。例如,输入以下命令:ifconfig eth0 3. 编辑网络配置文件。使用vi或nano等文本编辑器打开网络配置文件。例如,输入以下命令来编辑网络配置文件:sudo vi /etc/network/interfaces 4. 在网络配置文件中,找到对应的网络接口部分。通常情况下,这是以"iface"开头的行,后面跟着网络接口的名称(如eth0)。 5. 在网络接口的配置中,添加以下行来设置固定IP地址: address [IP地址] netmask [子网掩码] gateway [网关地址] 例如,如果要将IP地址设置为192.168.0.100,子网掩码为255.255.255.0,则添加以下行: address 192.168.0.100 netmask 255.255.255.0 gateway [网关地址] 注意:网关地址通常是网络中的路由器IP地址。 6. 保存并关闭文件。在vi编辑器中,按下"Esc"键,然后输入":wq"以保存文件并退出。 7. 重启网络服务。使用以下命令重启网络服务,以应用新的配置:sudo /etc/init.d/networking restart 8. 验证固定IP地址。再次运行ifconfig命令,确保新的固定IP地址已成功应用。 这样,你就成功在WSL Linux中设置了固定IP地址。确保你选择了一个不会与其他设备或DHCP分配的IP地址冲突的地址,并在网关地址中指定了正确的路由器IP地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值