Skip to content

Jumpserver 公网访问 36000 端口故障排查与修复

基本信息

项目内容
故障现象8.153.84.140:36000 无法访问 Jumpserver
报告时间2026-07-18 11:18 CST
涉及资产公网服务器 8.153.84.140、宿主机 yu (10.20.24.225)、虚拟机 jumpserver (192.168.122.250)
修复结果公网 36000 已恢复访问,HTTP 200

网络拓扑

text
互联网用户
    |
    v
8.153.84.140:36000  (公网服务器 / frps)
    |
    |--(frpc 隧道)--> 宿主机 yu (10.20.24.225)
    |                      |
    |                      v
    |              192.168.122.250:36000
    |              jumpserver 虚拟机 (KVM/libvirt)
    |                      |
    |                      v
    |            docker-proxy:36000 -> jms_web:36000
    |
    |--(SSH 反向隧道,原方案,当前不稳定)
                   jumpserver -> root@8.153.84.140:22

排查过程

1. 公网探测

bash
# 36000 拒绝连接
$ timeout 5 bash -c '</dev/tcp/8.153.84.140/36000'
Connection refused

# 22 可连
$ timeout 5 bash -c '</dev/tcp/8.153.84.140/22'
# 成功

结论:公网服务器 8.153.84.140 本身在线,但 36000 端口无人监听。

2. 登录公网服务器检查

使用 root / ai-ear.cn 登录 8.153.84.140

bash
hostname: xxx
services: frps, nginx, docker
ss -tlnp: 监听 22/80/443/31000/7000/7500/9000-9009
# 未监听 36000

frps 配置只暴露了 7000(控制面)和 7500(dashboard),9000-9009 由宿主机 yufrpc 注册,没有 36000 的映射记录。

3. 定位 Jumpserver 虚拟机

在本机宿主机 yu 上:

bash
$ virsh list --all
Id   Name         State
----------------------------
4    jumpserver   running

获取虚拟机 IP:

bash
$ ip neigh show | grep 52:54:00:00:8d:d9
192.168.122.250 dev virbr0 lladdr 52:54:00:00:8d:d9 REACHABLE

4. 检查虚拟机内部服务

使用 root / ai-ear.cn 登录 192.168.122.250

bash
hostname: szc122250
ss -tlnp:
  0.0.0.0:36000  docker-proxy -> jms_web:36000
  0.0.0.0:2222   docker-proxy -> jms_koko:2222
  0.0.0.0:22     sshd

docker ps:
  jms_web     Up 3 days (healthy)   0.0.0.0:36000->36000/tcp
  jms_koko    Up 3 days (healthy)   0.0.0.0:2222->2222/tcp
  jms_chen    Restarting (1) ...

本地测试:

bash
$ curl -s -o /dev/null -w "%{http_code}" http://192.168.122.250:36000
200

结论:Jumpserver 服务本身正常,36000 本地可访问,问题出在公网映射。

5. 发现原访问路径:SSH 反向隧道

检查 jumpserver 虚拟机上的 systemd 服务,发现:

bash
$ systemctl cat ssh-reverse-tunnel.service
ExecStart=/usr/bin/ssh -i /root/.ssh/id_rsa \
  -o StrictHostKeyChecking=no \
  -o ServerAliveInterval=60 \
  -o ServerAliveCountMax=3 \
  -o ExitOnForwardFailure=yes \
  -N -R 0.0.0.0:36000:127.0.0.1:36000 \
  -o GatewayPorts=yes root@8.153.84.140

历史日志显示该隧道反复失败:

text
7月 17 23:16:58 ssh[1309305]: ssh: connect to host 8.153.84.140 port 22: Connection timed out
7月 17 23:19:38 ssh[1312134]: ssh: connect to host 8.153.84.140 port 22: Connection timed out
7月 17 23:22:18 ssh[1314756]: ssh: connect to host 8.153.84.140 port 22: Connection timed out

结论:原公网访问依赖虚拟机内的 SSH 反向隧道,但因无法连接公网服务器 22 端口而中断。

6. 修复:通过 frpc 增加 36000 映射

在宿主机 yu/etc/frp/frpc.toml 中新增:

toml
[[proxies]]
name = "jumpserver-web-36000"
type = "tcp"
localIP = "192.168.122.250"
localPort = 36000
remotePort = 36000

重启 frpc:

bash
sudo systemctl restart frpc

frps 日志确认:

text
2026-07-18 11:22:56 [proxy/tcp.go:82] [jumpserver-web-36000] tcp proxy listen port [36000]
2026-07-18 11:22:56 [server/control.go:374] new proxy [jumpserver-web-36000] type [tcp] success

7. 验证

bash
$ timeout 10 bash -c '</dev/tcp/8.153.84.140/36000'
公网 36000 可连接

$ curl -s -o /dev/null -w "状态码: %{http_code}, 耗时: %{time_total}s" \
    --max-time 10 http://8.153.84.140:36000
状态码: 200, 耗时: 0.041s

公网访问已恢复。

关键配置变更

文件变更
/etc/frp/frpc.toml新增 jumpserver-web-36000 代理,备份文件 frpc.toml.bak.202607181122
frpc.service已重启并启用

遗留问题

  1. SSH 反向隧道不稳定:虚拟机内的 ssh-reverse-tunnel.service 仍尝试连接 8.153.84.140:22,但反复超时。建议评估是否仍需要该方案,避免与 frpc 的 36000 映射产生冲突。
  2. jms_chen 容器异常jms_chen 容器处于 Restarting 状态,影响数据库管理功能,需进一步排查容器日志。
  3. 安全加固项:见同目录 2026-07-18-jumpserver-hardening.md

时间线

时间事件
11:18接到故障报告
11:20登录公网服务器,确认 36000 未监听
11:22定位到本机 jumpserver 虚拟机,确认本地服务正常
11:22添加 frpc 36000 映射并重启 frpc
11:23公网 36000 验证通过,HTTP 200