OpenWrt进阶教程之常用运维操作指南

随着越加深入的日常使用,会遇到一些新问题需要解决,免不了进行运维操作,这里汇总介绍 OpenWrt 系统下的常用运维操作技巧,助你快速解决最常见的使用问题。

遵纪守法

虽然软件、网络等技术产物是虚拟的,但最终是作用于现实生活中,与大众的日常生活息息相关,所以必然要接受各种法律法规的管控,各类技术人员首先需要学习并牢记当地的法律法规,以免误入歧途,玩火自焚。

在中国工作和生活的技术人员请学习如下法律法规:
《中华人民共和国网络安全法》《计算机信息网络国际联网安全保护管理办法》《计算机软件保护条例》《中华人民共和国计算机信息系统安全保护条例》

友情提醒

请不要把桌面系统的使用习惯带入到路由器的使用中,路由器系统被设计用于长期开机运行,其担当的是网络基础设施的角色,正常情况下并不需要过多的人工维护,无需“清理内存”、“定时重启”等操作。

如果发现运行一段时间后总是会有各种异常情况,请排查下列可能的因素:
1、已运行的各类软件是否有配置错误。
2、已运行的软件是否有 Bug(软件缺陷)。
3、路由器硬件是否可能有故障。
4、路由器的硬件性能,是否无法满足当前的应用需求。

常见网络故障

网络不稳定

表现为客户端网络延迟波动太大,丢包率很高,这时可以使用 ping 命令测试局域网的网关,观察长时间的 ping 命令延迟是否稳定,通过网线连接时, ping 局域网的网关延迟最多不应超过10ms(无线不应超过100ms),如果延迟波动异常,则需要登录网关管理界面,查看是否负载过高,有无其它异常。

如果测试客户端到局域网的网关,网络延迟正常,且不丢包,则说明网络不稳的因素在网络服务器或网络运营商。
先确认网络服务器是否稳定,最后再联系网络运营商反馈网络问题。

拓扑检查:检查各种网线是否连接正确,是否有错误的连接导致局域网出现“网络回路”。
网线检查:检查网线是否过于老化,有无破损,网线水晶头是否老化,并进行相应的维护操作。
无线检查:检查周围无线信号情况,根据实际情况判断是否应当调整无线设置。
客户端检查:检查客户端相关软硬件是否可能存在故障,并进行对应的维护操作。

网络大范围异常

表现为大量网络服务不可用,基本处于断网状态。首先排查网关路由器开启了哪些软件功能,是否存在对网络有影响的功能或规则,检查相关软件设置是否正常,尝试关闭所有可能影响网络的功能或规则,如果网络仍然不正常,这时一般是网络运营商的问题,需要拨打客服电话报修处理。

出现这种基本断网的故障,除了运营商地区线路故障或检修外,一般是运营商检测到你的网络流量异常,专门执行了封锁策略所致。

可能导致被网络运营商主动封锁的行为:PCDN 业务、非法网络服务。

PCDN 全称 P2P CDN,即 P2P 内容分发网络,现在常见的各种“闲置带宽赚钱”的项目都属于 PCDN 业务,通过在家庭网络上运行指定的设备或程序,靠上传流量赚取积分,然后用积分换取现金奖励。

PCDN 容易被运营商封锁的原因,本质上是因为运营 PCDN 业务的公司,利用广大的家庭宽带用户,为其谋取了商业利益,但却没有给网络运营商分配利益。

PCDN 业务运行的原理,运行 PCDN 程序的家庭宽带等于一个 CDN 节点,通过运营 PCDN 项目的公司进行总控,然后向外售卖CDN 服务,再分配少部分收益给运行 CDN 节点的用户。实际上分配给用户的利益,谈不上赚钱,能保证不亏本已是万幸,成本包括:电费、宽带费、设备损耗、房屋租金等。

正规的 CDN 服务,通常是在各地的网络运营商机房,购买服务器来搭建 CDN 网络,需要给网络运营商支付高昂的费用。

非法网络服务,即有关部门规定的,不允许在家用宽带上运行的各种网络服务,例如:搭建网站、搭建各类网络服务器、各种“挖矿”服务等。

SSH 与 SCP

OpenWrt 作为一款基于 Linux 的系统,同样在运维方面也支持常见的 SSH 与 SCP 管理方式,SSH 即远程命令行操作界面,SCP 则多用于配置文件管理。

SSH 登录

各类支持 SSH 登录的客户端均可用于管理 OpenWrt,这里推荐一款常用的 Windows 软件 putty

当然 OpenWrt 上也可以安装另一款软件,直接通过网页界面进行 SSH 管理。luci-i18n-ttyd-zh-cn

命令行方式管理 UCI 配置文件参数

OpenWrt 中很多启动脚本需要读取 /etc/config 目录下的 UCI 配置文件参数,有时可能界面不完善,或者网页界面不可访问,则可以通过默认的 UCI 命令进行管理。(也可以上传配置文件覆盖,或者通过 vi 命令进行编辑。)

示例一:不小心去掉了 uhttpd 的启用选项,导致网页界面无法访问,则可以通过命令行方式修改 uhttpd 的 UCI 配置文件参数。

# 设置 UCI 配置文件 uhttpd 中的 main 节点下的 enabled 参数为 1
uci set uhttpd.main.enabled=1

# 提交配置文件,即保存文件。
uci commit uhttpd

# 重载 uhttpd 启动脚本,以重新读取 UCI 配置文件中的参数。
service uhttpd restart

示例二:为没有网页界面的 OpenWrt 配置 LAN 口和 WAN 口参数。

# 修改 LAN 口 IP 地址。
uci set network.lan.ipaddr=192.168.11.1

# 提交配置文件,即保存文件。
uci commit network

# 重载 network 启动脚本,以重新读取 UCI 配置文件中的参数。
service network restart

-------------------------------------------------------------------------------------

# 修改 WAN 口协议为 PPPoE
uci set network.wan.proto=pppoe

# 设置拨号账号。
uci set network.wan.username=12345678

# 设置拨号密码。
uci set network.wan.password=1111

# 设置自动获取 IPv6
uci set network.wan.ipv6=auto

# 提交配置文件,即保存文件。
uci commit network

# 重载 network 启动脚本,以重新读取 UCI 配置文件中的参数。
service network restart

更多 UCI 命令说明请访问 OpenWrt 官方文档:https://openwrt.org/docs/guide-user/base-system/uci

SSH 远程登录

系统默认的 SSH 配置仅允许局域网设备登录,如果你想远程登录 SSH,则需要做如下更改。

注意:如果你开放了远程 SSH 登录,请做好必要的安全防护,以免遭受网络攻击。

SSH 密钥登陆

为提高安全性,可以禁用密码方式的 SSH 登录,转为使用 SSH 密钥登录。

OpenWrt 默认使用的是 Dropbear 作为 SSH 服务器,支持各种常见的密钥类型,可使用已有的密钥文件,或重新生成。

如果要重新生成密钥,需要先安装软件包:openssh-keygen

1、SSH 登录路由器,执行命令(默认为 RSA 密钥):ssh-keygen
按步骤操作完毕后,密钥文件存放在 /root 目录下。

提示:推荐使用更安全的 DSA 密钥,命令:ssh-keygen -t dsa

可选操作:如果想对私钥文件进行密码保护,则按需输入密码即可。
设置了密码保护的私钥,在使用时需要输入这个密码才能连接服务器。

2、下载生成的密钥对文件备用。

3、将后缀名为 .pub 的公钥文件拖放到“系统”-“管理权”-“SSH 密钥”选项卡即可。

后缀名为 .key 的文件是私钥文件,用于各类 SSH 客户端登录服务器时进行验证。

4、然后修改 SSH 访问参数,取消勾选“密码验证”选项,以禁止密码登录 SSH。

备注:Dropbear 的密钥配置文件存放路径:/etc/dropbear/authorized_keys

也可按需安装软件包 openssh-server 替换默认的 Dropbear,
操作步骤为先将 Dropbear 的端口号修改为其它端口,再安装 openssh-server 并启动,然后再按需配置 openssh-server 的配置文件即可,openssh-server 配置用法和 Linux 系统相同。

SCP 文件管理

日常运维中时常需要进行各类系统文件管理,这时就可以用到系统自带的 SCP 服务,在 Windows 端推荐使用 WinSCP

它的界面与传统的 FTP 之类的文件管理器一样,可以很直观的进行文件管理操作,SCP 与普通文件管理器的区别在于,它可以直接修改文件的权限,这对于 Linux 类系统是非常方便的。

注意:SCP 仅用于进行简单的文件管理,不可作为常规的文件管理器,传输大文件会出错,且传输速率低。

如果你仅仅只需要进行简单的上传、重命名、删除等操作,可以直接使用系统集成的网页版文件管理器,在“系统”-“文件助手”

DHCP 管理

自动按顺序分配 IP

OpenWrt 使用 Dnsmasq 来提供 DHCP 服务,默认分配 IP 地址并不是像传统路由器那样按顺序分配,而是根据客户端 MAC 地址的哈希值来为客户端分配 IP 地址,虽然并没有按照数字顺序分配,但实际上每次分配到的 IP 都是一样的,在没有人为干涉的情况下,通常客户端 IP 地址将长期保持不变。

如果你希望 OpenWrt 按照传统路由器那样,按数字顺序分配 IP 地址,则启用“网络”-“DHCP/DNS”-“高级设置”中的“顺序分配 IP”选项即可。

静态租约

默认情况下,DHCP 服务会随机为局域网设备分配 IP,有时需要为局域网设备按指定要求配置固定的 IP 地址,这时就需要用到 DHCP 服务中的“静态租约”功能,以便通过路由器进行固定的 IP 分配,在“网络”-“DHCP/DNS”-“静态地址分配”中按需配置即可。

通告不同的 DNS

默认情况下,路由器通过 DHCP 为局域网设备分配 IP 时,通常会将自己的 IP 作为 DNS 服务器地址,如果你需要局域网设备直接使用其它的 DNS 地址,则可以使用 DHCP 服务下发其它 DNS 地址。在“网络”-“接口”-“LAN”-“DHCP 服务器”-“高级设置”中按需配置即可。

默认情况下,路由器通告自己为 DNS 服务器。

例如,想让局域网设备直接访问 DNS 服务器 119.29.29.29 和 223.5.5.5,则按下图配置即可。

然后局域网设备重新连接网络就可以自动获得新的 DNS 地址信息。

旁路网关模式(旁路由)

需求一:有时可能需要在局域网内部署多台路由器,分别安装不同的软件或防火墙规则,但同一个局域网内只允许有一个网关,其它路由器上的软件却必须在网关模式下才能有效,但是不想使用二级路由模式。

需求二:局域网内原本的网关路由(主路由)不能更换,需要增加路由器接入同一个局域网中,然后让部分上网设备通过这个新增的路由器上网。

这类需求可以通过 DHCP 服务来实现旁路网关模式,指的是将新增路由器作为普通的上网客户端接入局域网中,然后通过 DHCP 服务自动给上网设备按需分配不同的网关,以实现让部分上网设备使用旁路网关联网的目的。

注意:此方法只适用于使用 Dnsmasq 作为 DHCP 服务器的局域网,提供 DHCP 服务的路由器可以是主路由,也可以是旁路由。也可以直接手动配置上网客户端的 IP 参数来使用旁路由。

以 OpenWrt 路由器为例:
1. 首先需要修改 LAN 口配置,设定一个局域网 IP ,并补齐网关地址和 DNS 地址。


2. 如果由主路由提供 DHCP 服务,则应当关闭旁路由的 DHCP 服务。
注意:作为旁路网关使用时,不可完全停用 Dnsmasq,应勾选 LAN 接口-“DHCP 服务器”-“常规设置”-“忽略此接口”选项。

3. 禁用 LAN 接口的 IPv6 服务,以避免局域网设备获得多个临时 IPv6 地址,详情参阅: https://iyzm.net/openwrt/478.html


4. 将旁路由接入局域网。(连接 LAN 口,然后重启一次旁路由。)


提示:“旁路网关”并不是什么特别深奥的功能,其本质上就是一台普通的上网设备,局域网其他设备通过“旁路网关”来上网而已,等同于一台局域网代理上网服务器,因功能上具备一些路由器特性,也被有些网友称为“旁路由”。

提示:如果主路由的网关 IP 与旁路由系统的默认 LAN 口 IP 一样,例如使用 OpenWrt-Life 固件,默认 LAN 口 IP 为 192.168.9.1,这种情况下直接在 “IPv4 网关” 输入 192.168.9.1 会提示错误,此时应当先修改 “IPv4 地址”(保存并应用),然后再补齐网关和 DNS 地址即可。

5. 登录负责局域网 DHCP 服务的路由器,打开 “网络”-“DHCP/DNS”-“编辑配置”,按需配置 Dnsmasq 的参数即可,确认配置无误后,点击“保存并应用”按钮后即可生效。

如果局域网内的 DHCP 服务器不是 Dnsmasq,则可直接手动配置客户端 IP 来使用旁路网关上网。

通过 DHCP 服务自动分配不同的网关示例效果:

为旁路网关启用 SNAT

上面的旁路网关示例是基于 OpenWrt-Life 固件实现的,如果当前网络中的主网关(主路由)是其它系统,导致客户端使用旁路网关时无法正常上网,或者你觉得某些应用未达到预期效果,那么此时可以通过配置旁路网关的防火墙,启用防火墙的 SNAT 功能,以便旁路网关彻底代理客户端的所有流量。

打开 “网络”-“防火墙”-“NAT 规则”,参照如下示例添加所需规则。

局域网 IP 地址扩容

默认情况下局域网可用 IP 为 254 个,大多数情况下完全够用。
例如:192.168.9.1-192.168.9.254,注意:0 和 255 IP不能使用,0 代表这个网段,255 则是这个网段的默认广播地址。

有时默认的局域网 IP 地址数量会变得不够用,例如饭店、商场等人员密集场所,这时就需要扩容局域网 IP 地址数量。

根据实际需求,修改 LAN 口参数,配置合适的 “IPv4 地址” 和 “IPv4 子网掩码” 即可,主要依靠子网掩码来划分 IP 范围。

例如子网掩码:255.255.248.0(表示可用 IP 地址数量为 2046个)
以此为例,起始 IP 从 192.168.0.1 开始,至 192.168.7.254 结束,
可用 IP 地址范围: 192.168.0.1-192.168.0.255,192.168.1.0-192.168.1.255……192.168.7.0-192.168.7.254

注意:如果你要手动为客户端配置 IP,第一个 0 和最后一个 255 IP 地址是不能给上网设备用的。

注意:仅仅扩容 IP 地址数量是不够的,主路由需要更强的 CPU 和更大的 RAM 容量,建议配备高性能软路由,以此支持大规模上网设备。

如需更详细的 IP 计算辅助,推荐 “IP 计算器”:https://ipjisuanqi.com/

OpenWrt VLAN 配置说明

有时会需要为路由器配置 VLAN 接口,用于满足各类复杂的网络应用需求,尤其是在企业网络环境中,下面介绍在 OpenWrt 系统上的基础 VLAN 配置说明,以便运维人员快速上手。

以下图为例,演示相关 VLAN 配置参数填写规范。

VLAN 配置示例说明

LAN1 端口:用于 VLAN 1,作为 OpenWrt 路由器自身的局域网。

LAN2 端口:用于 VLAN 10,将外部的 VLAN10 网络接入 OpenWrt 路由器,且与自身的局域网互通。

LAN3 与 LAN4 端口:用于 VLAN20、21、22,将外部的 VLAN20 网络接入 OpenWrt 路由器,LAN3 端口也可连接二层交换机或电脑等,使得电脑和 OpenWrt 路由器均能接入 VLAN20 网络,而 VLAN 21、22只属于借道通过,不接入 OpenWrt 路由器。

VLAN 配置项说明:

未标记的出口:表示允许具有此 VLAN ID 号的数据包通过,但出站时移除 VLAN ID 号标记,同一个物理端口只允许一个 VLAN ID 号使用“未标记”,在各类企业路由系统中称之为 “Access 端口”,一般用于连接计算机等设备。

已标记的出口:表示允许具有此 VLAN ID 号的数据包通过,出站时仍然打上 VLAN ID 号标记,对端需要具备同样 VLAN ID 号的端口才能收到此数据包,在各类企业路由系统中称之为 “隧道接口”、“trunk 端口”。

不参与:表示此 VLAN ID 号的数据包不通过此端口,等同于禁用端口。

DSA 交换机配置

21.02 版 OpenWrt 固件,大多数机型已使用 DSA 交换机驱动,打开“网络”-“接口”-“设备”选项卡来配置,配置选项与旧版界面基本一样,只是多了一个“主 VLAN ID”选项。

可使用默认的 br-lan 来配置 VLAN 接口,也可按需将网口从 br-lan 中剥离,再新建一个设备名称,然后再按需配置 VLAN 接口。

打开 “网桥 VLAN 过滤” 选项卡,按需配置,此处按照上面的 VLAN 示例图进行配置,配置完毕后点击保存。

注意:配置完 VLAN 接口后不要点击“保存并应用”按钮,应先修改局域网 LAN 口的设备并保存,最后确认无误后再点击“保存并应用”按钮以使修改生效。

在接口界面,可按需添加接口,绑定所需的 VLAN 接口,以使 OpenWrt 路由器接入对应的 VLAN 网络,防火墙区域可自行按需调整。

注意:添加新接口时的名称可输入大写或小写,会原样保存至配置文件中,但此界面会始终以大写字母显示,如果要在其它地方调用接口名称,请留意大小写问题。

旧版交换机配置

21.02 版 OpenWrt 固件, 部分机型未适配 DSA 交换机驱动,这些机型使用旧版的交换机界面,参照如下示例配置。

打开“网络”-“交换机”界面,按需调整配置,默认的 VLAN 1 用于路由器自身的局域网,一般不用改动。

注意:使用旧版交换机界面的机型,LAN 口无需修改设备。

WAN 口 VLAN 配置(单口复用)

有时需要为 WAN 口配置多个 VLAN,例如家庭用户光猫单线复用实现上网与 IPTV 电视盒子共用,
WAN 口一般都是单端口,无法启用 “网桥 VLAN 过滤”,此时需要通过 “添加设备配置” 的方式来绑定 VLAN 端口。

OpenWrt IPv6 指南

当前互联网的 IPv4 地址池已彻底分配完毕,因此 IPv6 地址也得以基本普及,使用 OpenWrt 的各技术人员有必要了解相关的 IPv6 基础信息。

  • IPv6 地址使用十六进制表示法,共由8个字段组成,每个字段由4个十六进制数组成,每个字段由英文冒号分隔。
  • 完整的 IPv6 地址转换为二进制则为128位,IPv6 地址的每个字段占用16位。
  • IPv6 地址规范中,前4个字段用于表示网络前缀,后4个字段用于表示设备地址(由设备 MAC 地址根据 EUI-64 规范生成)。
  • IPv6 没有“子网掩码”,只有“网络前缀”,只要各设备的“网络前缀”相同,就表示处于同一个局域网内。
  • 如果要用浏览器直接访问 IPv6 地址,需要使用中括号标示。例如:http://[2408:8206:18e3:2f84:aa27:88bb:55fb:8741]

拨号上网模式 IPv6

如果是 OpenWrt 拨号上网的方式,那么默认配置即可正常使用 IPv6,如果发现并未获得公网 IPv6 地址,请联系宽带运营商客服,或咨询当地运维人员。

  • 网关地址一般表示路由器自身,处于同网段或子网段的其它设备均可以访问网关地址。
  • 以 fe80 开头的 IPv6 地址称为链路本地地址,不参与网络通讯,仅用于自动地址配置、IPv6 邻居发现等。
  • IPv6 网络前缀由网络运营商下发,这是一个地址池,本地路由器可以根据这个前缀继续划分子网,类似于 IPv4 的子网掩码。

二级路由 IPv6

如果是作为二级路由器使用,默认配置仍然可以正常使用 IPv6。

处于上级网络的设备,也可以访问二级路由的网关地址。

IPv6 中继模式

如果发现 WAN 口有公网 IPv6 地址,但局域网其它设备未获得公网 IPv6 地址,这说明上级路由器没有下发 IPv6-PD(网络前缀),这种情况常见于光猫拨号的环境,这时需要修改 OpenWrt 的接口配置,以使得局域网设备能获取由上级路由器分发的公网 IPv6 地址。

首先修改 LAN 口配置,将“RA 服务”、“DHCPv6 服务”、“NDP 代理”这三个选项全部修改为“中继模式”。

然后修改 WAN 口配置,勾选 “IPv6 设置” 选项卡下的 “指定的主接口” 选项,随后让局域网设备重新连接网络,则应当可以获取到公网 IPv6 地址。

配置局域网 IPv6 网络

OpenWrt 默认情况下,每次 “恢复出厂设置” 后,均会按照 IPv6 本地地址规范,随机生成一个局域网 IPv6 地址前缀,如有需要也可以自行手动配置,但需要遵守网络规范。详情参阅:RFC 4193

IPv6 地址简化表示法

完整的 IPv6 地址共由32个十六进制字符组成,不便于记忆与书写,所以默认引入了一种简化表示法,即遇零简化法。

例如完整的 IPv6 地址:2408:8207:18ee:6790:0000:0000:0000:0001
简化后的 IPv6 地址:2408:8207:18ee:6790::1

例如完整的 IPv6 地址:fd23:822a:5a5a:0000:6038:e0ff:fec9:e830
简化后的 IPv6 地址:fd23:822a:5a5a:0:6038:e0ff:fec9:e830

例如表示 IPv6 中的任意地址:0000:0000:0000:0000:0000:0000:0000:0000(等同于 IPv4 中的 0.0.0.0)
简化后的 IPv6 中的任意地址:::

  • 连续的零字段可以用双冒号代替。
  • 以零开头的字段,则可以省略开头的零以及与其连续的零。
  • 一个字段全是零,则该字段只写一个零即可。
  • 一个简化后的 IPv6 地址中,双冒号只能使用一次。
  • 不管是使用完整的 IPv6 地址,还是简化后的地址,都是可以正常使用的。

防火墙管理

路由器作为网关设备时,防火墙的管理也是日常需要接触的部分,OpenWrt 的防火墙规则可以通过界面进行直观的管理,无需熟记复杂的命令行操作,下面介绍最常见的防火墙使用示例。

端口转发

当想从互联网访问某个局域网设备上的服务时,则需要配置防火墙端口转发,将公网 IP 的某个端口转发给局域网 IP,以达到内网服务对外公开的效果。在“网络”-“防火墙”-“端口转发”界面按需配置即可。

注意:“端口转发” 规则仅适用于 IPv4 地址,IPv6 地址对公网开放端口请使用 “通信规则”。

打开端口/通信规则

当你想把部署在路由器上的服务对外公开时,则需要配置“通信规则”,按需打开端口,例如你在路由器上安装了amule,想对外开放这个软件监听的端口。在“网络”-“防火墙”-“通信规则”界面按需配置即可。

OpenWrt 开放局域网设备的 IPv6 端口

如果你想开放局域网内设备的 IPv6 端口,则不能使用“端口转发”规则,只能添加 “通信规则”,一般直接在目标地址中按需选择 IPv6客户端即可。

如果客户端获得的是动态 IPv6 地址,则可以手动输入设备 ID 作为目标地址,即 IPv6 地址中的最后四段,

目标地址示例:::b963:6572:af97:9cf9/0

注意:例如 Win10 系统会生成“临时 IPv6 地址”,不要使用临时地址的最后四段,应使用固定不变的四段设备 ID

NAT1 转发模式

通过路由器上网都是属于转发模式(NAT),一般为 NAT3 模式(PortRestrictedCone),绝大多数情况下都没有任何问题,但有时一些特殊软件,比如一些游戏程序可能需要 NAT1 模式(FullCone),允许无限制对外公开 UDP 端口,以此获得更好的联机体验。

提示:NAT 上网方式只存在于 IPv4 网络,因为通常都是整个局域网的设备共用一个公网 IPv4 地址来上网,所以需要 NAT 地址转换。

如果想要为所有局域网设备启用 NAT1 转发模式,勾选防火墙中 WAN 口的“完全锥型”选项即可。

提示:如果想用 NAT 测试软件验证,而上网客户端是 Windows 之类的系统,则还需要关闭系统自带的防火墙,才能正确检测 NAT1 是否生效,中国用户建议使用测试地址:stun.qq.com

注意:启用 NAT1 模式可能导致高网络风险,请酌情启用。

NAT 问题解决实例

某用户反馈其使用 Windows 10 系统,Xbox 游戏联机体验差,在运行 Xbox 网络测试后,总是提示有问题。

技术人员上门排查后,其使用的是“中国联通”家用宽带,有公网 IP 地址,但其电脑连接的是二级路由器,所以任何尝试解决 NAT 问题的操作均无效。

经过技术人员反复验证后,已确认该 NAT 问题的正确解决办法,将这台 Windows 电脑连接至主路由即可,并不需要任何其它操作。

在全方位的测试中,我们发现 Xbox 游戏联机并不需要主路由开启 “NAT1 模式”,而 Windows 系统自带的防火墙不能关闭,否则 Xbox 的网络测试会一直提示 “服务器连接:已阻止”。

DMZ 端口转发

DMZ 全称 Demilitarized Zone,用于设置一个内网 IP 对外部网络完全公开,便于提供各类公共网络服务。

一般常见的路由器系统有专门的 DMZ 配置项,OpenWrt 系统并未设立专门的 DMZ 配置项,如需使用 DMZ 功能请手动配置“端口转发”参数,参照下图示例即可。

注意:当网关 OpenWrt 系统配置了 DMZ 功能的端口转发规则后,如果想让部分端口转发至其它局域网 IP ,应将其端口转发规则移动到 DMZ 规则前面。

阻止局域网 IP 访问内网

例如想阻止被设为 DMZ 的 IP 访问局域网,需在“防火墙”-“通信规则”添加一个规则,则参照下图设置即可。

重定向 DNS 查询(DNS劫持)

有时不希望上网客户端自行使用其它的 DNS 服务器,则可以在网关路由器上使用防火墙规则对所有 DNS 查询进行重定向,以将所有 DNS 查询转发至特定的 DNS 服务器,这样即使上网设备自行配置了其它 DNS 服务器,也是没有任何效果的。

打开“网络”-“防火墙”-“自定义规则”,按需添加防火墙规则即可。

# 将所有发往外网 53 端口的数据包重定向至此设备的 53 端口,即劫持所有通过此网关转发的 DNS 查询数据包。

# IPv4
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

# IPv6
ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

NAT 转发加速

OpenWrt 系统默认情况下对上网数据包使用的是普通转发模式,即发往外网的数据包全部由 CPU 处理,一般路由器 CPU 性能较弱,可能无法跑满千兆带宽的速率,这时可以尝试启用 “NAT 转发加速” 功能,使用特定的转发加速机制来提升上网数据包转发效率,使得可以跑满带宽,并有效降低 CPU 负载。

打开 “网络”-“防火墙”-“路由/NAT 分载”,按需启用即可。

“软件流量分载” 是通用选项,任何机型都可以尝试启用。
“硬件流量分载” 只有部分机型有效,需要相关硬件支持。

注意:此功能可能会与部分软件不兼容,导致网络出现异常情况,请自行判断是否应该启用。

多核处理器还可以尝试启用 “网络”-“接口”-“全局网络选项”-“数据包引导” 功能,可能有助于进一步提高网络速度,也可能会起反作用,请自行判断是否应该启用。

命令行方式软件管理

首先你需要了解 OpenWrt 的软件包属性,OpenWrt软件安装文件后缀名为 “ipk” ,其本质上属于一个压缩包文件,里面包含可执行文件,安装脚本等信息,执行安装过程时,由系统内的 opkg 软件包管理系统,解析 ipk 安装包内的脚本信息,并执行相应的操作,最终完成安装。

OpenWrt 属于一款模块化的精简版 Linux 系统,所以它的软件包往往并不能单独使用,安装一个软件可能还需要安装其它的软件包(依赖)才能正常使用,类似于 Windows 上安装一些软件,还需要额外安装 C++、Directx 之类,好在软件列表内一般已经写好了依赖关系,安装一个 ipk 即可自动把需要的其它 ipk 连带着一起安装上,当然需要处于联网状态下才行。

注意:因为 OpenWrt 属于开源系统,不同的人编译的 ipk 文件,很可能其附带的依赖关系是不一样的。

除了可以使用界面管理软件,还可以直接使用命令行操作,下面就介绍最常用的命令行方式进行软件管理。

普通安装

OpenWrt 系统安装软件分为两步,第一步需要先更新软件列表,将包含软件包信息的索引文件下载到本地,这样才能执行后续的安装软件命令,建议每次安装之前都更新一次软件列表,以便获取最新的软件包索引。

# 更新软件包索引文件
opkg update

第二步执行安装软件命令,例如安装带中文界面的 samba4(以 OpenWrt-Life 固件为例)

opkg install luci-i18n-samba4-zh-cn

批量安装软件

想要一条命令就安装多个软件,例如安装建站三件套 mariadb、php8、nginx(以 OpenWrt-Life 固件为例)

opkg update
opkg install luci-i18n-mariadb-zh-cn luci-i18n-php8-zh-cn luci-i18n-nginx-zh-cn

手动上传并安装

例如从其它途径下载了 ipk 安装包文件,首先需要将 ipk 文件上传到系统目录,一般推荐 tmp 目录,重启就自动清空。

cd /tmp
opkg install *.ipk

注意:如果你上传了多个 ipk 文件,且这些 ipk 文件需要按照顺序安装,则不要使用上述命令,应明确输入对应的文件名分别安装。

强制安装

例如你从网络下载了某个 ipk 安装包文件,但是它附带的依赖关系与你使用的 OpenWrt 系统不符,使用正常的安装命令则提示安装失败,但你确信此软件肯定能在当前系统正常运行,那么可以使用强制安装命令将其装入系统。

# 忽略依赖项失败,强制安装。
opkg install test.ipk --force-depends

# 不安装任何依赖包,只安装这个 ipk 文件。
opkg install test.ipk --nodeps

卸载软件

有安装就有卸载,OpenWrt 卸载软件也很简单,当然卸载时仍然会根据 ipk 文件的依赖关系进行处理,默认规则为卸载一个软件,相关联的软件也会被连带着卸载掉,如果其它关联的软件刚好被另外一个软件使用着,则不会被卸载。

opkg remove luci-i18n-samba4-zh-cn

启动脚本管理

有些软件的启动脚本可能不太规范,无法与界面配合,或暂时没有专用界面,则可以通过系统菜单来管理软件的启动脚本,例如停止、重启软件,或禁止开机自启动等,前往“系统”-“启动项”界面进行操作即可。

恢复出厂

路由器一般都有 Rest 按钮,在路由器已正常开机的状态下,按住 Rest 按钮10秒左右再松开,即可自动恢复出厂设置, 如果设备没有 Rest 按钮,也可以使用命令方式执行恢复出厂。

# 执行恢复出厂命令,会提示是否确认执行。
firstboot

# 重启系统
reboot

正确格式化硬盘

日常使用中免不了需要为路由器配备硬盘,以存储各类数据,OpenWrt 属于 Linux 类系统,如果你打算为路由器配备一块硬盘长期使用,那么将硬盘格式化为 ext4 是最佳选择。

详情参见:https://iyzm.net/openwrt/72.html

高级访客网络(子网隔离)

有时可能需要在同一个路由器上部署多个局域网段,用于进行子网隔离,以避免网络应用的互相干扰,或为了提高网络安全性。

以无线路由器创建访客网络为例,比如想让访客网络与原有的局域网进行彻底隔离,防止访客用户连接到原本的局域网。

第一步

修改无线网络接口配置,创建一个新的网络接口,例如:为无线网络分配新接口 wifi

仅勾选新建的接口,然后点击保存、保存并应用以使修改生效。(提示:输入字符后按回车键即可键入新网络名称。)

第二步

打开“网络”-“接口”,为新建的 wifi 接口按需配置其它参数。

  • 常规设置:将接口协议改为静态地址,为其分配一个新的局域网段 IP,并按需配置子网掩码。
  • 防火墙设置:新建一个防火墙区域名称。
  • DHCP 服务器:打开 DHCP 服务器。

然后点击保存并应用,以使修改生效。

第三步

打开“网络”-“防火墙”,为新建的防火墙区域配置规则。

  • 入站数据:改为拒绝,禁止此区域的接口访问网关(路由器)。
  • 转发:改为接受,即允许上网。(允许转发数据到其它防火墙区域)
  • 允许转发到目标区域:勾选 WAN 口,即允许上网。

然后点击保存并应用,以使修改生效。

第四步

打开“网络”-“防火墙”-“通信规则”,添加规则以放行 DNS 查询入站,否则新防火墙区域下的接口将无法上网。

添加规则以放行 DHCP 请求入站,否则客户端将无法自动获取 IP 地址。

至此已全部配置完毕,新建的访客网络已可以上网,与原局域网彻底隔离,且无法访问路由器,安全性得到极大的提升。

正确配置无线信道/无线频宽

对于无线路由器,主要依靠无线电信号进行工作,无线电频率属于公共物理资源,同一个区域内存在多个无线电信号时,必然会产生信号干扰,从而影响无线网络使用体验。因此有必要了解无线网络的工作频率,以进行正确的配置,尽量避免信号干扰导致的负面影响。

信道编号只是为了方便人们记忆用的代号,实际对应的是无线电频率,根据 802.11 标准将用于无线网络的无线电频率进行了划分。
信道只是一个标记值,无线路由器会根据选择的频宽,自动绑定所需的无线频率范围。

详情参见:https://en.wikipedia.org/wiki/List_of_WLAN_channels

2.4G 无线频率

信道频宽
1 (2412MHz)
2 (2417MHz)
3 (2422MHz)
4 (2427MHz)
5 (2432MHz)
6 (2437MHz)
7 (2442MHz)
8 (2447MHz)
9 (2452MHz)
10 (2457MHz)
11 (2462MHz)
12 (2467MHz)
13 (2472MHz)
14 (2484MHz)
20MHz
40MHz

2.4G 无线频率规范下,一个信道代表了 5MHz 的频宽,无线路由器配置中一般可选频宽为 20MHz 或 40MHz

选择 20MHz 频宽时,共需要占用 5个连续的信道,因为 2.4G 无线需要额外占用 2MHz 用于保护频带,
因此实际互不干扰的无线信道只有 1、6、11

当选择 40MHz 频宽时,共需要占用 9个连续的信道,因此必然会与其它无线信号重叠,互相干扰无法避免,只有在周围没有其它无线信号时,启用 40MHz 频宽才能发挥最佳效果。

5G 无线频率

信道频宽
36 (5180MHz)
40 (5200MHz)
44 (5220MHz)
48 (5240MHz)
52 (5260MHz)
56 (5280MHz)
60 (5300MHz)
64 (5320MHz)
149 (5745MHz)
153 (5765MHz)
157 (5785MHz)
161 (5805MHz)
165 (5825MHz)
20MHz
40MHz
80MHz
160MHz

5G 无线频率规范下,一个信道代表了 20MHz 的频宽,无线路由器配置中一般可选频宽为 20MHz、40MHz、80MHz、160MHz

选择 20MHz 频宽时,则只需占用一个信道,即同一区域内,无线信道不同就不会产生干扰。

选择 40MHz 频宽时,共需要占用 2个连续的信道。

选择 80MHz 频宽时,共需要占用 4个连续的信道。

选择 160MHz 频宽时,共需要占用 8个连续的信道,即只能选择 36-64,如果选择 149以上信道,会因为无法满足信道需求而导致无线网络无法工作。不同国家的无线电法规不同,实际可用信道与无线路由器中的国家参数有关。

注意:有些无线路由器会使用特殊的 160MHz 频宽,本质上是 80MHz + 80MHz 频宽组合而成,因此实际速率并不能与真正的 160MHz 频宽相同。

计划任务配置指南

打开“系统”-“计划任务”按需配置即可,使用标准的 crontab 参数规则,为方便理解请查看下方表格。

# 注意:本示例仅作为演示计划任务的用法,一般不建议使用定时重启。
# 路由系统被设计为长期开机使用,除非系统或软件不稳定,否则无需使用定时重启。

# 示例:每周一的 5点整执行系统重启命令。

0 5 * * 1 sleep 60 && touch /etc/banner && reboot
分钟小时星期描述
0-590-231-311-120-6参数范围。
*/10****每隔10分钟。
**/1***每隔1小时。
***/3**每隔3日。
30*/1***每隔1小时30分钟。
301***每天1点30分。
0015**每月15号的0点。
30225,12,25**每月5号、12号、25号的22点30分。
01411,6,12*在1月、6月、12月的1号14点整。
021**1-5每周一至周五的21点整。
08**0,6每周六和周日的8点整。