通过 DHCP 下发 WPAD 为局域网内电脑设置代理

目前实验室内的代理方案是OpenClash,但是他劫持PREROUTING的行为让我感觉很不爽,虽然软路由性能充足,但是使用体验总让人膈应。于是想要找点别的法子。 最近 Proxifier 4 的release引爆了我常见的几个群的群友,纷纷上线作为自己的代理处理措施,也有老哥因为想起来proxifier看了一眼日志,结果发现了个[恶意扩展](https://blog.berd.moe/archives/chrome-spyware-extension-user-agent-switcher/)。而我,因为一位群友发出了域内WPAD自动"智能"尝试的错误日志,想起了还有这么个解决方案,实操感觉良好。 ## 准备代理 这个clash肯定还是要跑在路由器上,鉴于现在在用openclash,干脆就不换了。在配置中没有看到相关的选项,估计他也没想到有人这么想开倒车回到pac时代,总之我们修改他的服务脚本`/etc/init.d/openclash`和看门狗脚本`/i/forgot/that/path`,把所有带 `-j openclash`的注释掉,这样就不会劫持PREROUTING链了。 当然,如果你在用fake_ip方案,别忘了把dns劫持选项关掉。 ## 准备 PAC WPAD的代理配置是通过分发一个PAC文件来做的,所以我们需要一个可以通过http被访问得到的PAC文件,这里我直接丢到路由器的`/www`,让uhttpd顺便分发一下。 因为最后负责分流的还是clash,这里的PAC可以直接简单粗暴地这样来: ```javascript function FindProxyForURL(url, host) { return "PROXY 10.0.0.1:1380; DIRECT" } ``` 当然如果你想要有个gfwlist先在客户端做个黑名单,也可以去github上随便找个。 ## 设置DHCP luci中跟这个相关的dhcp选项不在dhcp里,在`interface - (select one) - DHCP Server - Advanced setting`有个DHCP-Options,该选项支持我们下发任何dhcp option,如果对于可能的内容感到好奇可以看rfc。 WPAD的options序号是252,这里填入`252,"http://10.0.0.1/pac"`即可。 ## 启用 如果对于是否配置成功心存疑虑,可以打开网线大鲨鱼抓个包,DHCP的Offer和ACK包中都应该包含有这一项: ![image-20201028202100628](https://vip2.loli.net/2020/10/28/cJKiqQFeIlApMby.png) 在Windows的系统设置 - 代理中打开自动检测配置即可使用。 ![image-20201028202203736](https://vip2.loli.net/2020/10/28/x3qDOWfXG2zdicI.png) 比较遗憾的是,安卓不吃WPAD。 ## 参考 - https://www.cisco.com/c/en/us/td/docs/security/web_security/connector/connector3000/WPADAP.html - https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file

评论

此博客中的热门博文

clash for windows 系统代理时 pip 出现 ProxyError 的情况分析记录

在 VPS 上使用 Cloudflare Warp 提升媒体解锁能力 & 路由解决办法

ESXi 配置 DSM 黑群晖踩坑记