# dns-cheater
**Repository Path**: matrixy/dns-cheater
## Basic Information
- **Project Name**: dns-cheater
- **Description**: Java实现的DNS服务器,可通过WEB管理界面随意设置灵活的解析规则。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 388
- **Forks**: 175
- **Created**: 2019-04-27
- **Last Updated**: 2025-06-11
## Categories & Tags
**Categories**: web-service
**Tags**: None
## README
## 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条目管理
#### 添加新解析规则
