端口心跳训练

1、实际检测动作

程序主动伸手:尝试建立 TCP 连接去碰  你的IP:你的端口 (比如22/443)

2、判定标准(最关键)

  • 很快连上 → 正常,不发邮件
  • 卡住超时 / 直接拒绝连接 → 判定:端口被封/被墙 → 立刻发告警邮件

3、为啥不用 ping?

ping 走的是 ICMP 小探测包;
防火墙/墙经常放行 ping,但封死业务端口,所以 ping 骗你,端口检测才真实。

CodeBuddy
深度思考
让我先找到现有的端口检测代码:

搜索
def.check.port|def.monitor|def.detect
深度思考
读取
forward_panel_desktop.py
L4077-4156
深度思考
看到了,现在是用 SSH 在服务器上检测。我来改成从客户端本地检测目标端口(真正判断是否被墙):

读取
forward_panel_desktop.py
L4103-4162
深度思考
forward_panel_desktop.py
(修改)
+18
-20
查看文件
深度思考
已修改!现在检测逻辑:

进程检测(服务器上)- socat 进程是否还在运行
端口被墙检测(客户端本地)- 用 TCP socket 连接目标 IP:端口
连接成功 → 正常
连接超时/拒绝 → 端口被封 → 发送告警邮件
重新打包后生效:

bash
cd c:/Users/Administrator/CodeBuddy/mianban5.7/mianban
python build_onefile.py

要求的升级 检测所有的端口 就是服务器内的所有端口 都需要监控 不只是规则上的

CodeBuddy
深度思考
读取
forward_panel_desktop.py
(文件过大,无法一次读取)
深度思考
搜索
_check_port|port.check|check.port
深度思考
搜索
def _monitor|def check.status|规则.监控
深度思考
搜索
监控|monitor|start_monitor
深度思考
读取
forward_panel_desktop.py
L4100-4249
深度思考
读取
forward_panel_desktop.py
L4075-4124
深度思考
我来添加服务器全端口检测功能。需要:

扫描服务器上所有监听端口
从客户端本地检测这些端口是否被墙
forward_panel_desktop.py
(修改)
+3
-0
查看文件
深度思考
forward_panel_desktop.py
(修改)
+100
-0
查看文件
深度思考
在 forward_panel_desktop.py 中未发现 linter 错误
深度思考
已完成升级。现在监控功能会:

扫描服务器所有监听端口 – 使用 ss -tlnp 命令获取服务器上所有 TCP 监听端口

从客户端本地检测 – 对每个端口发起 TCP 连接测试,判断是否被墙

自动告警 – 端口无法连接时发送邮件告警,恢复后自动记录

新增功能:

_scan_server_listening_ports – 扫描服务器所有监听端口
_check_all_server_ports – 全端口连通性检测
_send_server_port_alert – 端口异常告警邮件
监控逻辑已更新,每次检查会同时检测:

转发规则状态(socat进程 + 目标端口)
服务器所有监听端口(检测是否被墙)

世界树

一步一步来

您可能还喜欢...