听闻WSL2现在很流行,在日常开发过程中可以模拟远程环境。最近试用了一下,感觉体验还不错。
在过程中遇到了一些windows和WSL2之间的网络问题。
访问宿主机
wsl和Windows(宿主机)之间有一套模拟的网络。
Windows IP
在Windows中运行ipconfig找到标有WSL标识的以太网适配器,就是wsl访问Windows的IP。
也可以在wsl中运行
cat /etc/resolv.conf
wsl的IP
wsl的IP需要通过ip addr命令查询,找到与WindowsIP同在一个子网的IP,一般为eht0
连通性测试
两边同时ping一下,发现Windows能ping得到wsl,但是wsl ping不到Windows。这是由于Windows自身的防火墙限制导致的。可以二选一进行如下操作即可。
- 以管理员身份打开PowerShell,输入
PS C:> New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
2. 关闭公用防火墙
这样两边就能互通了。
Git
在宿主机能裸机访问github的情况下,那么wsl应该也能git clone 和git push。如果宿主机配置了代理,那么wsl中可以直接复用宿主机的代理。
检查一下网络端口通不通
telnet ${Windows IP} {Windows 代理端口}
输出内容包含 Connected就通了
配置 git 代理
# 配置代理
git config --global http.proxy http://${Windows IP}:${Windows 代理端口}
git config --global https.proxy http://${Windows IP}:${Windows 代理端口}
# 检查配置信息
git config -l
配置完毕后,git clone 和git push就可以用啦。
配置 wget 代理
vi ~/.wgetrc
# 输入以下内容
use_proxy=yes
http_proxy=http://${Windows IP}:${Windows 代理端口}
https_proxy=http://${Windows IP}:${Windows 代理端口}
<img src="```" alt="" width="50%" />