Giter Club home page Giter Club logo

blackhole's People

Contributors

bitdeli-chef avatar bryant1410 avatar code4craft avatar jsmaster008 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blackhole's Issues

windows下 cache 位置的问题

1.路径不能有空格,否则会报错,貌似找 zones 的时候空格后面的字符忽略了
程序路径为 D:\My Documents\GitHub\blackhole\server\bin
java.io.FileNotFoundException: D:\My\config\zones (系统找不到指定的路径。)
2.日志居然在 D:\usr\local\blackhole\cache 目录下面
我使用 msys 启动后,日志还是相同的位置
msys 下程序路径: D:\My Documents\msys\local\blackhole
cache 是不是应该放到 blackhole.jar 同级目录下呢.

最后,对这个软件赞一个!
顺便推荐一个 dns 168.95.1.1 ,速度和 8.8.8.8 差不多

Mac下报错

Log如下:

λ lei blackhole → λ git master → sudo ./blackhole.sh start
Starting blackhole...
λ lei blackhole → λ git master → Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'husbandEar': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private us.codecraft.wifesays.me.TCPSocketMonitor us.codecraft.wifesays.me.HusbandEar.tcpSocketMonitor; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wifesaysTcpSocketMonitor' defined in URL [jar:file:/usr/local/blackhole/blackhole.jar!/spring/applicationContext-blackhole.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [us.codecraft.wifesays.me.TCPSocketMonitor]: Constructor threw exception; nested exception is java.net.BindException: Address already in use
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
at us.codecraft.blackhole.BlackHole.main(BlackHole.java:64)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private us.codecraft.wifesays.me.TCPSocketMonitor us.codecraft.wifesays.me.HusbandEar.tcpSocketMonitor; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wifesaysTcpSocketMonitor' defined in URL [jar:file:/usr/local/blackhole/blackhole.jar!/spring/applicationContext-blackhole.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [us.codecraft.wifesays.me.TCPSocketMonitor]: Constructor threw exception; nested exception is java.net.BindException: Address already in use
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)

Blackhole在DNS污染的环境中的现象

说下我们遇到的场景,我们把BlackHole服务部署到客户的网络中,现象是访问任何域名都失败,而且把所有访问域名写到blacklist中。是不是可以说明,当地DNS被劫持或污染。

有java报错

14-07-23 18:04:46,395 WARN us.codecraft.blackhole.connector.UDPConnectionWorker
(UDPConnectionWorker.java:47) ## Error processing UDP connection from /192.168.5
0.20:59460,
java.nio.channels.UnresolvedAddressException
at sun.nio.ch.Net.checkAddress(Unknown Source)
at sun.nio.ch.DatagramChannelImpl.send(Unknown Source)
at us.codecraft.blackhole.forward.MultiUDPForwarder.send(MultiUDPForward
er.java:94)
at us.codecraft.blackhole.forward.MultiUDPForwarder.forward(MultiUDPForw
arder.java:79)
at us.codecraft.blackhole.forward.MultiUDPForwarder.forward(MultiUDPForw
arder.java:51)
at us.codecraft.blackhole.connector.UDPConnectionWorker.run(UDPConnectio
nWorker.java:43)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

尝试重装java也不行

Forward的请求包不合规范

Forward的请求包不合规范,forward到114.114.114.114时,会一直没有响应。抓包看了一下,没有将UDP包按照长度截断。

优化A记录配置的性能

之前的A记录配置,全部都转变为正则表达式并进行逐个匹配,在配置多时性能下降明显。新版本将非模糊匹配的记录直接转变为key-value类型进行强匹配,加强了性能。

对不同的用户组提供不同的DNS响应

使用blackhole绑定hosts的用户存在定制的需求,目前解决方案只能是:自己在本地启动blackhole。因为很多用户IP地址会发生变化,多设备之间同步不方便,因此可以提供一个在统一的server里根据不同的用户组,响应不同结果的功能。初定按照IP进行过滤,对于同一网段,也可以考虑使用MAC地址,更加方便。

对forward的外部DNS设定优先级

blackhole可以设置外部DNS,但是目前外部DNS没有办法设置优先级,对于企业内网用户来说,可能希望内部DNS优先生效,所以需要给外部DNS加上优先级功能,优先使用某个DNS的结果,并进行缓存。

使用异步模型重写转发部分

因为UDP本身是无连接的,在转发模式下,可以直接将:

“用户=>blackhole=>远程DNS服务器” 和“远程DNS服务器=>blackhole=>用户”两个处理过程分开。

这样可以避免在线程中等待,将线程数大大降低。同时放弃使用wait/notify的方法进行同步,提高性能。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.