马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 Linux 服务器跑应用,总有些端口必须放行:8080 的后台、3306 的数据库、22 之外自定义的运维端口。开了半天还是连不上,八成不是规则写错了,而是漏了"保存"或"服务没在监听"。这篇文章把 firewalld、iptables、ufw 三条路径的放行命令一次列全,并附上必须做的最后一步检查。
一、先看防火墙在不在跑
1. firewalld
sudo systemctl status firewalld
没运行就先起:
sudo systemctl start firewalld
2. iptables
sudo iptables -L -n
-L 列出规则,-n 不做反向解析,速度快,排障时建议一直带上。
二、用 firewalld 放端口
1. 开放单个端口(以 8080 为例)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
三个关键点别漏:--permanent 表示写进配置永久生效,没有它重启就丢;--zone=public 要与实际生效的 zone 一致,多网卡机器容易选错;协议要写 /tcp。
2. 重新加载规则
sudo firewall-cmd --reload
加了 --permanent 之后必须 reload 才在现行运行态生效,很多人卡在这一步。
3. 验证
sudo firewall-cmd --list-ports
能看到 8080/tcp 就说明放行成功。
三、用 iptables 放端口
1. 添加 ACCEPT 规则
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
-A 是追加到链尾,-p tcp 指定协议,--dport 8080 指定目标端口。
2. 保存规则(防重启失效)
sudo iptables-save > /etc/iptables/rules.v4 # Debian / Ubuntu
sudo service iptables save # CentOS
iptables 是内核态规则,不落盘重启就没了,这步不能省。
3. 查看规则是否生效
sudo iptables -L -n | grep 8080
四、Ubuntu 默认防火墙 ufw
如果用的 ufw,命令更短:
sudo ufw allow 8080/tcp
sudo ufw reload
ufw 本质也是 firewalld/iptables 的封装,检查状态用 sudo ufw status。
五、最后一步:确认服务真的在监听
防火墙全放开还是连不上,十次有九次是服务本身没听。用 netstat 或 ss 看:
sudo netstat -tulnp | grep 8080
# 或者
sudo ss -tulnp | grep 8080
没有输出就说明进程根本没绑这个端口,此时加再多防火墙规则也没用。常见原因:应用配置里端口写错、绑到了 127.0.0.1 只能本机连、进程根本没启动。确认监听之后再回头检查防火墙,排障顺序才对。
六、排障顺序小结
- 进程在监听吗:
ss -tulnp | grep 端口;
- 防火墙放了吗:firewalld 用
--list-ports,iptables 用 -L -n;
- 云安全组放了吗:控制台入站规则,这条最容易漏;
- 本机能连吗:
curl 127.0.0.1:端口,通说明服务没问题,问题在网络链路;不通就是服务或监听地址的问题。
按这个顺序走一遍,端口类故障基本五分钟内能定位。记得收尾也做一件事:把不该长期开放的管理端口关掉,最小化暴露面比事后补救更重要。
qidao123.com企服评测-应用市场 编辑提示
本文按 systemctl 查 firewalld 状态与启动、firewall-cmd 的 --zone --add-port --permanent 与 --reload 与 --list-ports 四步、iptables 的 -L -n 查看与 -A INPUT -p tcp --dport -j ACCEPT 追加、两种系统的规则保存方式、ufw 的 allow 与 reload、以及用 netstat/ss 确认端口监听的四步排障顺序,重排成一份端口放行的标准操作清单。文中端口与路径为示意值,命令取自各发行版防火墙官方文档,请以实际系统版本为准;规则调整仅限自有或已授权服务器,测试完成后请关闭不必要的临时放行。 |