有谁知道是否可以使用 TC 从一个源接口镜像到多个接口?我做了以下事情:
- 我做的第一件事是在我的输入界面上创建一个入口队列
tc qdisc add dev e101-001-0 handle ffff: ingress
- 如果您需要删除 qdisc,您可以使用
tc qdisc del dev e101-001-0 [ root | ingress ]
- 如果您需要删除 qdisc,您可以使用
- 使用句柄 ffff 仔细检查您的队列是用
tc -s qdisc ls dev e101-001-0
- 接下来,我们要将所有流量从入口端口镜像到输出端口
tc filter add dev e101-001-0 parent ffff: protocol all u32 match u32 0 0 action mirred egress mirror dev e101-005-0
- 检查您的端口镜像是否出现在配置中
tc -s -p filter ls dev e101-001-0 parent ffff:
- 如果您需要删除过滤器,您可以使用
tc filter del dev e101-001-0 parent ffff:
- 如果您需要删除过滤器,您可以使用
- 将队列设置为不影响流量
tc qdisc add dev e101-001-0 handle 1: root prio
这让它工作输出到一个接口,但我注意到,如果我添加另一个带有新接口的过滤器,第一个接口将停止接收流量,这一切都转到新接口。
一个tc 动作可以附加一个控制操作符来改变对数据包的进一步处理:
似乎在匹配过滤器之后不再评估过滤器。
你可以简单地做:
您可以在同一个过滤器上组合(管道)多个操作(假设第二个镜像接口称为e101-006-0):
相反,您也可以链接多个过滤器(使用操作的继续控制)。然后应该给出明确的优先级/首选项,因为过滤器的顺序很重要:必须首先评估具有继续控制操作的过滤器。
例如,如果您希望在两个操作之间使用不同的过滤器(例如:一个可以匹配协议 ip另一个协议 ipv6),这将用于第一种方法。
这是一种解决方法,但我意识到我可以将流量抽到一座桥上,这有效地做了同样的事情。不过,我愿意接受更好的建议。