检查流量与防火墙服务路径

LinuxBeginner
立即练习

介绍

当网络服务无法访问时,应按层级检查路径:服务状态、监听套接字、本地请求、防火墙规则,最后是最终访问。这样可以避免在服务根本没有监听的情况下盲目开放防火墙端口。

在本实验中,有一个小型 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 端口、永久防火墙修复以及最终响应验证。