偷看你在干嘛!golang实现, 基于dnsmasq的dns请求获取

源码地址

什么是dnsmasq(摘自网络)

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。
更多详细 https://wiki.archlinux.org/index.php/Dnsmasq_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

什么是dnsmasq_admin?

这个东西是针对dnsmasq产生的日志做筛选,将用户产生的访问记录发送到指定的电脑上, 然后管理员可以审查这些网址,并且可以屏蔽这些网址的访问。

原理

这就是一个小工具, 实用go完成, 原理是这样:

  1. dnsmasq 打开调试日志,指定一个日志输出地址。
  2. 获取源码并编译得到可执行程序。
  3. 在root下执行。将程序指定到日志, 比如开机运行:/home/gao/dnsmasq_admin /var/log/dnsmasq.log > /var/log/dnsmasq_amdin.log 2>&1 &
  4. 在收到任何用户的dns访问记录时, 这个程序会主动向另外一个启动了dnsmasq_admin地方发送数据。接受的地方就可以控制服务是否要将这个域名重定向到127.0.0.1这些不可用的域名上。

这个程序分两种模式运行, 一种是分析模式, 一种是监控模式。 可以从http.go 的代码中看出目的来:

func init() {
    http.HandleFunc("/api/send", addNewFetch)   //监控位置用来接收分析模式下发送的消息。 
    http.HandleFunc("/api/addHost", addHosts)   //追加hosts到dns服务器
    http.HandleFunc("/", list)          // 查看列表
    http.HandleFunc("/ip", listWithIp)  //某个ip的列表
    go http.ListenAndServe(":22225", nil) //启动的端口。 

}

在监控模式下, 直接访问http://localhost:22225 查看所有使用这个dns服务器的ip地址

192.168.0.41
192.168.0.60

点击任意一个ip地址, 可以得到这个ip下的用户所有的dns请求。

192.168.0.60 suggestion.baidu.com Block
192.168.0.60 sdup.360.cn Block
192.168.0.60 cdndownload.alipay.com Block
192.168.0.60 stat.sd.360.cn Block
192.168.0.60 tr.p.360.cn Block
192.168.0.60 image.baidu.com Block
192.168.0.60 t10.baidu.com Block
192.168.0.60 fm.dl.126.net Block

部署

然后,怎么让人用这个dnsmasq, 你可以将路由器里面,连接外网的dns服务器地址选项填写成你的dnsmasq地址。 然后所有的dhcp用户会自动使用你的dns服务。

dnsmasq记录日志的设置

dnsmasq.conf:

log-queries
log-facility=/var/log/dnsmasq.log

更多关于dnsmasq的信息:

https://wiki.archlinux.org/index.php/Dnsmasq_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

如果你想更多的了解dnsmasq_admin

貌似你可以从这里找到我 @ablegao

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。