wsl2-ubuntu通过win10代理连接互联网

在wsl2中使用命令 `ip route ` 查看以下信息

宿主机的IP, wsl2使用此ip作为联网的路由。wsl2的使用IPwls2子网的计算。类似这个:172.29.32.0/20。

示例:"default via 172.29.32.1 dev eth0172.29.32.0/20 dev eth0 proto kernel scope link src 172.29.44.37"

默认情况下win10的防火墙会阻挡wsl2 ping 宿主机,可以在宿主机的防火墙里配置wsl2的入站规则。

在wsl2中ping 宿主机的ip,看看通不通,不通的话就先关掉宿主机的防火墙试试。如果通了,就是防火墙阻挡了通信,开启宿主机的防火墙,并新建wsl2的入站规则。直到ping通。看这个教程在wsl2中 curl http://www.baidu.com , 看看网络通不通。 如果通, 继续。win10防火墙路径:控制面板-系统和安全-windows defender 防火墙

配置wsl2的代理

修改~/.bashrc 文件

vim ~/.bashrc 在打开的文件末尾添加以下语句: host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ") export ALL_PROXY="socks5://$host_ip:port"

我用的是上边这种,测试正确;

或者

host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ") export https_proxy="socks5://$host_ip:port" export http_proxy=":port" export all_proxy="socks5://$host_ip:port"

将代码中的port修改为你的代理软件的本地监听端口.

保存后重新加载.bashrc文件

source ~/.bashrc

这种方式电脑重启也不会丢失更新的设置。

还有一种按需启动代理的方式。

将以下代码添加到~/.bashrc文件的末尾。

host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ") alias setss=export https_proxy="socks5://{hostip}:port";export http_proxy="http://{hostip}:port";export all_proxy="socks5://{hostip}:port";

保存成功后。

运行

source ~/.bashrc

加载设置。

默认不启动代理,运行 setss 后启动代理。

宿主机(win10)的代理软件要打开 “允许来自局域网的连接” 这个选项。