CentOS防火墙放行8080端口,firewall-cmd永久生效命令
把Tomcat、Jenkins、Nexus跑在8080端口,结果浏览器死活刷不出页面,十有八九是防火墙没松口。别急着关整套防火墙,一条命令就能让8080永久通行,重启也照开不误。

先确认端口到底被谁挡住
终端里敲:ss -lntp | grep 8080,看到进程监听再排除应用本身问题;接着curl 127.0.0.1:8080能通,但远程IP访问超时,基本就是firewalld在中间拦包。
firewalld与iptables别再混淆
CentOS 7之后默认用firewalld,配置文件在/etc/firewalld/,改完即时生效,不需要写复杂规则链。老习惯iptables -I INPUT临时放行,重启机器就失效,下次排错又得重来,得不偿失。
一条命令永久放行8080
登录root或具有sudo权限的账号,直接复制下面三行,按顺序执行:

firewall-cmd --permanent --add-port=8080/tcpfirewall-cmd --reload
firewall-cmd --list-ports
第一行把端口写进永久配置,第二行让规则立即生效,第三行验证是否出现8080/tcp。看到回显里有8080/tcp,就说明放行成功,重启系统也会自动加载。
只给特定IP放行,更安全
如果服务只对办公网开放,用rich-rule限制来源,例如:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="8080" protocol="tcp" accept'
再执行firewall-cmd --reload,外网扫描8080会直接拒绝,日志里也不会出现一堆爆破记录。
改完端口服务仍不通,排查三步走
1. 云主机检查安全组,阿里云、腾讯云、AWS都有独立白名单,系统里放行不代表云端放行。
2. 确认服务监听在0.0.0.0:8080,而不是127.0.0.1:8080,本地回环地址只能本机访问。
3. 关闭SELinux试一把:setenforce 0,能通就写一条针对性策略,别永久disabled,安全红线不能丢。
常用附加命令备忘
查看当前活跃区域:firewall-cmd --get-active-zones
把网卡移到trusted区域:firewall-cmd --permanent --zone=trusted --change-interface=eth1
临时删除端口:firewall-cmd --remove-port=8080/tcp
永久删除端口:firewall-cmd --permanent --remove-port=8080/tcp
备份现有规则:cp -a /etc/firewalld /etc/firewalld.bak
脚本化批量操作
维护几十台节点时,Ansible一行指令就能下发:
- name: Open port 8080 permanentlyfirewalld:
port: 8080/tcp
permanent: yes
state: enabled
immediate: yes
playbook跑完,所有机器统一放行,再也不用手动逐台登录。
常见坑汇总
• 复制命令时漏掉--permanent,重启后规则蒸发,业务半夜告警。
• 双栈环境只放行了ipv4,结果ipv6地址访问依旧被拒,记得加family="ipv6"。
• 在Docker主机上修改firewalld,容器网络模式为host时可能冲突,要么让Docker不操作iptables,要么用user-defined网络。
照着上面做,8080端口就能稳稳当当对外服务,firewalld也不再是拦路虎。下次再装新应用,先查端口,再写规则,最后reload,养成习惯,排错时间直接砍半。
