我有一个Arch Linux系统,在这个系统中,链路本地包没有被正确地路由.我在这台机器上有4个接口(wan,lan0,lan1和lan2)。所有三个lanX接口都是桥接在一起的。
当我跑的时候
ping6 fe80::8e89:a5ff:feda:fa%lan或
ping6 ff02::1%lan这些数据包被发送到wan接口,而不是lan桥和lan2接口(后者直接连接到具有该fe80地址的机器)。内核似乎忽略了指定的IPv6作用域id。我已经仔细检查了一下,我没有fe80地址的路由(但是每个IPv6设备都有一个ff0::/8路由,但是在我提供范围的其他系统上也是一样的)。
是否有任何设置可以使内核以这种方式运行,而忽略了链接本地地址的显式ipv6作用域(包括ff02::/16,根据IPv6规范,它仍然被认为是链接本地的)。
发布于 2016-01-05 18:38:37
结果发现这个问题与我的配置有关。我正在使用nfqueue在内联IPS中运行Suricata,并且使用它的“重复”模式在链的开始重新插入数据包,如果它们从IPS获得了许可。然后我有规则去寻找添加到包中的标记Suricata,而不是重新传递给Suricata。然而,从Suricata返回到链中的重新插入似乎使内核忘记了如何路由数据包。只需删除nfqueue规则就可以解决问题,但没有使用IPS。因此,我最后所做的是将我的所有-j接受iptables规则替换为-j规则。在这种形式下,Suricata没有看到所有的通信量,特别是它没有看到防火墙会阻塞的东西的数据包。这是不幸的,但确实有效。
https://unix.stackexchange.com/questions/250408
复制相似问题