Skip to content

Java实现的DNS服务器,可通过WEB管理界面随意设置灵活的解析规则。

License

Notifications You must be signed in to change notification settings

wealook/dns-cheater

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DNS-Cheater

DNS服务器,Domain Name Server,域名解析服务器,互联网上相互通信使用的是IP,但是IP是又长又臭又难记,所以创造了域名来解决IP难写难记的问题,记一个g.cn比203.208.50.127强过不知多少倍了。有了域名,也就有了基于最上层的分布式的可能,一个域名,可以对应于多个IP,比如根据来路IP的地区来决定应答服务器的IP,这就是CDN(内容分发网络),再比如基于来路IP的线路,比如联通或是移动或是电信,来应答一个最佳线路的服务器IP,这就是线路优化。更常见的是可以通过轮循或其它规则给出应答的IP,做最顶层的负载均衡。

本项目实现了一个功能较全面的DNS服务器,可以通过WEB端的管理界面,达到如下目的:

  1. 基本的DNS服务器,本服务器实现将通过询问上游DNS服务器来完成对规则外域名的解析应答,通过缓存共用,能够有效的加快域名解析的速度。
  2. 企业内部云的DNS支持,实现内部域名的解析、CDN模拟、域名层面的负载均衡。
  3. 上网行为控制,通过将指定域名的IP解析到127.0.0.1等不可达或不正确的IP上来实现网站屏蔽。
  4. 内部带宽控制,通过将指定域名的IP解析到一个HTTP代理缓存服务器上,实现流量复用。

启动

  1. 查看并修改好配置文件application.properties,按配置文件里的库名和用户名密码创建好,或使用现成的数据库账号,使用/doc/tables.sql数据库建表脚本创建好相应的表
  2. 配置文件里的dns.upstream.server.address为上游DNS服务器地址,将为本DNS服务器提供递归解析能力,当遇到本地解析规则所不支持的域名时,将向上游DNS服务器进行查询并回应。
  3. 使用mvn package打包后直接用java -jar original-dns-cheater-1.0-SNAPSHOT.jar启动。
  4. 或是直接在IDE中启动主入口程序cn.org.hentai.dns.app.DNSCheaterAPP
  5. 此时可以登陆网页管理控制台,默认为http://localhost(如果你是本机运行的话)。
  6. 管理控制台的账号在tables.sql里已经准备好了一个,用户名为admin,密码为123456

nslookup测试工具的使用

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

界面截图

实时监控

DNS条目管理

添加新解析规则

About

Java实现的DNS服务器,可通过WEB管理界面随意设置灵活的解析规则。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 96.0%
  • Java 2.3%
  • CSS 1.2%
  • FreeMarker 0.5%