目前网上有很多办法,有用host,有修改bash的,非常多,也非常麻烦。
目前发现这种方法最为简单:添加一个开机启动项,配置一个netsh
1.准备一个vbs 并添加到开机启动项
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d CentOS7 -u root sudo service sshd start", vbhide
ws.run "wsl -d CentOS7 -u root ip addr add 172.28.131.101/20 broadcast 172.28.143.255 dev eth0 label eth0:1", vbhide
这个vbs的意义是首先拉起openssh服务,允许我连接到服务器
第二个是为eth0添加一个固定的ip地址为172.28.131.101/20,这个IP就是我希望固定的IP,广播地址172.17.111.255,这种添加后的netmask就是 255.255.240.0,添加结果如图:
?
至于为什么不使用192.168网段,纯粹是因为wsl默认的子网掩码就是255.255.240.0所以采取172网段。
因为执行命令需要时间,而windows启动项是非阻塞的,所以我们需要手动执行:
netsh interface ip add address "vEthernet (WSL)" 172.28.131.102 255.255.240.0
目的是为链接到WSL的虚拟网卡配置成172.28.131.102/20,实现到WSL的联通。这里IP地址不要与上面的冲突。
通过ipconfig查看:
?
注意,这种方法是添加一个IP地址,所以不会影响到WSL初始化的IP信息。使用WSL初始化IP,一样可以正常连接。
如果你希望使用192.168网段的,可以把WSL配置成其他网段,比如192.168.7.X,然后广播为192.168.7.255,对应子网192.168.7.0;vEthernet设置为192.168.7.Z,对应子网掩码一致。理解起来可能容易一些。
|