主题
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
# 未监听 36000frps 配置只暴露了 7000(控制面)和 7500(dashboard),9000-9009 由宿主机 yu 的 frpc 注册,没有 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 REACHABLE4. 检查虚拟机内部服务
使用 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 frpcfrps 日志确认:
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] success7. 验证
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 | 已重启并启用 |
遗留问题
- SSH 反向隧道不稳定:虚拟机内的
ssh-reverse-tunnel.service仍尝试连接8.153.84.140:22,但反复超时。建议评估是否仍需要该方案,避免与 frpc 的36000映射产生冲突。 - jms_chen 容器异常:
jms_chen容器处于Restarting状态,影响数据库管理功能,需进一步排查容器日志。 - 安全加固项:见同目录
2026-07-18-jumpserver-hardening.md。
时间线
| 时间 | 事件 |
|---|---|
| 11:18 | 接到故障报告 |
| 11:20 | 登录公网服务器,确认 36000 未监听 |
| 11:22 | 定位到本机 jumpserver 虚拟机,确认本地服务正常 |
| 11:22 | 添加 frpc 36000 映射并重启 frpc |
| 11:23 | 公网 36000 验证通过,HTTP 200 |