我今天才第一次开始深入研究 iptables,所以对任何天真表示歉意。
作为参考,我正在使用
- Ubuntu 22.04.4 LTS(果酱水母)
- iptables v1.8.7 (nf_tables)
- UFW 0.36.1
现在,我知道(或者更确切地说,最近了解到)ufw 只是 iptables 的包装。我决定想要了解幕后发生的事情,所以我开始阅读和探索。我似乎无法理解 iptables 如何与 ufw 一起处理数据包。让我们从INPUT
链开始,我相信这是任何传入数据包都会开始的地方。
Chain INPUT (policy DROP)
target prot opt source destination
ufw-before-logging-input all -- anywhere anywhere
ufw-before-input all -- anywhere anywhere
ufw-after-input all -- anywhere anywhere
ufw-after-logging-input all -- anywhere anywhere
ufw-reject-input all -- anywhere anywhere
ufw-track-input all -- anywhere anywhere
我觉得如果我正确理解了一切,那么这里的第一行ufw-before-logging-input all -- anywhere anywhere
意味着从任何地方、任何端口进入的任何数据包都将被传递到链中ufw-before-logging-input
。如果它从该链返回而没有被接受、丢弃或拒绝,那么它将被传递到下一个链,在这种情况下ufw-before-input
,依此类推,直到它被接受、丢弃或拒绝(即。 ,直到遇到终止操作)。
好的,让我们看看任何数据包将传递到的第一个链,ufw-before-logging-input
。
Chain ufw-before-logging-input (1 references)
target prot opt source destination
这里实际上什么都没有,所以我们继续讨论ufw-before-input
链条
Chain ufw-before-input (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ufw-logging-deny all -- anywhere anywhere ctstate INVALID
DROP all -- anywhere anywhere ctstate INVALID
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
ufw-not-local all -- anywhere anywhere
ACCEPT udp -- anywhere host.name udp dpt:mdns
ACCEPT udp -- anywhere w.x.y.z udp dpt:num
ufw-user-input all -- anywhere anywhere
这就是我感到困惑的地方。第一行看起来我们只是接受任何数据包,ACCEPT all -- anywhere anywhere
但是......我的防火墙规则有效,它们阻止流量。
那么,我在这里缺少什么?
(注意,我试图将其发布在Stackoverflow上,但他们把我发到了这里。只要包含此内容,以防万一您用 Google 搜索它并发现它在其他地方重复。)