WSL2配置

Install

网上教程很多,这里不再赘述,放一下我的参考文章( Win10 系统下的 Windows Terminal + WSL 配置指南(超详细) - 0xFFFF )

Proxy

WSL2下为linux分配了一个虚拟网卡,导致WSL2无法直接访问localhost,需要访问windows的主机地址。

在WSL中使用 cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }' 获取主机IP地址,接着就可以设置环境变量来实现代理:

export http_proxy=http://{your windows ip}:{port}
export https_proxy='http://{your windows ip}:{port}

同时在代理软件中设置允许局域网

例如Clash中:

但这样仅对当前终端有效,重启WSL后需要重新设置,那么就要使用脚本了

编写脚本(来自网上):

# ~/proxy.sh

hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
port= # 这里写代理端口

PROXY_HTTP="http://${hostip}:${port}"

set_proxy(){
    export http_proxy="${PROXY_HTTP}"
    export HTTP_PROXY="${PROXY_HTTP}"

    export https_proxy="${PROXY_HTTP}"
    export HTTPS_proxy="${PROXY_HTTP}"

	git config --global http.proxy "${PROXY_HTTP}"
	git config --global https.proxy "${PROXY_HTTP}"
}

unset_proxy(){
    unset http_proxy
    unset HTTP_PROXY
    unset https_proxy
    unset HTTPS_PROXY

	git config --global --unset http.proxy
	git config --global --unset https.proxy
}

test_setting(){
    echo "Host ip:" ${hostip}
    echo "WSL ip:" ${wslip}
    echo "Current proxy:" $https_proxy
}

if [ "$1" = "set" ]
then
    set_proxy

elif [ "$1" = "unset" ]
then
    unset_proxy

elif [ "$1" = "test" ]
then
    test_setting
else
    echo "Unsupported arguments."
fi

修改~/.bashrc文件,我安装了ohmyzsh,因此修改的是~/.zshrc,在文件中添加以下内容:

alias proxy="source ~/proxy.sh"
. ~/proxy.sh set

~/proxy.sh 是脚本的位置,可以根据需要自行修改

最后source ~/.zshrc即可,以后每次启动WSL就会自动设置代理了。

随时可以通过proxy test来查看当前代理,也可以通过proxy unset 取消代理

参考文章

WSL2 中访问宿主机 Windows 的代理 - ZingLix Blog

Win10 系统下的 Windows Terminal + WSL 配置指南(超详细) - 0xFFFF