介绍
当网络服务无法访问时,应按层级检查路径:服务状态、监听套接字、本地请求、防火墙规则,最后是最终访问。这样可以避免在服务根本没有监听的情况下盲目开放防火墙端口。
在本实验中,有一个小型 HTTP 服务正在监听 TCP 8088 端口,但 firewalld 未允许该端口。你将检查服务路径并添加缺失的永久防火墙规则。
检查服务状态
在此步骤中,你将在查看防火墙规则之前确认应用程序服务是否正在运行。
进入项目目录并创建一个工作区。
cd /home/labex/project
mkdir -p firewall-path
检查服务状态。
systemctl is-active rhce-http-demo.service | tee firewall-path/service-state.txt
读取服务命令。
systemctl show rhce-http-demo.service -p ExecStart | tee firewall-path/exec-start.txt
服务处于活动状态,因此下一个问题是它是否在预期的端口上进行监听。
检查监听套接字
在此步骤中,你将确认主机是否正在监听 TCP 8088 端口。
显示 8088 端口的监听 TCP 套接字。
sudo ss -ltnp 'sport = :8088' | tee firewall-path/socket.txt
通过回环地址测试服务。
curl -s http://127.0.0.1:8088/ | tee firewall-path/loopback-response.txt
服务在本地响应正常,说明应用程序本身工作正常。
查找缺失的防火墙规则
在此步骤中,你将检查 firewalld 是否包含该服务端口。本地套接字正常并不自动意味着防火墙允许该端口。
列出默认区域中的开放端口。
sudo firewall-cmd --list-ports | tee firewall-path/ports-before.txt
查询 8088/tcp 端口。
sudo firewall-cmd --query-port=8088/tcp | tee firewall-path/query-before.txt || true
查询结果应返回 no,这意味着 firewalld 缺少该规则。
开放服务端口
在此步骤中,你将添加一条永久的 firewalld 规则并重新加载防火墙。
添加永久端口规则。
sudo firewall-cmd --add-port=8088/tcp --permanent
重新加载 firewalld。
sudo firewall-cmd --reload
再次查询端口。
sudo firewall-cmd --query-port=8088/tcp | tee firewall-path/query-after.txt
现在防火墙已允许该服务端口。
验证完整的服务路径
在此步骤中,你将综合验证服务、套接字、防火墙规则和响应。
检查服务状态。
systemctl is-active rhce-http-demo.service
显示防火墙端口列表。
sudo firewall-cmd --list-ports | tee firewall-path/ports-after.txt
再次请求服务。
curl -s http://127.0.0.1:8088/ | tee firewall-path/final-response.txt
应用程序路径已完整:服务处于活动状态、套接字正在监听、防火墙规则已存在,且 HTTP 响应正常。
总结
你按层级检查了服务路径:服务状态、监听套接字、本地 HTTP 响应、缺失的 firewalld 端口、永久防火墙修复以及最终响应验证。



