这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

设置OpenWRT的网络代理

介绍在 OpenWRT 下进行网络代理

1 - 设置OpenWRT的openclash

通过 openclash 进行网络代理

安装

我使用的 openwrt 固件默认安装了 openclash:

http://192.168.0.1/cgi-bin/luci/admin/services/openclash

配置

在配置文件订阅中,添加订阅地址,然后保存,再更新配置。

也可以启用自动更新,比如每周一更新一次。

启用

启动后可以通过 openclash 菜单中的 “运行日志” 来查看启动过程,尤其是启动失败的原因。

常见故障

启动失败

openclass 启动失败,运行日志显示:

错误: 无法获取General部分的转发端口设置, OpenClash 使用原始配置文件启动失败
错误: 无法获取DNS部分的运行模式设置, OpenClash 使用原始配置文件启动失败
错误: 无法获取DNS部分的监听端口设置, OpenClash 使用原始配置文件启动失败
错误: OpenClash 启动失败,尝试使用原始配置文件启动...
第六步: 等待主程序下载外部文件...

解决方案是打开 “插件设置” -> “版本更新”,点击 “检查并更新” 来更新各个内核版本:

  • [Dev] 当前内核版本
  • [TUN] 当前内核版本
  • [Meta] 当前内核版本

注意要关闭lan口的IPV6分配和IPV6 DHCP,否则会有如下提示:

2024-01-28 15:14:02 警告:OpenClash 启动成功,检测到您启用了IPv6的DHCP服务,可能会造成连接异常!

参考:

避免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+

通过 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

通过 privoxy 将 socks5 代理转为 http 代理

背景

由于 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 即可。

参考资料