DNS服务器,Domain Name Server,域名解析服务器,互联网上相互通信使用的是IP,但是IP是又长又臭又难记,所以创造了域名来解决IP难写难记的问题,记一个g.cn比203.208.50.127强过不知多少倍了。有了域名,也就有了基于最上层的分布式的可能,一个域名,可以对应于多个IP,比如根据来路IP的地区来决定应答服务器的IP,这就是CDN(内容分发网络),再比如基于来路IP的线路,比如联通或是移动或是电信,来应答一个最佳线路的服务器IP,这就是线路优化。更常见的是可以通过轮循或其它规则给出应答的IP,做最顶层的负载均衡。
本项目实现了一个功能较全面的DNS服务器,可以通过WEB端的管理界面,达到如下目的:
- 基本的DNS服务器,本服务器实现将通过询问上游DNS服务器来完成对规则外域名的解析应答,通过缓存共用,能够有效的加快域名解析的速度。
- 企业内部云的DNS支持,实现内部域名的解析、CDN模拟、域名层面的负载均衡。
- 上网行为控制,通过将指定域名的IP解析到127.0.0.1等不可达或不正确的IP上来实现网站屏蔽。
- 内部带宽控制,通过将指定域名的IP解析到一个HTTP代理缓存服务器上,实现流量复用。
界面展示:
部署教程:
- 查看并修改好配置文件application.properties,按配置文件里的库名和用户名密码创建好,或使用现成的数据库账号,使用/doc/tables.sql数据库建表脚本创建好相应的表
- 配置文件里的dns.upstream.server.address为上游DNS服务器地址,将为本DNS服务器提供递归解析能力,当遇到本地解析规则所不支持的域名时,将向上游DNS服务器进行查询并回应。
- 使用mvn package打包后直接用java -jar original-dns-cheater-1.0-SNAPSHOT.jar启动。
- 或是直接在IDE中启动主入口程序cn.org.hentai.dns.app.DNSCheaterAPP。
- 此时可以登陆网页管理控制台,默认为http://localhost(如果你是本机运行的话)。
- 管理控制台的账号在tables.sql里已经准备好了一个,用户名为admin,密码为123456。
关注+转发+私信“DNS”,自动发送下载地址,谢谢支持