跳到正文

服务发现与批量接入

一键发现 用于在 fn-knock 能访问的本地 IPv4 网段中寻找 HTTP 服务,并把识别结果转换成待确认的子域映射或路径映射。它不会扫描公网,也不会在扫描到开放端口时自动发布服务。

入口与前置条件

服务发现不是独立菜单,入口位于:

  • 子域映射 → 一键发现:先保存根域名,扫描结果会生成业务 Host;
  • 路径映射 → 一键发现:仅在 内网穿透 → 路径模式 中显示,扫描结果会生成路径规则。

子域映射中,根域名尚未保存或页面存在未保存修改时不能开始发现。扫描只验证 fn-knock 所在运行环境能否连接目标;Docker 中的网络视角与宿主机不同,宿主机服务必须能从容器网络到达。

扫描目标

打开一键发现后,可展开扫描目标设置。默认目标来自当前运行环境:

来源说明
回环非 Docker 部署使用 127.0.0.1/32
Docker 宿主机Docker 部署根据管理入口识别可达的宿主机网段
网卡当前环境中允许扫描的本地 IPv4 网卡网段
已有映射从现有子域或路径映射的 Target 推导
自定义管理员手动添加并保存的 CIDR
已保存以前保存、当前仍作为扫描范围的 CIDR

只接受完整落在以下范围内的 IPv4 CIDR:

  • 回环 127.0.0.0/8
  • RFC 1918 私网 10.0.0.0/8172.16.0.0/12192.168.0.0/16
  • CGNAT 100.64.0.0/10
  • 链路本地 169.254.0.0/16

单次最多选择 16 个 CIDR,去重后合计最多 1024 台主机。输入较大的网段时,应改成更窄的 CIDR,而不是依赖系统截断扫描结果。

“恢复自动选择”会重新跟随当前自动目标。手动勾选、取消或添加 CIDR 后必须保存;直接开始扫描时,页面也会先尝试保存当前范围。至少要保留一个目标。

扫描范围与强度

每台目标主机会探测 80–60000 端口,但会跳过 fn-knock 自身和已知内部服务端口,扫描本机时还会额外避开容易形成自探测的端口。发现开放 TCP 端口后,系统再发起 HTTP 请求识别服务;单纯开放的非 HTTP 端口不会生成候选映射。

扫描强度可以跟随设备推荐,也可以手动选择:

档位目标并发
32
115
256
极高512

实际并发不会机械达到表中数值。系统还会根据 CPU 核心、可用内存、文件句柄上限及容器资源限制计算安全上限,并取两者较小值。自动模式默认开启,会在设备能力变化后重新推荐档位。

档位只影响耗时和设备负载,不改变 CIDR、端口范围或识别规则。NAS、路由器和低内存设备优先保留自动或低强度;并发调高后仍很慢,通常是扫描范围过大,而不是档位失效。

识别结果

扫描窗口会持续显示主机、端口、进度和已识别服务。系统会根据 HTTP 状态、响应头和页面特征识别常见应用;无法精确识别时,会以页面标题或 HTTP + 端口 生成通用候选。

候选值只是建议:

  • 子域模式会建议子域名,并默认创建需要登录、启用 WAF、保留上游 Host 的映射;
  • 路径模式会建议路径、是否改写 HTML、是否使用根目录模式及是否设为默认路由;
  • 检测到上游 Basic Auth 时只会提示风险,不会自动保存其用户名和密码;
  • 已存在相同 Target、Host、路径或重复候选时,页面会过滤或拒绝批量保存。

保存前逐项检查候选名称和 Target。通用识别无法知道应用的真实基础路径、回调 URL、WebSocket、Cookie 或可信代理要求,批量添加成功也不代表公网访问已经可用。

停止扫描或关闭窗口会取消当前任务;已经显示的候选只有点击批量保存后才会进入配置。

推荐操作顺序

  1. 先从 fn-knock 所在环境确认目标 IP 和端口可达。
  2. 保存根域名或切换到正确的路径模式。
  3. 打开一键发现,展开设置并把 CIDR 收窄到实际设备网段。
  4. 资源有限时保持自动或低强度,开始扫描。
  5. 取消不需要公开的候选,并修改冲突或含义不清的子域名、路径。
  6. 批量保存后,逐条检查认证、WAF、Target 和路由选项。
  7. 先从局域网验证上游,再用移动网络验证公网 DNS、隧道、证书和登录。
  8. 在请求日志确认 Host、来源 IP、路由和上游状态。

常见问题

扫描不到宿主机服务

Docker 中的 127.0.0.1 是容器本身。确认服务没有只监听宿主机回环地址,并使用容器可达的宿主机地址;同时检查 Docker 网络、防火墙和服务监听范围。

非 Docker 部署还要确认目标落在允许的本地 IPv4 范围内。IPv6、域名和公网地址不能作为发现 CIDR,但发现完成后仍可手动创建合法 Target。

找到端口但没有候选

服务发现只生成可通过 HTTP 分析的候选。TCP、UDP、TLS-only 或要求特殊握手的服务可能只有端口开放而没有结果。HTTP 服务如果把明文请求强制交给只支持 HTTPS 的端口,也可能被忽略;这种情况应手动添加映射并验证协议。

扫描耗时过长或设备负载高

先缩小 CIDR 和主机数,再降低强度。扫描最多可能覆盖 1024 × 59921 个端口探测,目标范围比并发档位更决定总工作量。关闭窗口可取消任务,但已经发出的少量网络探测可能需要等待超时结束。

候选服务重复或端口不符合预期

同一应用可能在多个端口返回相似页面,系统会按识别键合并部分结果,但不能替管理员判断真实入口。保留上游正式监听端口,删除健康检查、跳转端口或已由其他映射接管的候选。

QQ群:1081609274