首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GRE隧道上与tc的流量镜像只获得入口流量

GRE隧道上与tc的流量镜像只获得入口流量
EN

Stack Overflow用户
提问于 2016-12-08 10:48:37
回答 2查看 2K关注 0票数 0

我试图镜像“所有”的网络流量从一个接口的帮助下,tc通过一个GRE隧道tun0。GRE-隧道工作正常,我可以通过它平和发送数据包,没有任何问题.我使用以下命令添加了tc-qdisctc-filter

代码语言:javascript
复制
tc qdisc add dev ens5 ingress

tc filter add dev ens5 parent ffff: \
protocol all \
u32 match u8 0 0 \
action mirred egress mirror dev tun0

代码语言:javascript
复制
tc qdisc add dev ens5 handle 1: root prio

tc filter add dev ens5 parent 1: \
protocol all \
u32 match u8 0 0 \
action mirred egress mirror dev tun0

就像在这个教程

问题

问题是只有入口交通通过GRE隧道。当我在接口ens5上平另一台计算机时,我只能通过tun0接口获得icmp echo replies。我做错什么了?

Debug

代码语言:javascript
复制
ubuntu@switch:~$ tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
10:23:28.952197 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 1, length 64
10:23:29.954454 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 2, length 64
10:23:30.952864 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 3, length 64
10:23:31.953207 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 4, length 64
10:23:32.955350 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 5, length 64
10:23:33.957000 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 6, length 64
10:23:34.956313 IP 192.168.20.12 > 192.168.20.15: ICMP echo reply, id 3453, seq 7, length 64
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-15 13:04:39

我自己解决了这个问题。

tc将出口流量(以太网报头)和不带以太网报头的入口流量(GRE-隧道只期望IP数据包)镜像,因此出现了报头不匹配。如果我使用的是VXLAN而不是GRE,它可以正常工作。

票数 2
EN

Stack Overflow用户

发布于 2016-12-13 08:44:23

我从来没有使用过GRE隧道,但是基于您发布的教程链接,它与桥接口有关吗?我目前还在桥接口上使用Linux流量控制(tc) --在我的例子中,它是Docker创建的一座桥,我必须操纵流量(不仅仅是重定向)。

根据我的经验,我可以告诉您,当您将tc类/过滤器添加到桥接口时,tc并不像预期的那样工作。它主要是基于对进出桥梁交通的定义,这(对我来说)非常令人困惑。我还测试了我的tc配置与ICMP功能,和你一样,我也只能操纵ICMP回复。

我的假设是tc没有对ICMP请求作出反应,就像我的情况一样,它只是在桥接端口之间切换,而不是路由。我能够使用tc来处理ICMP请求,方法是将它与ebtables (http://ebtables.netfilter.org)一起删除,从而强制它被路由,而不是在桥接端口之间切换。

不过,我不确定这是否能解决您的问题,因为我不确定GRE隧道是如何工作的,或者它们是如何实现的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41037569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档