发布于2026-05-21 阅读(0)
扫一扫,手机访问
在Linux上处理防火墙和端口,很多人以为就是“开”或“关”那么简单。但实际情况是,即便你停掉了firewalld或ufw,服务可能依然无法访问。问题往往出在服务监听、云平台安全组,甚至是SELinux策略上。所以,正确的做法是根据你的发行版选对工具,然后进行逐层排查。

第一步千万别搞错:不同Linux发行版的默认防火墙工具不一样,用错命令会徒劳无功。
firewalld。运行sudo systemctl status firewalld,如果看到active (running),就说明它在工作。ufw。用sudo systemctl status ufw来检查状态,active才表示已启用。inactive,但执行sudo iptables -L -n却能看到规则,那说明系统直接使用了底层的iptables。这在一些老系统或容器宿主机上比较常见。这里有个关键点:firewalld和ufw最好不要同时启用,它们可能会冲突。如果你决定用一个,记得把另一个彻底停用并禁用,而不是仅仅停止服务。
使用firewalld时,最容易踩的坑就是规则不生效。它的规则分“临时”和“永久”,想让配置在重启后依然有效,必须记住两个步骤:加--permanent参数,然后执行--reload。
sudo firewall-cmd --permanent --add-port=8080/tcpsudo firewall-cmd --permanent --add-port=53/udpsudo firewall-cmd --permanent --remove-port=8080/tcpsudo firewall-cmd --reloadsudo firewall-cmd --list-ports另外,协议类型/tcp或/udp是强制指定的,只写端口号8080会导致命令报错。
ufw的命令相对更直观,但也有一些自己的“脾气”。首先,它默认可能是禁用的,需要先启用。
sudo ufw enablesudo ufw allow 8080(默认协议是TCP),也可以显式指定sudo ufw allow 8080/tcpsudo ufw allow 53/udpsudo ufw status numbered查看规则的编号,然后根据编号删除,例如删除第二条规则:sudo ufw delete 2。直接运行ufw deny 8080并不会删除允许规则,反而是在它前面加了一条拒绝规则,可能导致混乱。sudo ufw status verbose需要注意的是,ufw的规则是有顺序的。如果一条deny规则排在allow规则前面,放行就会失效。除非你非常清楚自己在做什么,否则建议只用命令来增删规则,不要手动编辑/etc/ufw/user.rules这类配置文件。
这是最让人头疼的部分:明明防火墙已经关了,端口也配置好了,为什么还是连不上?问题可能出在下面几层。
sudo ss -tlnp | grep :8080或sudo netstat -tlnp | grep :8080检查一下。如果看不到对应进程,可能是服务没启动,或者它只绑定在了127.0.0.1(本地回环地址)上,导致外部无法访问。sudo setenforce 0将其设为宽容模式。但这只是临时方案,长期解决需要配置正确的SELinux策略,而不是简单地关闭它。telnet 127.0.0.1 8080测试,远程服务器则可以用nc -zv 你的服务器IP 8080来验证连通性。最后,再提醒两个最高频的疏忽:在firewalld中添加永久规则后忘了--reload;在ufw中删除规则时没看编号,删错了条目。这两步一旦漏掉,前面的所有操作可就都白费了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9