本文目录导读:

关于QuickQ(通常指某款基于OpenWrt或定制系统的路由器/网关)的WireGuard DSCP(差分服务代码点)映射设置,目前QuickQ官方固件(如基于iStoreOS或官方QOS系统)的原生界面中,通常没有直接的“WireGuard DSCP映射”图形化选项。
可以通过底层iptables或nftables规则来实现,以下是几种常见的设置方法,请根据你的具体需求(是出站映射还是入站标记)选择:
通过防火墙规则(最常见,推荐)
如果你需要将进入WireGuard接口的数据包的DSCP值映射/修改(将特定应用的高优先级流量标记为EF或AF),可以在QuickQ的“网络”-“防火墙”-“自定义规则”中添加以下命令:
场景: 对WireGuard接口(如wg0)出来的流量,标记DSCP为46(EF,即加速转发)。
iptables -t mangle -A POSTROUTING -o wg0 -j DSCP --set-dscp 46
注意:POSTROUTING链在路由决策之后,适合修改即将发出的包,如果希望修改接收的包,可将-o wg0改为-i wg0,链改为PREROUTING或FORWARD。
更精细的映射(根据源端口或目标端口):
# 对WireGuard发出的UDP 443端口流量标记为DSCP 46 iptables -t mangle -A FORWARD -o wg0 -p udp --dport 443 -j DSCP --set-dscp 46
保存规则:
在QuickQ(基于OpenWrt)中,自定义规则默认随系统启动,为确保长期生效,可检查/etc/firewall.user文件是否存在,或直接将命令写入该文件。
通过流量整形(QOS)间接实现
WireGuard本身不参与DSCP标记,但QuickQ的QOS(流量控制)功能可以根据DSCP值进行分类。
- 进入 “网络” -> “QOS”(如果安装了SQM或Turbo ACC等插件)。
- 在“流量分类”或“规则”中,配置:
- 匹配条件:选择 DSCP 或 TOS 字段。
- 动作:设置为“标记为高优先级”或直接修改DSCP值。
- 注意:这种方法需要先确保内核或iptables支持
CONNMARK和DSCP模块,QuickQ通常默认支持,但建议确认。
通过WireGuard配置文件(仅限服务端/对等端设置)
如果你是在WireGuard对等端(客户端)的配置中想实现全局标记,可以尝试在WireGuard接口配置的AllowedIPs区域之前或之后,添加自定义PostUp/PreDown规则(需要系统支持)。
在QuickQ的WireGuard接口高级设置中(如果支持自定义脚本):
[Interface]
...
PostUp = iptables -t mangle -A FORWARD -i wg0 -j DSCP --set-dscp 10 ; # 设置DSCP为AF11
注意:QuickQ的图形界面可能不提供直接编辑配置文件的地方,如果界面没有,建议使用方案一。
重要提醒与排查
- DSCP值:
0:默认尽力而为(Best Effort)46:EF(Expedited Forwarding,加速转发)10:AF11(Assured Forwarding 1)18:AF2134:AF41
- 生效确认:
在QuickQ终端执行:
iptables -t mangle -L -n -v
查看统计计数(
pkts列)是否增加,以确认规则已匹配。 - 配置持久化:
OpenWrt/QuickQ中,
/etc/firewall.user文件在重启防火墙后会被执行,建议将规则写入该文件:echo 'iptables -t mangle -A POSTROUTING -o wg0 -j DSCP --set-dscp 46' >> /etc/firewall.user chmod +x /etc/firewall.user
| 需求场景 | 推荐方案 | 命令示例 |
|---|---|---|
| 对WireGuard出口流量统一标记 | 方案一 POSTROUTING | iptables -t mangle -A POSTROUTING -o wg0 -j DSCP --set-dscp 46 |
| 对进入WireGuard的流量标记 | 方案一 PREROUTING | iptables -t mangle -A PREROUTING -i wg0 -j DSCP --set-dscp 46 |
| 根据端口/协议动态映射 | 方案一 精细规则 | -p udp --dport 443 -j DSCP --set-dscp 46 |
| 通过QOS界面直观管理 | 方案二 | 进入QOS插件,创建DSCP匹配规则 |
核心建议:除非你明确知道需要修改WAN口或LAN口的DSCP值,否则不要在QuickQ的“WAN”或“LAN”接口上直接应用针对WireGuard的全局DSCP策略,以免影响其他流量,最稳妥的方式是只针对WireGuard接口(wg0)进行规则添加。
如果QuickQ的版本较新(如基于OpenWrt 21.02+),建议默认使用 nftables 替代 iptables(命令类似,但语法不同),可以尝试在终端输入 nft list ruleset 查看当前规则集,确认系统使用哪种。