这个 iptables 规则的选项是什么意思?

这个 iptables 规则的选项是什么意思?

规则是

-A KUBE-SEP-G3HEJMIUHDVUA2GR -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination 

这是 kube 服务规则的一部分:

-N KUBE-SEP-G3HEJMIUHDVUA2GR
-A KUBE-SEP-G3HEJMIUHDVUA2GR -s 10.233.64.2/32 -m comment --comment "kube-system/kube-dns:dns" -j KUBE-MARK-MASQ
-A KUBE-SEP-G3HEJMIUHDVUA2GR -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination 

据我所知,通常这条规则会有一个特定的目的地,如下所示:

-A KUBE-SEP-XEZU3EBQ2WW4MLUB -p tcp -m comment --comment "default/nginx:https" -m tcp -j DNAT --to-destination 10.233.116.87:443

虽然第一个没有特定的目的地,这可能是因为该服务只有一个端点,但我想知道:

  1. 目的地“:0”是什么意思?
  2. 为什么“--destination”出现三次?
  3. 这里的“--persistent”有什么用?
  4. 在哪里可以找到有关 DNAT 目标的更详细文档?

答案1

这完全不是一个答案。经过深入研究,我发现 kube-proxy 容器中的 iptables 规则与主机上的 iptables 规则不同。

 -N KUBE-SEP-OYL6BTTAC4W4HXLZ
-A KUBE-SEP-OYL6BTTAC4W4HXLZ -s 10.233.64.38/32 -m comment --comment "kube-system/kube-dns:dns" -j KUBE-MARK-MASQ
-A KUBE-SEP-OYL6BTTAC4W4HXLZ -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination

(名称和IP更改是因为我重新启动了机器)

然后我检查了两个 iptables cli 的版本,发现它们没有匹配。我之前升级过内核,这可能会导致一些问题。但我不想深入挖掘,我不是内核专家。

相关内容