iptables 调试不再适用于 Debian 10(和 iptables-legacy;从 Debian 9 升级后)

iptables debugging no longer working with Debian 10 (and iptables-legacy; after upgrading from Debian 9)

我曾经能够在 Debian 9 主机上使用链 PREROUTINGOUTPUT 中的特定规则进行 iptables 调试(都在 table raw) 和目标 TRACE 并如所述 here。当此类规则触发时,消息出现在 /var/log/kern.log 中。

主机在其 boot config 文件中有以下相关条目。事情显然在没有 CONFIG_IP_NF_TARGET_LOGCONFIG_IP6_NF_TARGET_LOG 的情况下有效。 (我对 IPv4 流量感兴趣。)

CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_IP_NF_RAW=m
CONFIG_IP6_NF_RAW=m
# CONFIG_IP_NF_TARGET_LOG missing
# CONFIG_IP6_NF_TARGET_LOG missing
CONFIG_NETFILTER_XT_TARGET_LOG=m

我现在已经将同一主机升级到 Debian 10 (Buster)。它使用 iptables-legacy(不是默认的 iptables-nft),因为这是在 Kubernetes 集群的上下文中。

我观察到的是相同的规则(例如 iptables -t raw -A PREROUTING -d $service_ip -p tcp -j TRACE$pod_ip 也一样)显然不再起作用,因为我没有在/var/log/kern.log.

可能是什么原因以及如何进一步诊断? TRACE 功能可能需要与 Debian 10 不同的引导配置(不同的模块),或者 iptables-legacy 现在是否以某种方式阻碍?

现在看来,这种 iptables 调试实际上在 Debian 10 下仍然有效,就像我以前在 Debian 9 下所做的那样。

显然我在重新创建目标 Kubernetes services 等之前安装了 iptables 调试规则是一个错误。这样 iptable 规则和 Kubernetes 资源就集群 IP、节点端口而言不同步、pod IP 等,因此规则永远不会触发那些 services 等

的流量