WSL2 配置代理

WSL2 配置代理

Created
Aug 1, 2021 11:47 AM
Tags
WSL
Linux
Windows
Category
Geek
Last Edited
Last updated July 16, 2022
Abstract
在初代 WSL 中,Linux 子系统和 Windows 共享了网络端口,因此可以直接让子系统访问宿主机的代理服务。但在 WSL2 中,其基于 Hyper-V 运行,导致 Linux 子系统和 Windows 是两台在网络上独立的机器,因此需要通过 IP 进行访问。
Related to Reading List (Column)

一、WSL2 网络结构

在初代 WSL 中,Linux 子系统和 Windows 共享了网络端口,因此可以直接让子系统访问宿主机的代理服务。但在 WSL2 中,其基于 Hyper-V 运行,导致 Linux 子系统和 Windows 是两台在网络上独立的机器,因此需要通过 IP 进行访问。

二、配置代理软件

首先在自己的代理软件中打开允许来自局域网的连接,之后 WSL2 才可通过局域网使用代理。

三、配置 WSL2

修改.bashrc

修改自己对应的用户配置文件,这里以~/.bashrc为例
  • 请将端口改为自己使用的代理软件的端口
  • 创建proxy.conf文件:touch /etc/apt/apt.conf.d/proxy.conf
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\\ ).*') alias proxy=' export https_proxy="socks5://${hostip}:10808"; export http_proxy="socks5://${hostip}:10808"; export all_proxy="socks5://${hostip}:10808"; echo -e "Acquire::http::Proxy \\"<http://$>{hostip}:10808\\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null; echo -e "Acquire::https::Proxy \\"<http://$>{hostip}:10808\\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null; ' alias unproxy=' unset https_proxy; unset http_proxy; unset all_proxy; sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf.d/proxy.conf; sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf.d/proxy.conf; '

应用代理

# 应用配置 source ~/.bashrc # 打开代理 proxy # 查看export中代理信息,查看proxy.conf中代理信息 export cat /etc/apt/apt.conf.d/proxy.conf # 测试代理 curl ip.sb

四、代理问题

问题

参考的对象类型不支持尝试的操作。(The attempted operation is not supported for the type of object referenced.)

解决方案

  1. 下载该软件 http://www.proxifier.com/tmp/Test20200228/NoLsp.exe
  1. 运行命令
NoLsp.exe C:\\windows\\system32\\wsl.exe