WSL开发环境的坑(不定期更新)

2021/2/15 WSLwindowsdevelopment

记录一些使用WSL做开发环境遇到的问题和解决办法,不定期更新。注意,这里的WSL都是指WSL2。

注:如果没有非用不可的理由,还是不建议使用WSL2,坑太多了,主要是网络方面的,非常影响效率

# WSL与VPN的问题

  1. 域名解析不正常

可以ping一下或者dig一下内网域名,看下能否正常解析ip,如果无法正常解析则属于此类。

github上有一个相关的issue:点击这里 (opens new window),原因似乎是宿主机连接VPN后,WSL没有把VPN的DNS resolver加上。

倒是有一个非常简单粗暴稳定的解决办法,就是先连接VPN,再打开WSL。其他解决办法似乎都不够稳定。

  1. http正常访问,https访问不了

比如执行 curl http://www.mokahr.com 可以得到正常响应,但是 curl https://www.mokahr.com 不行,那就属于此类。

github上也有一个相关issue,点击这里 (opens new window),原因是Path MTU discovery black问题,似乎是说windows和linux的MTU不一致,导致WSL发的包超过了路由的限制,但是路由又没有正确返回错误包,最终请求卡住了。

解决办法是修改WSL的MTU,sudo ip link set dev eth0 mtu 1400,这个办法屡试不爽。完整的解释过程在这里 (opens new window)

  1. 开启VPN后WSL无法翻墙了

这个跟VPN有关,如果你使用的VPN是全局隧道,由于VPN路由表优先级最高,流量都会从VPN走,所以肯定是没法翻墙的。

# Failed to establish a socket connection to proxies: ["PROXY 127.0.0.1:7890"]

如果遇到这个错误,说明是代理地址不对,需要显式写出WSL2的虚拟网卡的ip地址。

可以去powershell里执行ipconfig看到WSL的地址,然后覆盖WSL中的http_proxy和https_proxy,例如:

http_proxy=http://172.21.0.1:7890
https_proxy=http://172.21.0.1:7890

# WSL如何使用Cypress GUI

Cypress GUI使用了linux原生的GUI,默认情况下WSL无法启动,不过可以参考这篇博客 (opens new window)解决。

Designed by Lishunyang | All right reserved