使用第 2 层信息在 Linux 上使用 iptables 阻止 IPv6 流量

使用第 2 层信息在 Linux 上使用 iptables 阻止 IPv6 流量

我已经建立了一个由以下基于 Linux 的机器组成的简单隔离网络:Node1<---->Router<---->Node2

路由器的 eth0 与 Node1 的 eth0 相连。路由器的 eth1 与 Node2 的 eth0 相连。

所有三个系统都配置了 IPv6 地址,我可以成功 ping 通彼此。我在路由器上运行 iptables/ip6tables,我想阻止所有从节点 2 到节点 1 的 IPv6 流量(通过路由器)

我们知道所有 IPv6 流量都有以太网数据包类型签名 0x86dd,我想使用 ip6tables 仅使用此特定签名来阻止流量。阅读 ip6tables 手册页并在互联网上搜索后,我找不到合适的选项(如 ether-type)来阻止流量。

我可以通过 ip6tables 来做到这一点吗?

编辑:我专门在寻找一种使用第 2 层 (0x86dd) 的数据来阻止流量的方法。基本上,问题归结为 iptables/ip6tables 是否在第 2 层工作?

答案1

ip6tables -I FORWARD -o eth0 -j REJECT

这将拒绝所有不是源自路由器且流出 eth0 的 IPv6 流量。您可能还想添加一个-i eth1来指定输入接口。此外,您可能还喜欢

ip6tables -I FORWARD -d ${IP(Node1)} -j REJECT

这将阻止所有发送到 Node1 的 IP 地址的流量,这些流量不是来自路由器,或者可能是

ip6tables -I FORWARD -s ${IP(Node2)} -d ${IP(Node1)} -j REJECT

这将根据各自的 IP 地址阻止从 Node2 到 Node1 的所有流量。

请注意,只有当 Node1 和/或 Node2 具有固定 IP 地址时,最后两个方法才有效。您可以随意用 替换REJECTDROPREJECT通常是更好的做法(尤其是在“友好”环境中)。

答案2

我知道这已经过时了,但我碰巧看到了类似的东西。这里的一个选项是在桥上使用带有 -p ip6 选项的 ebtables。我已经让它“完全”工作了,但还没有设法让某些事情的例外情况通过(目前)。

相关内容