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
。
- 打开
命令提示符
或是直接运行cmd
。 - 输入
nslookup
,进入DNS测试工具的命令行交互环境。(可以输入set d2
来启用高级调试模式,输入help
查看更多帮助) - 输入
server {我的IP}
来将DNS服务器设置为你所运行的主机的IP地址。 - 输入
www.baidu.com
,查看响应的IP。此时已经可以在WEB管理控制台
下的服务器监控
下看到实时的请求统计了。