WSL2访问同机Windows端Burp代理连接被拒及流量回传配置问题
WSL2访问Windows侧Burp代理的调整步骤
核心错配原因
- Burp的监听地址未放行WSL网段的访问权限
- Burp内部重定向规则的目标地址错把Windows侧的localhost当成了WSL内的服务地址
具体操作步骤
调整Burp代理监听器的绑定范围
Burp默认的代理监听器仅绑定Windows侧的回环地址127.0.0.1,WSL2的NAT网段无法直接触达:- 打开Burp的
Settings→ 进入Proxy→ 打开Proxy listeners配置页 - 编辑现有
3001端口的监听器,将Bind to address从Loopback only改为All interfaces - 保存配置后确认Windows防火墙未弹出Burp的网络访问权限拦截(若之前误点取消,需手动重新授权)
- 打开Burp的
配置Windows防火墙入站规则
即使Burp绑定了所有接口,Windows默认防火墙会拦截来自WSL虚拟网段的入站流量:- 打开Windows Defender防火墙高级设置 → 入站规则 → 新建规则
- 规则类型选
端口→ 匹配规则选TCP,本地端口填写3001 - 操作选
允许连接→ 规则应用范围仅勾选专用网络,不要勾选公用网络,降低安全风险 - 规则可自定义名称(比如
WSL2访问Burp代理)后保存,即可精准放行对应端口的流量
可选精准配置:在规则的作用域设置中,将远程IP限制为WSL2的NAT网段(通常为172.16.0.0/12,可在WSL内运行ip route show | grep default查到网关对应网段),避免不必要的端口暴露
修正Burp重定向的目标地址
之前配置的localhost:80指向的是Windows本机的回环服务,并非WSL内运行的Apache,完全无法匹配链路需求:- 先在WSL内执行两个命令拿到核心IP:
- 查WSL侧看到的Windows主机网关地址:
ip route show | grep default,输出的via后的IP(比如172.25.240.1)就是WSL访问Windows服务的地址 - 查WSL实例自身的虚拟网卡IP:
ip addr show eth0 | grep inet,输出的inet后地址(比如172.25.240.2)就是Windows访问WSL服务的地址
- 查WSL侧看到的Windows主机网关地址:
- 回到Burp的重定向规则配置,将跳转目标从
localhost:80修改为刚才查到的WSL实例自身的虚拟网卡IP:80,依赖Apache已经配置的0.0.0.0:80监听,Windows侧的Burp即可正常访问到WSL内的Apache服务
- 先在WSL内执行两个命令拿到核心IP:
WSL侧连通性验证
不需要再尝试WSL侧的127.0.0.1连接Burp,直接使用WSL侧查到的Windows网关IP测试:- 基础连通测试命令:
curl -x http://<WSL侧查到的Windows网关IP>:3001 http://<WSL自身虚拟网卡IP>:80,能正常返回Apache页面即代表链路打通 - FFUF的代理参数直接填写
http://<WSL侧查到的Windows网关IP>:3001即可正常经过Burp转发流量
- 基础连通测试命令:
可选优化:若Windows版本为22H2及以上,可在Windows用户目录下的
.wslconfig文件中添加配置[wsl2] networkingMode=mirrored,执行wsl --shutdown重启WSL后,WSL与Windows会共享回环地址,此时Burp即使只绑定127.0.0.1,WSL侧也可直接用127.0.0.1:3001访问,无需反复查询网段IP。
内容的提问来源于stack exchange,提问作者Matheos
相关产品推荐
相关产品推荐

