博主头像
mxd's Blog

"The quieter you become,the more you are able to hear."

Linux 下,几个防火墙之间的“爱恨情仇”

升级了Debian系统后,我发现一些端口无法访问了,这让我非常困惑。为了弄清楚原因,我开始深入研究系统中的防火墙工具及它们之间的冲突。于是,我遇到了三个关键角色:iptables、UFW 和 firewalld,然后发现了它们之间的“爱恨情仇”。

iptables

首先,我接触到了iptables。这是Linux系统中最底层的防火墙工具。它直接和内核中的Netfilter框架打交道,允许我设置、检查和维护IP包过滤规则。听起来很牛,但它也非常复杂,需要编写详细的规则文件。所有高层防火墙工具最终都会调用iptables来应用规则。

UFW

然后,我遇到了UFW(Uncomplicated Firewall)。顾名思义,它试图简化防火墙管理。UFW是为像我这样的人设计的,提供了一种简单的方法来管理iptables规则。用几条简单的命令就能搞定防火墙配置,隐藏了很多复杂细节。这看起来很棒,但它的本质还是在后台调用iptables。

firewalld

最后是firewalld。这个工具更智能,提供了动态管理和区域(zone)概念。它允许我在不重启防火墙的情况下添加、修改或删除规则,同样也是基于iptables的。它听起来很高级,但这也带来了一些复杂性。

工具之间的冲突

问题来了,当我同时使用这些工具时,它们会互相干扰。因为它们最终都要调用iptables来实现防火墙规则,这就像几个人在同一个画布上作画,互相涂抹,结果一团糟。

UFW和iptables的冲突

如果我手动设置了iptables规则,然后启用了UFW,UFW会覆盖我之前手动设置的规则。UFW启动时,会清空现有的iptables规则,并应用自己的规则集。这意味着我的手动配置全白费了。

firewalld和iptables的冲突

类似地,如果我手动配置了iptables规则,然后启用firewalld,firewalld也会覆盖我之前的规则。firewalld使用自己的规则集,并通过D-Bus接口动态调整防火墙配置,这也会使我的手动配置失效。

UFW和firewalld的冲突

更糟糕的是,如果我同时启用UFW和firewalld,它们会争夺iptables的控制权。两个工具都想管理规则,结果就是谁也没管好,导致防火墙配置混乱,端口无法访问。

解决方法

为了不让这些工具互相扯皮,我决定只用一个防火墙管理工具。由于Debian默认启用了UFW,我选择禁用firewalld,只用UFW来管理防火墙规则。
我通过以下命令禁用了firewalld:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

然后确保UFW正确配置并启用:

sudo ufw enable

这样,我避免了工具之间的冲突,端口访问问题也解决了。这次经历让我明白了iptables、UFW和firewalld之间的复杂关系。选择和正确配置适合的防火墙工具,真的非常关键!

Linux 下,几个防火墙之间的“爱恨情仇”
https://blog.mxdyeah.top/mxdyeah_blog_post/58.html
本文作者 mxdyeah
发布时间 2024-08-07
许可协议 CC BY-NC-SA 4.0
仅有 1 条评论
  1. 评论头像

    哈哈哈,不错的网络小故事,已经学到了doge

    幻想 January 18th, 2025 at 12:53 pm   Android 14(Android 14) / Google Chrome 131.0.6778.201(Google Chrome 131.0.6778.201) 回复
发表新评论