这个项目能做什么
TurkeyBite 是一个开源的域名与主机上下文分析管道,用于分析客户端网络流量,对客户端请求的域名进行分类,涵盖成人内容、赌博、购物等类别。它明确构建为非侵入式分析工具,不会阻止客户端请求,因此如有需要,可以同时运行在 Pi-hole 等拦截工具旁边,而不会影响最终用户的网络体验。
该管道依赖基于 Docker 的技术栈,包括 Python 3、Valkey(兼容 Redis 的内存数据存储库)、Bind9 DNS 服务器、用于流量采集的 Packetbeat 和/或 Browserbeat、用于数据索引和存储的 OpenSearch,以及用于可视化的 OpenSearch Dashboards。它从多个公共来源聚合域名和主机分类列表,以丰富分析结果。
在运行过程中,Packetbeat 从受支持的 DNS 服务器捕获 DNS 流量(已在生产环境中使用 Bind9 和 Microsoft DNS 服务器测试,并且兼容任何可以运行 Packetbeat 的 DNS 服务器),并将数据发送到 Valkey。Browserbeat 可用于从受支持的浏览器收集浏览器历史数据。TurkeyBite 核心进程和工作进程处理摄取的数据,为其添加域名类别上下文,并将结果索引到 OpenSearch,以便通过 OpenSearch Dashboards 进行查询和可视化。
部署通过 Docker Compose 管理,并带有一个设置脚本,引导用户针对不同部署规模(开发、小规模、完整规模)进行配置,包括客户端 IP 的 DNS 查找设置、输出选项(OpenSearch 和/或 Syslog)以及服务凭据。设置脚本会自动生成所需的配置文件(.env、config.yaml、docker-compose.yml)以及用于服务认证的密钥文件。对于跨多个节点的分布式部署,可以在每个节点上运行设置脚本并进行相应配置;如果 Valkey 运行在单独的专用服务器上,则需要将 Valkey 认证密钥复制到核心节点和工作节点。
在数据采集配置方面,Packetbeat 需要设置为捕获端口 53 上的 DNS 流量并输出到 Valkey,同时需仔细匹配数据类型和键设置与所选的 TurkeyBite 管道模式:“consume”模式使用 Valkey 列表实现至少一次投递,并带有持久化积压跟踪;而“rq”模式使用 Valkey 的发布/订阅机制,该机制在设计上是有损的。Browserbeat 则按照其自身的安装说明单独配置,以收集浏览器历史数据。
日常维护包括检查存储在 vols/logs 目录中的日志,以及存储在 vols/lists 中的域名列表会根据用户配置的刷新间隔自动更新。常见故障排查步骤包括通过 docker compose logs 检查容器日志、重启单个服务,以及验证容器之间的网络连通性。
评论
0 评分人数达到10人后显示
登录后参与讨论。