WSL 访问宿主机 & 使用宿主机代理

目前,可以在 WSL Settings 中切换 WSL 的网络模式。NAT 模式是传统的网络模式,WSL 通过宿主机的一层 NAT 来接入网络;而新的 Mirror 模式将尝试融合两个系统的网络结构,使用 127.0.0.1 就可以在 WSL 内外互相访问服务,非常方便。

1. WSL 如何访问宿主机

1.1. NAT 模式

在默认的 NAT 模式下,在 WSL 中执行如下命令查看宿主机 IP 地址:

ip route show | grep -i default | awk '{ print $3}'

一般的结果为 172.17.16.1

WSL 中通过此地址可以直接访问宿主机中的服务。比如宿主机在 8080 端口开了个 nginx 服务器,在 WSL 内通过 http://172.17.16.1:8080 就可以访问到

1.2. Mirror 模式

在 Mirror 模式下,WSL 内直接通过 127.0.0.1 就可以访问宿主机服务

2. WSL 如何使用宿主机代理

2.1. NAT 模式

NAT 模式下,需要在宿主机代理处设置监听。有两种方法,以 Mihomo 为例:

  • 方法 1:设置 allow-lan: truebind-address: "*",允许局域网所有地址使用代理

  • 方法 2:为 WSL 专门添加一个入站监听,此方法安全性更高。添加如下配置:

    listeners:
      - name: wsl-in
        type: mixed
        port: 8890
        listen: 172.17.16.1 	# 监听WSL网桥地址

设置完成以后,WSL 内就可以通过 172.17.16.1 来访问宿主机代理了。

比如在 shell 中配置代理:

HTTP_PROXY_URL=http://172.17.16.1:8890
SOCK5_PROXY_URL=socks5://172.17.16.1:8890
PROXY_BYPASS=192.168..,172.16..,.local,localhost,127.0.0.1

export http_proxy=${HTTP_PROXY_URL}
export https_proxy=${HTTP_PROXY_URL}
export all_proxy=${SOCK5_PROXY_URL}
export no_proxy=${PROXY_BYPASS}

2.2. Mirror 模式

在 Mirror 模式下,WSL 直接使用 127.0.0.1 就可以正常访问宿主机代理服务,无需额外设置

HTTP_PROXY_URL=http://127.0.0.1:7890
SOCK5_PROXY_URL=socks5://127.0.0.1:7890
PROXY_BYPASS=192.168..,172.16..,.local,localhost,127.0.0.1

export http_proxy=${HTTP_PROXY_URL}
export https_proxy=${HTTP_PROXY_URL}
export all_proxy=${SOCK5_PROXY_URL}
export no_proxy=${PROXY_BYPASS}

WSL 访问宿主机 & 使用宿主机代理
https://blog.openyq.top/posts/64763/
作者
yqs112358
许可协议