商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux关闭防火墙及开放特定端口的配置方法

Linux关闭防火墙及开放特定端口的配置方法

  发布于2026-05-21 阅读(0)

扫一扫,手机访问

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

Linux关闭防火墙及开放特定端口的配置方法

怎么确认当前用的是 firewalld 还是 ufw

第一步千万别搞错:不同Linux发行版的默认防火墙工具不一样,用错命令会徒劳无功。

  • 在CentOS、RHEL或Fedora上,通常使用firewalld。运行sudo systemctl status firewalld,如果看到active (running),就说明它在工作。
  • 在Ubuntu或Debian上,默认则是ufw。用sudo systemctl status ufw来检查状态,active才表示已启用。
  • 如果上面两个服务都是inactive,但执行sudo iptables -L -n却能看到规则,那说明系统直接使用了底层的iptables。这在一些老系统或容器宿主机上比较常见。

这里有个关键点:firewalldufw最好不要同时启用,它们可能会冲突。如果你决定用一个,记得把另一个彻底停用并禁用,而不是仅仅停止服务。

firewalld 下开放或关闭单个端口

使用firewalld时,最容易踩的坑就是规则不生效。它的规则分“临时”和“永久”,想让配置在重启后依然有效,必须记住两个步骤:加--permanent参数,然后执行--reload

  • 开放TCP端口(例如8080):sudo firewall-cmd --permanent --add-port=8080/tcp
  • 开放UDP端口(例如53):sudo firewall-cmd --permanent --add-port=53/udp
  • 删除已开放的端口sudo firewall-cmd --permanent --remove-port=8080/tcp
  • 重载配置(至关重要!)sudo firewall-cmd --reload
  • 查看当前开放的端口sudo firewall-cmd --list-ports

另外,协议类型/tcp/udp是强制指定的,只写端口号8080会导致命令报错。

ufw 下快速开关端口

ufw的命令相对更直观,但也有一些自己的“脾气”。首先,它默认可能是禁用的,需要先启用。

  • 首次启用服务sudo ufw enable
  • 开放TCP端口sudo ufw allow 8080(默认协议是TCP),也可以显式指定sudo ufw allow 8080/tcp
  • 开放UDP端口sudo ufw allow 53/udp
  • 删除规则:这里有个小技巧。你不能直接用端口号删除,需要先sudo 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 :8080sudo netstat -tlnp | grep :8080检查一下。如果看不到对应进程,可能是服务没启动,或者它只绑定在了127.0.0.1(本地回环地址)上,导致外部无法访问。
  • 服务器安全组:如果你用的是阿里云、腾讯云、AWS等云服务器,系统防火墙之上还有一层“安全组”或“网络ACL”。这层配置优先级很高,必须登录云控制台,确保对应端口和IP范围已经放行。
  • SELinux策略:在RHEL、CentOS等系统上,SELinux可能会拦截网络连接。可以临时测试:执行sudo setenforce 0将其设为宽容模式。但这只是临时方案,长期解决需要配置正确的SELinux策略,而不是简单地关闭它。
  • 最终验证:别只相信配置。本地可以用telnet 127.0.0.1 8080测试,远程服务器则可以用nc -zv 你的服务器IP 8080来验证连通性。

最后,再提醒两个最高频的疏忽:在firewalld中添加永久规则后忘了--reload;在ufw中删除规则时没看编号,删错了条目。这两步一旦漏掉,前面的所有操作可就都白费了。

本文转载于:https://www.php.cn/faq/2438908.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注