Reconya专门用于局域网资产发现和实时监控的开源项目
基于 Go 和 HTMX 构建,能自动扫描并识别网络中的所有设备,支持 IPv4 主动扫描和 IPv6 被动监听。 还能够进行深度解析设备信息,帮我们直接获取 MAC 地址、硬件厂商、主机名甚至操作系统类型。 并且内置可视化的 Web 仪表盘,能直观地看到网络拓扑和设备在线状态。 提供一键安装脚本,会自动检测系统类型并安装所需依赖,完成后启动即可使用。 适合网络管理员或者想排查家里有没有“蹭网”设备的朋友收藏备用。
先决条件
安装 reconYa 之前,请确保您的系统已安装以下软件:
- Go 1.21 或更高版本-下载 Go
- Node.js 18 或更高版本-下载 Node.js
- nmap - 网络扫描工具(使用说明如下)
本地安装(推荐)
一键安装
1 | git clone https://github.com/Dyneteq/reconya.git |
该脚本将检查是否安装了 Node.js 18+ 和 npm,并在需要时引导您完成安装。
这将:
- 检测您的操作系统(macOS、Windows、Debian 或基于 Red Hat 的系统)
- 安装所有必需的依赖项(Go、nmap)
- 配置 nmap 权限以进行 MAC 地址检测
- 设置 reconYa 应用程序
- 安装所有 Node.js 依赖项
安装完成后,请使用以下命令:
1 | npm run start # Start reconYa |
然后打开浏览器,访问:http://localhost:3000
默认登录名:admin/password
手动安装
如果您更喜欢手动安装,或者脚本在您的系统上无法运行:
先决条件
安装 Go(1.21 或更高版本):https://golang.org/dl/
安装 Node.js(18 或更高版本):https://nodejs.org/
安装 nmap:
1
2
3
4
5
6
7
8# macOS
brew install nmap
# Ubuntu/Debian
sudo apt-get install nmap
# RHEL/CentOS/Fedora
sudo yum install nmap # or dnf install nmap授予 nmap 权限(用于 MAC 地址检测):
1
2sudo chown root:admin $(which nmap)
sudo chmod u+s $(which nmap)
设置和运行
克隆仓库:
1
2git clone https://github.com/Dyneteq/reconya.git
cd reconya设置后端:
1
2
3
4cd backend
cp .env.example .env
# Edit .env file to set your credentials
go mod download开始申请:
1
2cd backend
go run ./cmdWindows 用户:如果遇到 SQLite CGO 错误,请使用:
1
2cd backend
CGO_ENABLED=1 go run ./cmdscripts/start-windows.bat或者直接从项目根目录双击。访问应用程序:
- 打开浏览器:
http://localhost:3008 - 默认登录名:
admin/password(请查看您的.env配置文件以获取自定义凭据)
- 打开浏览器:
如何使用
- 使用您的凭据登录(默认:
admin/password) - 建立新网络
- 从下拉菜单中选择网络并开始扫描
- 设备会在被发现后自动显示在您的网络上。
- 点击设备即可查看详细信息,包括:
- MAC地址和供应商信息
- 打开端口并运行服务
- 操作系统指纹
- 设备屏幕截图(用于 Web 服务)
- 使用网络地图可视化设备位置
- 监控事件日志中的网络活动
IPv6被动监控
reconYa 包含先进的 IPv6 被动监控功能,可在网络扫描期间自动激活:
工作原理
- 邻居发现协议 (NDP) - 监控 IPv6 邻居缓存中的活动设备
- 接口监控- 检测网络接口上的 IPv6 地址
- 自动分类- 识别链路本地地址、唯一本地地址和全局地址
- 双栈集成- 通过 MAC 地址将 IPv6 地址链接到现有的 IPv4 设备
IPv6地址类型
- 链路本地地址(
fe80::/10)- 本地网络段地址 - 唯一本地(
fc00::/7)- 私有网络地址 - 全球(
2000::/3)- 互联网可路由地址
特征
- 被动检测- 不产生网络流量,仅监控现有流量
- 实时更新- IPv6 地址显示在设备列表和详细信息中
- 跨平台- 可在 Linux、macOS 和 Windows 上运行
- 自动激活- 扫描时启动,闲置时停止
配置
编辑backend/.env文件进行自定义:
1 | LOGIN_USERNAME=admin |
架构
- 后端:Go API,使用 HTML 模板和 SQLite 数据库(端口 3008)
- Web界面:HTML和原生JS
- 扫描:基于 nmap 集成的多策略网络发现
- 数据库:SQLite 用于设备存储和事件日志记录
扫描算法
发现过程
Reconya 采用多层扫描方法,将 nmap 集成与原生 Go 实现相结合:
1. 网络发现(每 30 秒一次)
- 多种 nmap 策略,带自动回退功能
- ICMP ping 扫描(特权模式)
- TCP 连接探测到常用端口(回退)
- ARP 表查找以解析 MAC 地址
2. 设备识别
- IEEE OUI 数据库用于供应商识别
- 多方法主机名解析(DNS、NetBIOS、mDNS)
- 通过 nmap 进行操作系统指纹识别
- 基于端口和厂商的设备类型分类
3. 端口扫描(后台工作进程)
- 扫描活动服务的前 100 个端口
- 服务检测和横幅广告抓取
- 并发扫描与工作池模式
4. Web 服务检测
- 自动发现 HTTP/HTTPS 服务
- 使用无头 Chrome 浏览器进行屏幕截图
- 服务元数据提取(标题、服务器标头)
故障排除
常见问题
安装问题
- 如果
./install.sh失败,请尝试再次运行。sudo ./install.sh - 手动安装时,请确保已安装 Node.js 18 或更高版本。
- 赶紧
npm run status去检查一下缺少了什么 npm run install再次尝试运行
未找到设备
- 运行
npm run status以检查 nmap 是否已安装和配置 - 请检查您是否与目标设备位于同一网段。
服务无法启动
- 运行
npm run stop以终止任何卡住的进程 - 检查
npm run status依赖关系问题 - 请确保端口 3000 和 3008 可用。
缺少 MAC 地址
- 运行
npm run status以验证 nmap 权限 - MAC 地址仅在同一网段内可见
- 某些设备可能不会响应 ARP 请求。
权限被拒绝错误
- 安装程序应自动处理 nmap 权限。
- 如果问题仍然存在,请手动运行:
sudo chmod u+s $(which nmap)
服务持续崩溃。
- 检查依赖项是否已正确安装。
npm run status - 请确认您的
.env配置是否正确 - 尝试停止并重新启动:
npm run stop && npm run start
Windows SQLite CGO 错误
如果您看到“二进制文件编译时使用了 ‘CGO_ENABLED=0’,go-sqlite3 需要 cgo 才能运行”:
1
2
3
4cd backend
CGO_ENABLED=1 go run ./cmd
# or for building:
make build-cgo请确保您已安装 C 编译器(例如 TDM-GCC 或 Visual Studio 生成工具)。
卸载 reconYa
要彻底移除 reconYa 及其(可选)依赖项:
1 | npm run uninstall |
卸载过程将:
- 停止所有正在运行的 reconYa 进程
- 删除应用程序文件和数据
- 移除 nmap setuid 权限
- (可选)移除系统依赖项(Go、Node.js、nmap)
注意:由于系统依赖项可能被其他应用程序使用,因此在删除它们之前,系统会要求您确认。






