NAT
WSL目前主要有NAT和Mirror两种方式实现对外部的网络连接, 前者在大多数虚拟机中都用使用, 仅需在~/.bashrc
文件中添加相应的环境变量即可(将下面的IP地址和端口号替换为自己的即可).
注意完成对
~/.bashrc
文件的修改之后, 通过source ~/.bashrc
命令执行使配置生效.
export http_proxy="http://192.168.128.1:7890/" export https_proxy="http://192.168.128.1:7890/" export ftp_proxy="http://192.168.128.1:7890/"
但是需要注意的是, 采用NAT方案的确能够在WSL中直接使用宿主机提供的代理. 但是由于NAT屏蔽了内网信息, 因此从外部是无法直接访问WSL的, 这对于将WSL用作服务器的场景非常致命.
Mirror
此时可采用WSL2提供的镜像网络, 此方法不需要将WSL作为宿主机的局域网成员, 而使用完全相同的IP地址, 理论上只要宿主机能够连接被其他网络发现, WSL也必然能够被发现. 相应的配置也非常简单, 在用户根目录下创建.wslconfig
文件, 并在其中写入以下内容.
注意配置之前需要先将WSL关闭, 相应命令为
wsl --shutdown
.
# Settings apply across all Linux distros running on WSL 2 [wsl2] # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB memory=16GB # Sets the VM to use two virtual processors processors=8 [experimental] autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择 networkingMode=mirrored # 开启镜像网络 dnsTunneling=true # 开启 DNS Tunneling firewall=true # 开启 Windows 防火墙 autoProxy=true # 开启自动同步代理 sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间
之后直接在WSL中将代理设置为本地即可, 完成之后即可正常使用代理访问外部网络.
export http_proxy="http://127.0.0.1:7890/" export https_proxy="http://127.0.0.1:7890/" export ftp_proxy="http://127.0.0.1:7890/"
Test
请注意, 部分网址因为各种原因无法回应ICMP回显请求, 因此可能ping不通, 但是实际上代理已经配置完成, 推荐使用curl google.com
命令进行测试, 出现下面结果表示代理配置成功.