iptables
配置了两条ip6tables规则,规则如下
ip6tables -A INPUT -i br-lan -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -m mark --mark 0x50 -j DROP
目的是放开v6地址访问且丢掉ebtables二层mark为0x50的数据包
实际情况是所有数据包都会通过
必须把第一条规则删除后,才能隔离掉mark的数据包
可能的原因是第一条规则的匹配条件与第二条规则的匹配条件重叠,导致第二条规则无法生效。根据你的描述,第一条规则是允许来自br-lan接口的所有IPv6流量通过,而第二条规则是拒绝来自br-lan接口且具有特定标记的数据包。如果两个规则同时匹配同一个数据包,那么第一条规则会生效,因为它是放行规则。因此,你可以尝试将第二条规则放在第一条规则之前,这样它就可以先匹配到要丢弃的数据包并拒绝它们,而不会被第一条规则覆盖。具体做法如下:
ip6tables -I input_lan_rule -i br-lan -m mark --mark 0x50 -j DROP
ip6tables -A INPUT -i br-lan -j ACCEPT
这里使用了-I参数将第二条规则插入到input_lan_rule规则链的顶部,确保它优先于第一条规则匹配。注意,在删除第一条规则之前,先添加第二条规则可能会阻止你的访问,因为它会拒绝所有标记为0x50的数据包。