ebtables/iptables 匹配出、入接口问题记录

使用ebtables的时候碰到一个问题,本地简化复现大概如下:
本地实际存在的,转发icmp报文的linux bridge是br_test,而规则中“ --logical-in test ”涉及的bridge “test” 是其他网桥或者是一个不存在的网桥,按道理是匹配不到的,icmp报文可以正常转发,但是配置了这个“-p IPv4 --logical-in test --ip-proto icmp -j DROP”之后,机器上所有的其他网桥都无法转发icmp报文了。

[root@sheng3 ~]# ebtables -t nat -L
Bridge table: nat

Bridge chain: PREROUTING, entries: 0, policy: ACCEPT

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

Bridge chain: POSTROUTING, entries: 1, policy: ACCEPT
-j LOOPDETECT_FULL

Bridge chain: LOOPDETECT_FULL, entries: 1, policy: RETURN
-p IPv4 --logical-in test --ip-proto icmp -j DROP

Bridge chain: LOOPDETECT_br-gw2, entries: 1, policy: RETURN
-p IPv4 --ip-proto icmp -j DROP

原因是,POSTROUTING 、OUTPUT 链中是不匹配入接口,入网桥。PREROUTING、INPUT是不匹配出接口、出网桥。当然也没有相关数据,所以回直接忽略掉相关字段,但是仍然会匹配其他字段,所以“-p IPv4 --logical-in test --ip-proto icmp -j DROP” 实际上是“-p IPv4 --ip-proto icmp -j DROP”导致所有网桥都丢弃了icmp报文。
正常在PREROUTING或者PREROUTING上配置规则都会做检查,如:

 ebtables -t nat -A POSTROUTING -i veth1_out DROP
Use -i only in INPUT, FORWARD, PREROUTING and BROUTING chains.

但是自建链表无法检查,所以在这种情况下一定要清楚自己创建的链表工作在哪条系统链表下,否则会出现莫名其妙的错误。
ebtables、iptables都有这个问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 防火墙的概念iptables的简介iptables命令网络防火墙NATfirewalld服务 一、防火墙的概念 (...
    哈喽别样阅读 5,857评论 0 1
  • 详述iptables五链 防火墙程序是工作在内核的TCP/IP的网络协议栈的框架之上,通过网络过滤可以实现入侵检测...
    Net夜风阅读 4,485评论 1 1
  • 本章内容 ◆ 防火墙的概念◆ iptables的基本认识◆ iptables的组成◆ iptables的基本语法◆...
    Liang_JC阅读 3,382评论 0 1
  • 1、搭建vsftpd,并实现虚拟用户 一、安装所需要程序 # yum groupinstall -y "Devel...
    N37077ZZ阅读 2,087评论 0 0
  • Firewall 工作于网络(网络防火墙)或主机(主机防火墙)的边缘(通信报文的进出口),对于进出本网络或主机的报...
    SRE1阅读 5,222评论 0 0

友情链接更多精彩内容