BlackHoleJ

BlackHoleJ是一个Java编写的DNS服务器,它可以进行DNS缓存,也支持自定义域名配置,并可以防止DNS污染。比起老牌的DNS软件pdnsd、BIND,BlackHole功能比较简单,但是更容易使用,性能也更好。

BlackHoleJ的配置跟hosts文件类似,但支持通配符:

# 将"codecraft.us"域名的A记录指向127.0.0.1

127.0.0.1 codecraft.us

# 将所有域名的A记录指向127.0.0.1

127.0.0.1 *

# 将所有以"codecraft"开始的域名(例如:"codecraft.github.com")的A记录指向127.0.0.1

127.0.0.1 codecraft.*.*

下载 代码

依赖环境:

BlackHoleJ是一个Java程序,运行它需要Java 1.6以上的运行环境。
下载BlackHoleJ 下载Java

Windows系统:

可将文件保存到任意目录,并运行blackhole.bat(Win7下无需用管理员权限启动),若弹出终端界面并且持续运行,则启动成功。

关闭时请在命令行界面下使用Ctrl+C退出,而不要直接关闭窗口,否则某些运行记录会无法保存。

启动之后,将系统DNS为127.0.0.1即可。

Linux系统:

Linux系列系统请将文件复制到/usr/local/blackhole/文件夹下,若不在此目录,请将blackhole.sh中的HOME_DIR行修改成你的目录。

你也可以直接使用命令进行下载和安装:

curl http://code4craft.github.io/blackhole/install.sh | sh

启动BlackHoleJ:

sudo /usr/local/blackhole/blackhole.sh start

查看更多的命令,可以直接输入:

/usr/local/blackhole/blackhole.sh

源代码:

BlackHoleJ的源代码已托管到github https://github.com/code4craft/blackhole。BlackHole的连接部分参考了EagleDNS的代码,遵守LGPLv3协议。

Release Notes

2012-6-22 version:1.2.1

增加自定义缓存过期时间的功能。

优化了缓存目录地址。

修复了缓存持久化不生效的bug。

详细进行了性能测试,并更新了文档。

2012-5-31 version:1.2.0

issues#5 对不同的用户组提供不同的DNS响应,从而可以让每个用户管理自己的DNS配置。

开发了一个Web模块Hostd,类似修改hosts,可以供所有用户进行自己DNS配置的管理。

issues#8 对forward的外部DNS设定优先级 便于企业内网配置自己的DNS地址,防止被响应被覆盖。

2012-5-7

修复启动失败后进程不退出的bug。

2012-4-27 version:1.1.3

1.1.3发布。

重写了代理模式,​改为纯异步I/O实现,大大降低使用线程数,并提高了25%的效率。

修复一个高并发下某些响应丢失的bug。

2012-4-2 version:1.1.2

1.1.2发布,修复了一个返回空响应体导致DNS查找失败的问题,从此稳定性大大提高https://github.com/code4craft/blackhole/issues/3

BlackHole也迎来第一位企业级用户。争取发展成为一个公司内网使用的简单可配置的DNS服务器。

2012-3-24 version:1.1.1

1.1.1发布,增加NS配置功能,详情见https://github.com/code4craft/blackhole/blob/master/server/README.md

2012-2-25 version: 1.1

1.1发布,偷偷增加反DNS污染功能。原理: http://my.oschina.net/flashsword/blog/110276

2012-12-31 version: 1.0-alpha

1.0-alpha发布,加入功能:

DNS转发代理,并可缓存结果

可配置多个转发服务器

增加超时机制

2012-12-17 version: 0.1

为了满足模拟邮件发送的需求,开发了第一个版本。可以拦截所有请求到某一IP。从EagelDNS的框架修改而来。

作者邮箱: code4crafter@gmail.com