设置OpenWRT的网络代理
1 - 设置OpenWRT的openclash
安装
我使用的 openwrt 固件默认安装了 openclash:
http://192.168.0.1/cgi-bin/luci/admin/services/openclash
配置
在配置文件订阅中,添加订阅地址,然后保存,再更新配置。
也可以启用自动更新,比如每周一更新一次。
启用
启动后可以通过 openclash 菜单中的 “运行日志” 来查看启动过程,尤其是启动失败的原因。
特别注意
如果启动时卡住,尤其是下载失败,请注意很可能是 dns 污染造成下载失败。常见故障
启动失败
openclass 启动失败,运行日志显示:
错误: 无法获取General部分的转发端口设置, OpenClash 使用原始配置文件启动失败
错误: 无法获取DNS部分的运行模式设置, OpenClash 使用原始配置文件启动失败
错误: 无法获取DNS部分的监听端口设置, OpenClash 使用原始配置文件启动失败
错误: OpenClash 启动失败,尝试使用原始配置文件启动...
第六步: 等待主程序下载外部文件...
解决方案是打开 “插件设置” -> “版本更新”,点击 “检查并更新” 来更新各个内核版本:
- [Dev] 当前内核版本
- [TUN] 当前内核版本
- [Meta] 当前内核版本
注意要关闭lan口的IPV6分配和IPV6 DHCP,否则会有如下提示:
2024-01-28 15:14:02 警告:OpenClash 启动成功,检测到您启用了IPv6的DHCP服务,可能会造成连接异常!
参考:
- https://github.com/vernesong/OpenClash/issues/1758
- https://github.com/vernesong/OpenClash/issues/913
避免bt流量走代理
由于同时开启了 openclash 做代理,因此会遇到一个问题:有些 bt 的流量会被 openclash 代理,从而无端的耗费了宝贵的代理流量。
全局设置 -》 模式设置 中,勾选:
- *仅允许常用端口流量*
- 实验性:绕过中国大陆 IP
全局设置 -》访问控制 中:
- 不走代理的局域网LAN IP
- 不走代理的局域网设备 Mac
参考资料:
代理服务器信息
-
HTTP(S) 代理端口: 7890
-
SOCKS5 代理端口: 7891
-
HTTP(S)&SOCKS5 混合代理端口: 7893
平时使用时,通过下面的命令进行代理设置:
export all_proxy=socks5://192.168.0.1:7891;export http_proxy=http://192.168.0.1:7890;export https_proxy=http://192.168.0.1:7890
方便起见,修改 ~/.zshrc
或者 /etc/profile
:
# proxy enable
alias proxyon='export all_proxy=socks5://192.168.0.1:7891;export http_proxy=http://192.168.0.1:7890;export https_proxy=http://192.168.0.1:7890'
alias proxyoff='unset all_proxy http_proxy https_proxy'
socks5 / https 认证信息
默认 openclash 会设置 socks5 / https 认证,导致出现如下的错误提示:
$ wget https://github.com/envoyproxy/envoy/releases/download/v1.23.3/envoy-1.23.3-linux-x86_64
--2023-06-27 21:20:18-- https://github.com/envoyproxy/envoy/releases/download/v1.23.3/envoy-1.23.3-linux-x86_64
Connecting to 192.168.0.1:7890... connected.
Proxy tunneling failed: Proxy Authentication RequiredUnable to establish SSL connection.
简单起见,去掉认证。
具体做法:
- 点击 openclash 菜单中的 “覆写设置”
- “基本设置” 拉到最下方,找到 “设置 SOCKS5/HTTP(S) 认证信息”
- 取消用户名和密码的勾选
- 保存配置 / 应用配置
$ wget https://github.com/envoyproxy/envoy/releases/download/v1.23.3/envoy-1.23.3-linux-x86_64
验证结果:
--2023-06-27 21:22:02-- https://github.com/envoyproxy/envoy/releases/download/v1.23.3/envoy-1.23.3-linux-x86_64
Connecting to 192.168.0.1:7890... connected.
Proxy request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/65214191/
......
Connecting to 192.168.0.1:7890... connected.
Proxy request sent, awaiting response... 200 OK
Length: 61566056 (59M) [application/octet-stream]
Saving to: ‘envoy-1.23.3-linux-x86_64’
envoy-1.23.3-linux-x86_64 100%[=================================================>] 58.71M 23.4MB/s in 2.5s
2 - 设置 ShadowSocksR Plus+
安装
TP Link XRD 6088 路由器所使用的 openwrt 固件默认安装了 ShadowSocksR Plus+, 而不是我之前熟悉的 openclash。
配置
在 “服务器节点” 配置页面的 “SS/SSR/V2/TROJAN 订阅 URL” 中输入订阅地址, 然后点击 “更新订阅 URL 列表”,再点击 “更新所有订阅服务器节点” 进行更新。
然后就可以在底下的 服务器节点列表 中看到订阅的各个服务器。
也可以启用自动更新。
注意
这里不能方便的在多个订阅地址之间切换,有点不方便启用
在服务器节点列表选择一个合适的服务器节点(比如 ping 比较快的),点击 “应用”。
注意
这里不能自动选择可用节点,有点不方便避免bt流量走代理
由于同时开启了 openclash 做代理,因此会遇到一个问题:有些 bt 的流量会被 openclash 代理,从而无端的耗费了宝贵的代理流量。
解决方法:在 “客户端” 页面的 “ShadowSocksR Plus+ 设置” 中,找到 “需要代理的端口” ,选择 “仅常用端口(不走P2P流量到代理)"。
这样就可以避免P2P流量走代理了,如果觉得还不放心,可以再加一个IP地址限制:
在 “访问控制” 页面的 “LAN IP 访问控制” 中,找到 “不走代理的局域网 LAN IP”,在这里设置 bt 机器所在的 IP 即可。
代理服务器信息
在 “高级设置” 页面的 “SOCKS5 代理服务端(全局)” 中
- 服务器:可以设置为 “与全局服务器相同”,也可以设置为使用其他的服务器(这一点比较灵活)
- 本地端口: 这里为了和之前 openclash 的端口保持一致,我设置为 7891
http 代理问题
由于 ShadowSocksR Plus+ 仅提供 socks5 代理,不提供 http 代理,因此需要使用到 privoxy 来将 socks5 代理转为 http 代理。
见下一节。
3 - privoxy
背景
由于 ShadowSocksR Plus+ 仅提供 socks5 代理,不提供 http 代理,因此需要使用到 privoxy 来将 socks5 代理转为 http 代理。
安装 privoxy
命令行安装:
opkg update
opkg install privoxy
也可以在管理页面的软件包中搜索 privoxy 之后安装。
vi /etc/config/privoxy
配置 privoxy
打开 privoxy 配置文件,删除现有内容后输入如下内容(因为我们只需要一个 sock5 转 http 的功能):
config privoxy 'privoxy'
option confdir '/etc/privoxy'
option logdir '/var/log'
option logfile 'privoxy.log'
list listen_address '0.0.0.0:7890'
option forward_socks5 '/ 0.0.0.0:7891 .'
保存后执行
/etc/init.d/privoxy restart
重启 privoxy 即可。