1
lambdaq 364 天前
这事直接去问 gpt
|
2
GopherDaily 364 天前
- iptables 是基于 netfilter 实现的,是对 netfilter 暴露的 hook 的使用
- iptables 的 chain(PREROUTING/INPUT/FORWARD/OUTPUT/POSTROUTING) 对应 netfilter 的五个钩子 - iptables 的 table 对应不同的功能,比如 nat 是改写目的地/来源地,filter 是用来过滤的 - 从结构上来看 table 由 chain 组成,chain 由 rule 组成,rule 由 match 和 target 组成 Link: https://arthurchiao.art/blog/deep-dive-into-iptables-and-netfilter-arch-zh/#3-iptables-%E8%A1%A8%E5%92%8C%E9%93%BEtables-and-chains Link: https://github.com/j2gg0s/j2gg0s/blob/main/_posts/wips-k8s%20network%3A%20kube-proxy%20%E5%92%8C%20flannel.md#iptables-%E5%9B%9E%E9%A1%BE 当然我觉得这事还是需要 google 来结果,基础好的,直接看 wiki 和 manpage , 基础薄的看别人的 blog LLM 大部分都是回答一些看上去对或者不对的内容。 |
3
mohumohu 364 天前
这个问题你随便找张 iptables/netfilter 的图就明白了,对于默认 chain 来说,能够适用的 table 不一样。
|
4
old9 364 天前
|
5
julyclyde 364 天前
你这个“明明”是错的
所以按这个思路看正确的内容就觉得不对劲了 表-链-规则 |
6
WaterWestBolus OP 谢谢诸位 @GopherDaily @old9
大致是明白了 理解下来应该是这样:netfilter 在网络协议栈里埋了 5 个 hook ,每个 hook 都会触发对应的 chain ,但是同一个 chain 可能会存在于多个表里,触发 chain 的时候需要按预定义的顺序从各个表里捞出对应的 rule 去执行 |
7
GeruzoniAnsasu 364 天前 6
|
8
Panic 364 天前
enum nf_ip_hook_priorities {
NF_IP_PRI_FIRST = INT_MIN, NF_IP_PRI_RAW_BEFORE_DEFRAG = -450, NF_IP_PRI_CONNTRACK_DEFRAG = -400, NF_IP_PRI_RAW = -300, NF_IP_PRI_SELINUX_FIRST = -225, NF_IP_PRI_CONNTRACK = -200, NF_IP_PRI_MANGLE = -150, NF_IP_PRI_NAT_DST = -100, NF_IP_PRI_FILTER = 0, NF_IP_PRI_SECURITY = 50, NF_IP_PRI_NAT_SRC = 100, NF_IP_PRI_SELINUX_LAST = 225, NF_IP_PRI_CONNTRACK_HELPER = 300, NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX, NF_IP_PRI_LAST = INT_MAX, }; table 的设计确实不好理解, 感觉也并不是太合理, chain 才是关键. |
9
leonshaw 364 天前 1
@WaterWestBolus 一个 chain 只在一个表里,虽然是可以同名的。2023 年了,换 nftables.
|
10
daxy223 364 天前 via iPhone
@GeruzoniAnsasu 这个是真好 我也准备推荐的
|
11
jasonyang9 364 天前
同。iptables 每次都要搞一下脑子。nftables 中表的概念弱化了
|
12
chenqh 364 天前
感觉 iptables 真的难学,
|
13
huangmingyou 364 天前
学 nftables 吧
|
14
WaterWestBolus OP @leonshaw 公司还在用 iptables= =积重难返
|