总之,我有一个linux路由器,它有3个网络接口:
如果这有什么改变,我的路由器正在openwrt上运行,所以lan实际上是br-lan。
我的目标有两个:
透明桥接部分使用net.ipv4.ip_forward轻松完成,并将eth1加入到eth0虚拟桥接设备中。但是,当我将站点的IP/MAC分配给eth1时,来自交换机的所有通信量都会在eth1 (可以理解)停止。我可以点击开关,但是站不能,因为eth1为自己保留了响应。
为了绕过这个问题,我尝试了多种方法,主要来自于本期:带有tee的iptables (虽然我做了一条通过eth0路由站点IP的流量的路由)、iptables转发(见此问题)、tcpbridge (从eth1到eth0、tc.
但是在所有这些情况下,来自交换机的数据包按预期的方式被重定向到eth0,但是现在linux设备是一个没有收到答案的设备,这意味着这个站点可以打开交换机,但是当我这样做的时候,这个站点就会得到响应。(尽管eth1仍然在欺骗站点的IP/MAC )。
有人知道为什么镜像流量在我的情况下不起作用吗?
是因为两个接口还是在同一个vbridge中?
是否有一个包实用程序允许我通过使用自定义IP/MAC包来路由数据包?这将允许我做一个透明的桥梁,而不篡改1‘S IP/MAC。
谢谢!
发布于 2023-06-02 12:06:24
好的,我似乎找到了答案,我取消了两个接口之间的连接,并在每个方向添加了镜像流量控制规则:
tc qdisc add dev eth0 ingress
tc qdisc add dev eth1 ingress
tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0 action mirred egress mirror dev eth1
tc filter add dev eth1 parent ffff: protocol all u32 match u32 0 0 action mirred egress mirror dev eth0更多的信息这里和关于我链接的第一个问题)。
现在,我可以平平服务器,站和linux设备都得到响应。可能有一种方法可以筛选哪些数据包是真正的数据包,一些依赖tcp标志的实用程序等等,但我找不到。
https://serverfault.com/questions/1132421
复制相似问题