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

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使其生效,比如下面的命令。

#!/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的请戳这里:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Python 3并设置本地编程环境

Python是一种灵活的多功能编程语言,可用于许多实例中,在脚本撰写,自动化,数据分析,机器学习和后端开发方面具有优势。1991年首次出版,其名称灵感来自英国喜...

1K20
来自专栏北京马哥教育

十个免费的 Web 压力测试工具

本文列举了是十个免费工具,可以用来进行Web的负载/压力测试的。这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量,以及网站性能。 0. Gr...

1.1K60
来自专栏云计算教程系列

DokuWiki引擎

DokuWiki 是一个使用,用途多样的开源 Wiki 软件,并且不需要数据库。它因简洁易读的语法受到用户的喜爱。而容易维护、备份和整合则使它成为管理员的最爱。...

23020
来自专栏架构师之路

极限优化:php巧用tcp长连接

上一期,和大家分享了YouTube系统架构,本期将和大家分享一个大并发下php使用tcp长连接访问后端的优化方法。 php巧用TCP长连接优化 一、面向人群 如...

71840
来自专栏大内老A

《EnterLib PIAB深入剖析》系列博文汇总

Policy Injection Application Block(PIAB)是Enterprise Library众多Application Block中的...

19260
来自专栏喵了个咪的博客空间

[喵咪Liunx(4)Monit进程监控

[喵咪Liunx(4)Monit进程监控 ? 前言 有一段时间没有更新博客了,最近因为公司项目全球化以及最近慢慢在偏向学习团队管理忙的有点不可开交了,不过这次要...

37890
来自专栏腾讯移动品质中心TMQ的专栏

应用宝基于Robotium自动化测试(下)

基于Robotium自动化测试(上)》一文中小编介绍了框架选择、测试环境搭建、用例编写、跨应用处理等等内容,本文将承接上文,继续介绍测试报告生成、持续集成等等相...

23270
来自专栏finleyMa

说下browserslist

browserslist 是一个开源项目 见到有些package.json里会有如下的配置参数

58610
来自专栏FreeBuf

我是如何通过CSRF拿到Shell的

织梦内容管理系统(DedeCms) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前...

269100
来自专栏实用工具入门教程

如何部署 Python 开发环境

Python是一种灵活的多功能编程语言,可用于许多用例,具有脚本,自动化,数据分析,机器学习和后端开发的优势。1991年首次出版,其名称灵感来自英国喜剧组织Mo...

39600

扫码关注云+社区

领取腾讯云代金券