wsl2共享宿主机代理

最近在公司用oh-my-zsh很爽,回来用Windows的shell就十分难以接受,因此我就把原来装好的wsl重新配置了一下。

然后就发现了一些问题。网上说wsl使用的端口和Windows是共享的,而我扫描了所有端口发现并没有。然后查了一下,发现我的wsl是wsl2,和wsl不同的是,wsl2使用的是虚拟机,所以要共享代理就很麻烦。

因为每次wsl2每次启动都是动态地启动,所以每次都需要动态地获取Windows的IP。在wsl2中,可以用:

1
cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'

获取宿主机的IP。

于是我在${HOME}位置创建了一个.proxy.sh

1
2
3
4
5
6
#!/bin/sh

hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
port=7890
export https_proxy=http://${hostip}:${port} http_proxy=http://${hostip}:${port} all_proxy=socks5://${hostip}:${port}

然后再在.zshrc中增加:

1
alias proxy='source /home/zhb/.proxy.sh'

然后就可以:

连接其他宿主机程序也可以用类似的方式,例如MySQL,只需要获取宿主机的IP和端口号,然后连接就行了。