WSL2 中访问宿主机 Windows 的代理

WSL 中获取宿主机 IP
WSL 每次启动的时候都会有不同的 IP 地址,所以并不能直接用静态的方式来设置代理。WSL2 会把 IP 写在 /etc/resolv.conf 中,因此可以用 cat /etc/resolv.conf | grep nameserver | awk ‘{ print $2 }’ 这条指令获得宿主机 IP 。WSL2 自己的 IP 可以用 hostname -I | awk ‘{print $1}’ 得到。设置代理第 4 行 记得换成自己宿主机代理的端口!宿主机记得开启允许局域网链接!

脚本如下:

#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print KaTeX parse error: Expected 'EOF', got '}' at position 3: 2 }̲')wslip=(hostname -I | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲')port=<PORT>PR…{hostip}:KaTeX parse error: Expected '}', got 'EOF' at end of input: …rt http_proxy="{PROXY_HTTP}" export HTTP_PROXY=" P R O X Y H T T P " g i t c o n f i g − − g l o b a l h t t p . p r o x y " {PROXY_HTTP}" git config --global http.proxy " PROXYHTTP"gitconfigglobalhttp.proxy"{PROXY_HTTP}" git config --global https.proxy “ P R O X Y H T T P " e x p o r t h t t p s p r o x y = " {PROXY_HTTP}" export https_proxy=" PROXYHTTP"exporthttpsproxy="{PROXY_HTTP}” export 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_proxyelif [ “$1” = “unset” ]then unset_proxyelif [ “$1” = “test” ]then test_settingelse echo "Unsupported arguments."fi

之后运行 . ./proxy.sh set 就可以自动设置代理了。unset 可以取消代理,test 可以查看代理状态,能够用来检查环境变量是否被正确修改。
运行的时候不要忘记之前的 .,或者使用 source ./proxy.sh set,只有这样才能够修改环境变量
直接运行例如 ./proxy.sh set 或者 sh proxy.sh set,这样会是运行在一个子 shell 中,对当前 shell 没有效果

另外可以在 ~/.bashrc 中选择性的加上下面两句话,记得将里面的路径修改成你放这个脚本的路径 。

alias proxy=“source /path/to/proxy.sh”
. /path/to/proxy.sh set

第一句话可以为这个脚本设置别名 proxy,这样在任何路径下都可以通过 proxy 命令使用这个脚本了,之后在任何路径下,都可以随时都可以通过输入 proxy unset 来暂时取消代理。
第二句话就是在每次 shell 启动的时候运行该脚本实现自动设置代理,这样以后不用额外操作就默认设置好代理啦~

如果前面完成后已经可以正常使用了,那么下面就不用管了。如果你代理已经设置正确了,尤其是已经允许来自局域网的访问,但是依旧无法正常访问,代理的软件的确也没收到请求,那么很可能是被 Windows 的防火墙给拦截了。
可以先尝试 ping 宿主机 ip 和 telnet 代理的端口,检查是否连通。如果无法连通,则多半是防火墙的问题。

可以尝试在控制面板的防火墙面板左侧“允许应用或功能通过防火墙”,即上述界面中,打上勾允许代理软件通过防火墙。
或者可以尝试在高级设置中,入站规则中新建一个相关规则,如果你不是很了解,可以允许任何程序的任何协议,远程 IP 为 172.16.0.0/12 及 192.168.0.0/16 的入站请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值