You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenWrt中GRE接口配置TC qdisc后Ping不通问题求助

排查OpenWrt GRE接口添加TC Qdisc后Ping失败的问题

你遇到的核心问题其实很明确——在未创建对应TC类的情况下,指定了不存在的默认类,导致所有数据包被直接丢弃。我来一步步帮你分析和解决:

问题根源拆解

你执行的这条命令:

tc qdisc add dev gre1 root handle 1: default 2

其中default 2表示所有未匹配到过滤器的数据包,都会被转发到类1:2处理。但此时你还没创建这个类,TC的根qdisc找不到对应的处理路径,就会直接丢弃所有进入gre1接口的数据包——这就是Ping失败、抓包看不到任何数据的原因。

修复与正确配置步骤

1. 先恢复接口连通性

首先移除当前有问题的根qdisc,让gre1回到正常工作状态:

tc qdisc del dev gre1 root

这时候再Ping隧道接口,应该能恢复正常连通。

2. 标准TC流量控制配置(以HTB为例)

HTB是OpenWrt中最常用的流量调度器,我们按照规范流程来配置:

  • 第一步:添加根HTB qdisc
    先创建根qdisc,暂时不指定默认类(避免提前依赖未创建的类):
    tc qdisc add dev gre1 root handle 1: htb
    
  • 第二步:创建默认处理类
    创建根类1:1作为默认流量的处理类,带宽值根据你的实际网络调整:
    tc class add dev gre1 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
    
  • 第三步:绑定默认类到根qdisc
    把根qdisc的默认流量指向刚创建的1:1类:
    tc qdisc change dev gre1 root handle 1: htb default 1
    
  • 第四步:按需创建限流子类(可选)
    如果需要对特定流量做限流,可以继续创建子类,比如限制某类流量到10Mbit:
    tc class add dev gre1 parent 1: classid 1:2 htb rate 10mbit ceil 20mbit
    
    后续可以通过tc filter规则把目标流量导向这个子类。

配置验证

完成配置后,执行以下命令查看TC统计信息,确认数据包被正常处理:

# 查看qdisc的流量统计
tc -p -s -d qdisc show dev gre1
# 查看各个类的流量统计
tc -p -s -d class show dev gre1

此时再Ping隧道接口,应该能正常连通,抓包gre1也能看到数据包了。

额外注意事项

  • TC的qdisc默认在**出口方向(egress)**处理流量,抓包时要关注gre1的发送包;
  • 确保OpenWrt已安装TC工具包:opkg install tc(你能执行tc命令的话应该已经安装);
  • 如果需要针对入口流量(ingress)做控制,需要单独配置ingress qdisc,流程和出口配置不同。

内容的提问来源于stack exchange,提问作者Shihab Pullissery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:23:24