V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
code4craft
V2EX  ›  分享创造

[发布]Java实现的DNS服务器BlackHoleJ

  •  
  •   code4craft ·
    code4craft · 2013-06-14 20:17:15 +08:00 · 4680 次点击
    这是一个创建于 4215 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写BlackHoleJ是因为公司内网需要,一般DNS服务器配置太复杂。

    BlackHoleJ是一个Java实现的轻型DNS(代理)服务器。特点是比一般DNS服务器配置更简单,可使用hosts格式进行域名配置,并支持缓存,也可以多DNS代理。

    BlackHoleJ还可以通过特征判断的方式,防止DNS污染。

    BlackHoleJ缓存模式下可达到50000qps,跟BIND相当。

    地址:https://github.com/code4craft/blackhole

    BlackHoleJ还有一个Web管理套件hostd,用户可以使用这个Web页面管理自己独立的域名配置(作用与绑hosts文件是类似的,可以支持绑hosts不方便的设备)。

    hostd地址:http://code4craft.github.io/hostd
    6 条回复    1970-01-01 08:00:00 +08:00
    tititake
        1
    tititake  
       2013-06-14 20:51:16 +08:00 via Android   ❤️ 1
    如果和pdnsd比较的话,有什么优势?
    niko
        2
    niko  
       2013-06-14 20:54:10 +08:00   ❤️ 1
    貌似V2EX上JAVA的不多?支持一下
    code4craft
        3
    code4craft  
    OP
       2013-06-14 23:08:06 +08:00
    @tititake 呃,其实写BlackHoleJ之前不知道pdnsd...

    看了一下,pdnsd功能很强大,还有uptest这些,毕竟10年了嘛,占用资源也少(我测试下来只有几百K),但是配置稍微繁琐一点,一个DNS cache还要google一番是比较费劲的。

    BlackHoleJ设计就是给懒人用的,比如你想自建一个防DNS污染的东东,又在公司内网,有些地址需要拦截,使用BlackHoleJ只需要把公司内网DNS配到第一个就可以了,就一行配置。

    BlackHoleJ防污染用的是UDP+持久化污染地址黑名单,理论上比TCP快。

    性能上我比较了下,两个响应都在0ms以下,pdnsd好像直接用的文件缓存,BlackHoleJ用了内存缓存,关闭时才持久化。qps分别是18000和50000,不过好像也没什么意义,都够用了。

    其实最重要的,本来也是学习的态度做的这个,跟一个维护了10年的项目也没啥可比性。至于重复造轮子,见仁见智了,毕竟也没人用Java写过这个嘛。
    tititake
        4
    tititake  
       2013-06-15 09:44:08 +08:00 via Android
    @code4craft 了解了,以前用dnsmasq,前一阵想试试tcp的dns防污染就换了pdnsd。多个选择确实也不错,不过java的基础网络服务确实少见,算是填补空白了吧,呵呵。
    code4craft
        5
    code4craft  
    OP
       2013-06-15 10:15:57 +08:00
    @tititake 嗯,Java没法接触底层的东西,不过DNS在应用层,还算是可以处理的范围。

    其实写的时候是把它当成一个Web服务器的架构来写的,参考了一些Jetty的设计。以后会更偏重处理逻辑吧,比如所有配置文件都是修改即生效,还有能够根据客户端IP来进行不同的DNS解析,这算是一个不同么?呵呵。
    Wy4q3489O1z996QO
        6
    Wy4q3489O1z996QO  
       2014-03-06 17:14:12 +08:00
    想问下,这个能实现只能dns解析吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   938 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:44 · PVG 05:44 · LAX 13:44 · JFK 16:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.