前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【开源】小Z为DNSmasq写了一个WEB界面PHPDNS

【开源】小Z为DNSmasq写了一个WEB界面PHPDNS

作者头像
laulzgoay
发布2018-08-02 15:05:02
2.4K0
发布2018-08-02 15:05:02
举报
文章被收录于专栏:小俊博客小俊博客

DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。使用DNSmasq可以很方便的搭建递归DNS(公共DNS,如8.8.8.8,114.114.114.114),配合PHPDNS可以轻松的管理DNSmasq

环境要求

  • CentOS 6/7
  • PHP 5.6+(需要支持PDO组件)
  • SQLite 3

递归DNS与权威DNS

好吧,有人问我这个是否支持GEO功能,当然不支持啦,因为这些是权威DNS才有的功能。DNSmasq属于递归DNS,用于您本地电脑的解析,就像Google的公共DNS8.8.8.8

  • 权威 DNS 由域名解析服务商建设,提供域名管理服务,维护域名解析记录。
  • 递归 DNS 由网络运营商建设,提供域名查询解析服务。

详细的说明请戳这里:

自建DNS优势

  • 自定义DNS解析
  • 屏蔽广告
  • 防止DNS劫持

运行原理详解

1.在每次添加主机的时候PHPDNS生成适合DNSmasq的配置文件并保存到application/conf目录

2.添加配置后DNSmasq必须重启才会生效,但是DNSmasq不知道管理员已经添加了主机列表。通过一个简单的shell脚本,使用find命令来检测application/conf配置文件1分钟内是否修改过,如果修改过则重启DNSmasq使其生效,比如下面的命令。

代码语言:javascript
复制
#!/bin/bash
find /data/wwwroot/xxx.com/application/conf/ -name '*.conf' -mmin -1 -exec /usr/bin/systemctl restart dnsmasq.service {} \;

3.再配合crontab每分钟执行一次shell命令进行检测,最终实现管理员添加主机的时候DNSmasq实时生效。这样做的好处是不用让PHP去执行后端shell,让服务器来完成后续的工作相对更加安全。但缺点是添加后最快也需要1分钟才会生效,不过还算在接受范围内,目前无法检测PHPDNS生成的DNSmasq配置语法是否正确,若管理员一旦触发BUG或添加一些非法的主机可能导致DNSmasq无法运行。

4.关于去广告的原理:其实就是让广告域名比如ad.baidu.com指向到127.0.0.1,让广告无法正常加载,从而实现屏蔽广告,好处是不用安装额外的屏蔽广告插件,全部让DNS来完成这些工作。

Demo:http://phpdns.xiaoz.top (3天后关闭)

user:xiaoz

password:xiaoz.me 

帮助文档:https://doc.xiaoz.me/docs/phpdns/

PHPDNS源码:https://github.com/helloxz/phpdns

DNSmasq详细折腾请戳这里:

不想折腾又不想自建DNS的请戳这里:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年7月30日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境要求
  • 递归DNS与权威DNS
  • 自建DNS优势
  • 运行原理详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档