刷了 OpenWrt 之后,大部分人就停在「能用」这一步了。其实花半小时调调设置,网速和延迟的改善还是挺明显的。下面是 10 个实测有效的优化点。

1. 选对无线信道

周围邻居多的话,信道冲突是最常见的速度杀手。先用 iwinfo 看看周边情况:

iwinfo wlan0 scan

2.4GHz 选 1、6、11 三个不重叠信道里人最少的那个;5GHz 一般 36、40、44、48 都行,DFS 信道(52-144)看路由器支不支持。

2. 开硬件转发

这一步对吞吐量影响最大。在 /etc/config/network 里加上 flow offloading:

config device
    option name 'br-lan'
    option type 'bridge'
    option flow_offloading '1'
    option flow_offloading_hw '1'

注意不是所有芯片都支持硬件卸载,MT7621 和 IPQ 系列没问题,其他的先查查。

3. DNS 别用默认的

默认 dnsmasq 够用,但换成 dnsmasq-full 功能多不少:

opkg update
opkg install dnsmasq-full

上游 DNS 推荐:

  • 国内用 223.5.5.5(阿里)或 119.29.29.29(腾讯)
  • 有梯子的话 1.1.1.1 或 8.8.8.8

4. QoS 限速

家里设备多的话,一个人下载就能把全家拖垮。装个 SQM:

opkg install luci-app-sqm

在 LuCI 里设好上下行带宽(填实际带宽的 85%-90%),算法选 cake,效果比 fq_codel 好一些。

5. 开 BBR

TCP 拥塞控制换成 BBR,对高延迟链路有改善:

echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

6. 无线功率别拉满

功率开到最大反而容易和邻居互相干扰。建议值:

  • 2.4GHz:15-20 dBm
  • 5GHz:20-23 dBm

小户型甚至可以再低一点。

7. 关掉不用的服务

路由器内存和 CPU 都有限,少跑几个进程:

/etc/init.d/uhttpd disable    # 如果不用 LuCI 的话
/etc/init.d/dropbear enable   # SSH 留着

8. 考虑 ImmortalWrt

官方 OpenWrt 对国内用户不太友好,ImmortalWrt 在中文支持、软件源和驱动方面做了不少补充,维护也很活跃。

9. 清理日志

路由器存储空间有限,日志堆多了会占内存:

echo "" > /var/log/messages

也可以把日志转发到远程 syslog 服务器,别都堆在本地。

10. 装个监控

luci-app-statistics 可以实时看 CPU、内存和流量。出了问题有数据能查,比盲猜强。

实际效果

在 MT7621 设备上测的,优化前后大概是这样:

  • 延迟:15ms → 8ms 左右
  • NAT 吞吐:600Mbps → 900Mbps 出头
  • 并发连接数翻了一倍

不同硬件结果会不一样,别期望每台都能提这么多。

最后提醒一句:改完记得 sysupgrade -b /tmp/backup.tar.gz 备份配置,万一搞坏了还能恢复。