如何获取 rp_filter=1 丢弃的数据包日志

如何获取 rp_filter=1 丢弃的数据包日志

我确实需要 rp_filter 丢弃的数据包日志...如何进行此日志记录?

其中记录如何启用。

答案1

据我所知,这些都没有记录。除非其他人证明我错了,否则这里有另一种方法。

您可以执行以下步骤 1+2 或 1+3:

  1. 禁用rp_过滤器完全地。

  2. 使用 iptables'过滤器匹配模块,一旦与日志简单日志的目标,或神经网络日志(甚至NF队列(尽管这不是预期用途)用于完整数据包转储,并使用 DROP 目标进行实际过滤。

    使用神经网络日志正确地可能需要一个单独的问题,但我可以说,即使没有专门的工具,tcpdump也可以听网络日志netlink 套接字就好像它是一个接口一样。通常首先完成:

    # tcpdump -D
    

    检索正确的接口索引。例如:

    [...]

    12.nflog (Linux netfilter log (NFLOG) interface)
    13.nfqueue (Linux netfilter queue (NFQUEUE) interface)
    

    [...]

    # tcpdump -n -i 12
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on nflog, link-type NFLOG (Linux netfilter log messages), capture size 262144 bytes
    

    您也可以选择将它们写入文件 ( -w dump.cap)

  3. 或使用不育系谎言使用(足够新的)匹配等效方法nftables代替iptables,有一些等价的日志方法。

使用网络过滤器的防火墙层是 IPv6 的唯一方法,缺乏对rp_过滤器在 Linux 上的路由堆栈中。

与 ARP 或策略路由相关的一些极端情况的行为可能不会 100% 相同,因为过滤可能是稍后完成的。

答案2

您必须启用 sysctl net.ipv4.conf.default.log_martians,然后检查 syslog 文件,您应该有类似以下内容:

[8270435.701764] ll header: 00000000: ce 47 b8 a3 39 62 de 2e 40 0c a0 0c 08 00        .G..9b..@.....
[8270435.702460] IPv4: martian source 51.247.240.165 from 10.138.86.16, on dev tap12

相关内容