0%

OpenWrt路由器部署OpenClash手记

最近在老旧的Netgear WNDR4300路由器上成功部署了OpenClash,经过多次调试终于稳定运行。本文将详细介绍在资源受限的OpenWrt设备上配置OpenClash的全过程,包括配置优化、性能调优和故障排除。

前言

为了正常上网,原来在路由器上安装了SSR+配合Hy2 socks5端口代理。但SSR+本身不支持Hy2,无奈只得在路由器上运行hysteria-mips-sf -c config.yaml client。一个节点不可靠,在后端同时运行3个进程。根据可访问性和速度轮换使用。毕竟这样太麻烦了,常常无法访问网络才手动切换。如果我输入节点信息,系统自动测速自动选择最优节点多好。于是有了国庆假期的这次成功折腾。

硬件环境

  • 路由器型号: Netgear WNDR4300 (N750)
  • 闪存: 128MB NAND
  • 内存: 256MB DDR2
  • 处理器: Broadcom BCM47186 800MHz
  • OpenWrt版本: 23.05.2

准备工作

1. 固件选择与准备

由于WNDR4300硬件配置有限,选择合适的固件版本至关重要:

1
2
3
4
5
# 检查可用的存储空间
df -h

# 确保有足够空间安装OpenClash
# 建议至少8MB可用空间

推荐固件特性:

  • 启用USB存储支持(用于扩展空间)
  • 预安装必要的依赖包
  • 优化的内核配置

2. 依赖包安装

1
2
3
4
5
6
7
8
9
10
11
12
# 更新包列表
opkg update

# 安装OpenClash核心依赖
opkg install luci-app-openclash
opkg install clash
opkg install dnsmasq-full

# 安装额外工具(可选)
opkg install curl
opkg install ipset
opkg install iptables-mod-tproxy

OpenClash配置详解

1. 核心配置结构

OpenClash的配置采用YAML格式,主要包含以下几个部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 端口配置
port: 7890
socks-port: 7891
redir-port: 7892
tproxy-port: 7893
mixed-port: 7894

# DNS配置
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- 8.8.8.8
- 1.1.1.1

2. 代理节点配置

本项目配置了多种代理协议以适应不同场景:

VLESS + Reality (推荐)

1
2
3
4
5
6
7
8
9
- name: "Reality-节点"
type: vless
server: your-server.com
port: 443
uuid: your-uuid
tls: true
reality-opts:
public-key: your-public-key
short-id: your-short-id

Hysteria2 (高性能)

1
2
3
4
5
6
7
- name: "H2-高性能"
type: hysteria2
server: your-server.com
port: 8443
up: 50
down: 100
auth_str: your-auth

VMESS (兼容性好)

1
2
3
4
5
6
7
- name: "VMess-备用"
type: vmess
server: your-server.com
port: 443
uuid: your-uuid
alterId: 0
cipher: auto

3. 代理组策略

为了实现智能分流和负载均衡,配置了多层次的代理组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
proxy-groups:
# 自动选择组 - 延迟最优
- name: "♻️ 自动选择"
type: url-test
proxies:
- "Reality-节点"
- "H2-高性能"
- "VMess-备用"
url: "http://www.gstatic.com/generate_204"
interval: 300

# 手动选择组
- name: "🔰 节点选择"
type: select
proxies:
- "♻️ 自动选择"
- "Reality-节点"
- "H2-高性能"
- "DIRECT"

4. 规则体系

实现国内外流量智能分流的核心规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rules:
# 局域网直连
- DOMAIN-SUFFIX,lan,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT

# 国内服务直连
- GEOIP,CN,DIRECT
- DOMAIN-SUFFIX,cn,DIRECT

# 广告拦截
- DOMAIN-SUFFIX,googlesyndication.com,REJECT
- DOMAIN-SUFFIX,googleadservices.com,REJECT

# 国外服务代理
- MATCH,🔰 节点选择

性能优化策略

1. 内存优化

针对WNDR4300的256MB内存限制:

1
2
3
4
5
6
7
8
# 节省内存的配置
mode: rule
log-level: info
ipv6: false # 禁用IPv6节省资源

# Geodata优化
geodata-mode: true
geodata-loader: memconservative

2. DNS优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dns:
enable: true
listen: 0.0.0.0:7874
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16

# 最小化DNS配置
nameserver:
- 223.5.5.5 # 阿里DNS
- 119.29.29.29 # 腾讯DNS

fallback:
- 8.8.8.8 # Google DNS
- 1.1.1.1 # Cloudflare DNS

# 缓存配置
cache-size: 1000
cache-ttl: 600

3. 连接优化

1
2
3
4
5
6
7
# 连接管理
global-client-fingerprint: chrome
keep-alive-interval: 30

# 性能调优
unified-delay: true
tcp-concurrent: true

故障排除

1. 常见问题

问题1:OpenClash启动失败

症状: 无法启动OpenClash服务
解决方案:

1
2
3
4
5
6
7
8
# 检查配置文件语法
clash -t /etc/openclash/config.yaml

# 检查端口占用
netstat -tlnp | grep 7890

# 查看系统日志
logread | grep openclash

问题2:DNS解析异常

症状: 部分网站无法访问
解决方案:

1
2
3
4
5
6
# 重置DNS配置
dns:
enable: false
# 保存并应用
# 然后重新启用
enable: true

问题3:连接速度慢

症状: 代理延迟高
解决方案:

1
2
3
4
5
# 调整URL测试间隔
proxy-groups:
- name: "♻️ 自动选择"
interval: 600 # 增加到10分钟
tolerance: 100 # 增加容错范围

2. 性能监控

查看运行状态

1
2
3
4
5
6
7
8
# 查看Clash进程
ps | grep clash

# 查看内存使用
free -m

# 查看连接数
cat /proc/net/netfilter/nf_conntrack | wc -l

日志分析

1
2
3
4
5
# 实时查看日志
logread -f | grep openclash

# 查看错误日志
cat /tmp/openclash.log | grep ERROR

安全配置

1
2
3
4
5
6
7
8
9
# 修改默认密码
secret: "your-secure-password"

# 限制LAN访问
allow-lan: true
bind-address: "192.168.1.1"

# 外部控制器配置
external-controller: 0.0.0.0:9090

维护与更新

1. 定期维护

1
2
3
4
5
6
7
8
9
# 更新GeoIP数据库
wget -O /etc/openclash/Country.mmdb \
https://github.com/Loyalsoldier/geoip/releases/latest/download/Country.mmdb

# 更新规则集
/etc/openclash/update_rules.sh

# 清理日志
> /tmp/openclash.log

2. 配置备份

1
2
3
4
5
6
7
8
9
# 备份配置
cp /etc/openclash/config.yaml /mnt/usb/openclash_backup.yaml

# 自动备份脚本
cat > /etc/cron.daily/openclash_backup << 'EOF'
#!/bin/sh
DATE=$(date +%Y%m%d_%H%M%S)
cp /etc/openclash/config.yaml /mnt/usb/config_$DATE.yaml
EOF

性能测试

1. 延迟测试

1
2
3
4
5
# 测试代理延迟
curl -x http://127.0.0.1:7890 http://www.gstatic.com/generate_204

# 测试DNS解析
nslookup google.com 127.0.0.1:7874

2. 吞吐量测试

1
2
3
4
5
# 下载速度测试
wget -O /dev/null http://speedtest.net/speedtest-config.php

# 并发连接测试
ab -n 100 -c 10 http://example.com/

总结

在Netgear WNDR4300这样的老旧路由器上成功运行OpenClash需要:

  1. 合理的配置优化: 禁用不必要的功能,减少内存占用
  2. 精细的规则设计: 平衡性能和功能性
  3. 定期的维护更新: 保持规则库和GeoIP数据库更新
  4. 完善的监控机制: 及时发现和解决问题

通过以上配置,WNDR4300能够稳定运行OpenClash,为家庭网络提供正常上网服务,同时保持良好的性能表现。


注意: 本文配置中的敏感信息已隐去,实际使用时请替换为自己的服务器信息和认证密钥。
后记:这次安装足足费了我两个整天的宝贵假期时间。这种为了正常访问网络而付出的代价,是对人类才智的巨大浪费。


创建时间:2025-10-04 13:04