這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
源碼地址
什麼是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完成, 原理是這樣:
- dnsmasq 開啟調試日誌,指定一個日誌輸出地址。
- 擷取源碼並編譯得到可執行程式。
- 在root下執行。將程式指定到日誌, 比如開機運行:/home/gao/dnsmasq_admin /var/log/dnsmasq.log > /var/log/dnsmasq_amdin.log 2>&1 &
- 在收到任何使用者的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.41192.168.0.60
點擊任意一個ip地址, 可以得到這個ip下的使用者所有的dns請求。
192.168.0.60 suggestion.baidu.com Block192.168.0.60 sdup.360.cn Block192.168.0.60 cdndownload.alipay.com Block192.168.0.60 stat.sd.360.cn Block192.168.0.60 tr.p.360.cn Block192.168.0.60 image.baidu.com Block192.168.0.60 t10.baidu.com Block192.168.0.60 fm.dl.126.net Block
部署
然後,怎麼讓人用這個dnsmasq, 你可以將路由器裡面,串連外網的dns伺服器位址選項填寫成你的dnsmasq地址。 然後所有的dhcp使用者會自動使用你的dns服務。
dnsmasq記錄日誌的設定
dnsmasq.conf:
log-querieslog-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