
dmachard/go-dnscollectorDNS Collector 是一款针对DNS消息的被动高速处理工具,主要功能包括DNS消息的聚合、分析、传输和日志记录。该工具支持多种DNS数据收集方式,提供灵活的数据转换和路由能力,并可将处理结果输出至控制台、文件、API接口或Prometheus等多种目标,适用于DNS流量监控、安全分析和性能评估场景。
通过以下命令启动容器,挂载自定义配置文件:
bashdocker run -d dmachard/go-dnscollector -v $(pwd)/config.yml:/etc/dnscollector/config.yml
创建docker-compose.yml文件,配置如下:
yamlversion: "3.8" services: dnscollector: image: dmachard/go-dnscollector:v0.25.0 environment: - "TZ=Europe/Paris" # 设置时区 volumes: - ${APP_CONFIG}/dnscollector/config.yml:/etc/dnscollector/config.yml # 挂载配置文件 - ${COLLECTOR_DATA}/:/var/dnscollector/ # 挂载数据目录(用于日志存储) ports: - "8080:8080/tcp" # REST API端口 - "8081:8081/tcp" # Prometheus指标端口 - "6000:6000/tcp" # DNS数据收集端口
DNS Collector 通过config.yml文件进行配置,核心结构包括全局配置(global)和多路复用器配置(multiplexer)。
用于设置全局跟踪参数:
yamlglobal: trace: verbose: true # 启用详细日志 log-malformed: true # 记录格式错误的DNS消息
包含收集器(collectors)、记录器(loggers)和路由规则(routes)三部分。
定义DNS数据的来源,支持多种收集方式:
yamlcollectors: - name: tap # 收集器名称 powerdns: # PowerDNS收集协议配置 listen-ip: 0.0.0.0 # 监听IP listen-port: 6000 # 监听端口 transforms: # 数据转换配置 normalize: # 归一化处理 qname-lowercase: true # 将查询域名转为小写 add-tld: true # 添加顶级域名(TLD)信息 suspicious: # 可疑请求检测 enable: true # 启用可疑请求检测
定义数据输出目标,支持多种输出方式:
yamlloggers: - name: console # 控制台输出 stdout: mode: text # 输出格式:文本 - name: json # 日志文件输出 logfile: file-path: /var/dnscollector/dnstap.log # 日志文件路径 mode: text # 输出格式:文本 - name: api # REST API输出 restapi: listen-ip: 0.0.0.0 # API监听IP listen-port: 8080 # API监听端口 - name: prom # Prometheus指标输出 prometheus: listen-ip: 0.0.0.0 # Prometheus监听IP listen-port: 8081 # Prometheus监听端口
定义数据从收集器到记录器的流转路径:
yamlroutes: - from: [ tap ] # 来源收集器(对应collectors中的name) to: [ console, json, api, prom ] # 目标记录器(对应loggers中的name)
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务