↓ 跳过正文
  1. 文章/
  2. 2026 年文章归档/

WSL 里走代理,Windows 子系统的网络设置

·1104 字·3 分钟
作者
吾便宜

在 WSL 里配代理,最气人的一幕:Windows 上代理好好的,WSL 里 curl 却直接超时。原因很简单——WSL2 跑在一个虚拟网卡后面,和宿主机网络是隔离的,你在 WSL 里写的 127.0.0.1 指的是 WSL 自己,根本到不了 Windows 上的代理客户端。

WSL2 与 Windows 宿主机代理网络连接示意

插图来源:Storyset

方法一:直连宿主机 IP(最常用)
#

WSL2 里可以通过一个特殊的地址访问宿主机。在 WSL 终端里执行:

cat /etc/resolv.conf

看到的 nameserver 那一行,一般就是宿主机的虚拟网卡地址。然后把代理环境变量指向它:

export http_proxy="http://<宿主机IP>:7890"
export https_proxy="http://<宿主机IP>:7890"

端口换成你 Windows 客户端实际监听的端口。Linux 环境变量的完整讲究可以看这篇一次讲清。

缺点:宿主机 IP 重启后可能会变,隔段时间要重新看一眼。可以写个小脚本自动从 resolv.conf 里取,放到 .bashrc 里。

方法二:镜像网络模式(一劳永逸)
#

新版 WSL 支持 mirrored 网络模式,打开后 WSL 和宿主机共享网络栈,localhost 就是互通的,直接写 127.0.0.1 就行。

在 Windows 用户目录下建一个 .wslconfig 文件:

[wsl2]
networkingMode=mirrored

保存后在 PowerShell 里 wsl --shutdown 再重进 WSL 生效。这是最省心的方案,配一次永久有效。

方法三:客户端开 TUN 模式
#

如果你的 Windows 客户端支持 TUN 模式(原理见 TUN 和系统代理的区别),开了之后 WSL 的流量会被 TUN 直接接管,连环境变量都不用配。不过 TUN 模式接管的是一整台机器的流量,V2RayN 的教程里有相关设置的入口。

验证与排错
#

配完之后,在 WSL 里跑这两条验证:

curl -v https://www.google.com
env | grep -i proxy

第一条看请求是不是真的走了代理(看连接的 IP 是不是代理地址),第二条确认变量生效了。如果 curl 通了但 git 不通,八成是 git 自己的代理配置覆盖了环境变量,去查 git config --global http.proxy。

还有个经典坑:Windows 客户端开了"局域网共享"但 WSL 连不上。这种情况先确认 Windows 防火墙有没有放行客户端的监听端口,防火墙弹窗点允许一次就行。

进阶:只让 WSL 走代理,不影响 Windows
#

有些人的需求反过来:Windows 本机要直连,只有 WSL 里开发需要代理。这时候别在 Windows 客户端开全局/TUN,就让客户端正常监听本地端口,WSL 里配环境变量指向它。Windows 本机的流量完全不受影响,WSL 里该走的走,两边互不干扰。

选哪个
#

  • 怕麻烦、WSL 版本新:直接上方法二,镜像网络模式
  • 不想动 WSL 配置:方法一,写个脚本自动取 IP
  • 整个 Windows 都想无感代理:方法三 TUN

三种方法我都长期用过,目前主力是镜像网络模式,配完就忘。配完之后如果发现部分网站打不开,先别怀疑代理,看看是不是 DNS 的问题——WSL 的 DNS 解析走的是自己的 resolv.conf,和 Windows 不是一套,必要时手动指定 DNS 试试。客户端的基础配置逻辑可以对照这篇总览,原理相通。

相关文章

V2RayN 使用教程:Windows 电脑端从下载到上网

·599 字·2 分钟
V2RayN 是 Windows 上用得最多的免费代理客户端,体积小、免安装、协议支持全。这篇把从下载到能上网的完整流程讲一遍。 插图来源:Storyset 第一步:下载 # 去 GitHub 搜 2dust/v2rayN,进 Releases 页面 下载文件名带 With-Core 的压缩包(自带 Xray 等内核,省去单独下载内核的麻烦) 解压到任意文件夹(路径别带中文),双击运行 v2rayN.exe ⚠️ 杀毒软件可能误报,添加信任即可。只从 GitHub 官方 Releases 下载。

iOS 锁屏一键开关代理的两种方法

·1158 字·3 分钟
插图来源:Storyset 每天开关代理好几次,每次都要解锁、找到 App、点进开关,烦。两种一键方案,按需取用。 方案一:控制中心长按 VPN 开关 # 下拉打开控制中心,长按(或重按)左上角的网络模块。 会展开出「VPN」按钮,点一下就能开关系统 VPN。 限制:它开关的是系统 VPN 通道,相当于代理的总闸;如果你用的是 Shadowrocket 这类 App,它能用;但它不能切换节点,也不能切换规则/全局模式。 适合场景:临时需要整个关掉代理(比如用银行 App),点一下就行。 方案二:快捷指令做个切换按钮 # 打开「快捷指令」App,新建快捷指令,添加操作「设定 VPN」(或对应代理 App 提供的操作,如 Shadowrocket 的"切换开关")。 把这个快捷指令添加到桌面小组件或锁屏小组件,一点即切。 进阶:配合「自动化」,设置连上公司 Wi-Fi 自动关代理、连上家里 Wi-Fi 自动开代理。 限制:快捷指令能做的动作取决于 App 是否提供了 Siri 快捷方式支持;部分小众客户端没有,得手动进 App。 两个方案的取舍 # 只想快速"关一下/开一下":用方案一,零配置。 想连切换模式、换节点一起做:用方案二,一次配好天天省事。 提醒:频繁开关可能导致部分 App 的网络状态卡住(比如微信转圈),开关后等几秒再用。 补充 checklist # 确认代理 App 已在系统 VPN 配置里授权(设置 → 通用 → VPN 与设备管理)。 快捷指令用到的 App 操作,先手动进 App 确认开关本身是好的。 自动化触发别设太灵敏(比如"离开家"这类地理围栏可能误触发),建议用连 Wi-Fi 名称触发。 和家人共用设备时,桌面小组件记得放在顺手的位置,不然配了也想不起来用。 相关阅读:全平台客户端配置总览;如果快捷指令里找不到你的客户端,先确认订阅导入成功且 App 正常工作;三种代理模式的区别见规则/全局/直连模式怎么选。