DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。使用DNSmasq可以很方便的搭建递归DNS(公共DNS,如8.8.8.8
),配合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使其生效,比如下面的命令。
#!/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来完成这些工作。
获取捐赠版
PHPDNS捐赠版功能上没有任何区别,PHPDNS捐赠版可提供首次安装调试。
帮助文档:https://doc.xiaoz.org/docs/phpdns/
源码:https://github.com/helloxz/phpdns
安装完后网页一直显示dns异常求解啊
不再添加功能了吗,可以弄个登陆,连接MySQL,供多人使用。
怎么安装?后台账号密码是多少?
这个可以,我要试一把。
建议增加一个自动更新DNS屏蔽广告规则。
能使用ABP的规则 之类的。
安装完登录出现这个问题!请大佬看下
Parse error: syntax error, unexpected ‘list’ (T_LIST), expecting identifier (T_STRING) in /www/wwwroot/dns/application/controllers/Admin.php on line 51
A PHP Error was encountered
Severity: Parsing Error
Message: syntax error, unexpected ‘list’ (T_LIST), expecting identifier (T_STRING)
Filename: controllers/Admin.php
Line Number: 51
Backtrace:
注意不要访问
/admin/list/hosts/
这样的地址,正确的地址应该是/admin/list/hosts/0
,注意后面有个分页参数0一、希望能够增加 网址指向,如访问baidu.com指向到www.baidu.com的功能
二、希望能够增加统计查询功能,能够查看通过IP访问的网址地址列表
如https://studygolang.com/articles/844
兄弟,这是dns
想去捣鼓却发现知识匮乏的我居然无从下手
特来资瓷楼主一发。
感觉好难呀