All Projects → jedisct1 → Dnsblast

jedisct1 / Dnsblast

Licence: other
A simple and stupid load testing tool for DNS resolvers

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Dnsblast

Pihole Unbound
Guide to setup Unbound recursive DNS resolver with Pi-Hole. With additional configs for speed and security!! 🚀🔒
Stars: ✭ 165 (-10.81%)
Mutual labels:  dns
Blokada
The official repo for Blokada for Android and iOS.
Stars: ✭ 2,427 (+1211.89%)
Mutual labels:  dns
Netdot
Network Documentation Tool
Stars: ✭ 180 (-2.7%)
Mutual labels:  dns
Ddoor
DDoor - cross platform backdoor using dns txt records
Stars: ✭ 168 (-9.19%)
Mutual labels:  dns
Dnsperf
DNS Performance Testing Tools
Stars: ✭ 171 (-7.57%)
Mutual labels:  dns
Dnslib
A Python library to encode/decode DNS wire-format packets
Stars: ✭ 174 (-5.95%)
Mutual labels:  dns
Ip Attack
Auto IP or Domain Attack Tool ( #1 )
Stars: ✭ 162 (-12.43%)
Mutual labels:  dns
Dns Java
DNS wrapper library that provides SRV lookup functionality
Stars: ✭ 183 (-1.08%)
Mutual labels:  dns
Recsech
Recsech is a tool for doing Footprinting and Reconnaissance on the target web. Recsech collects information such as DNS Information, Sub Domains, HoneySpot Detected, Subdomain takeovers, Reconnaissance On Github and much more you can see in Features in tools .
Stars: ✭ 173 (-6.49%)
Mutual labels:  dns
Dnsproxy
防 DNS 缓存污染,兼顾查询质量与速度
Stars: ✭ 177 (-4.32%)
Mutual labels:  dns
Sslify
Rapidly SSLify Your Server!
Stars: ✭ 168 (-9.19%)
Mutual labels:  dns
Partyloud
A simple tool to generate fake web browsing and mitigate tracking
Stars: ✭ 170 (-8.11%)
Mutual labels:  dns
Rrda
REST API allowing to perform DNS queries over HTTP
Stars: ✭ 176 (-4.86%)
Mutual labels:  dns
Dnsmasqweb
基于DNSmasq的DNS解析、以及DHCP地址分配系统
Stars: ✭ 166 (-10.27%)
Mutual labels:  dns
Txeh
Go library and CLI utilty for /etc/hosts management.
Stars: ✭ 181 (-2.16%)
Mutual labels:  dns
Dns Proxy
Simple DNS Proxy written in Node.JS. Override hosts, domains, or tlds. Redirect certain domains to different nameservers.
Stars: ✭ 165 (-10.81%)
Mutual labels:  dns
Dcompass
[WIP] High-performance programmable DNS server aiming at robustness, speed, and flexibility
Stars: ✭ 174 (-5.95%)
Mutual labels:  dns
Redirect.center
Redirect domains using DNS only
Stars: ✭ 185 (+0%)
Mutual labels:  dns
Dns Heaven
Fixes stupid macOS DNS stack (/etc/resolv.conf)
Stars: ✭ 182 (-1.62%)
Mutual labels:  dns
Browsertunnel
Surreptitiously exfiltrate data from the browser over DNS
Stars: ✭ 177 (-4.32%)
Mutual labels:  dns

DNSBlast

dnsblast is a simple and really stupid load testing tool for DNS resolvers.

Give it the IP address of a resolver, the total number of queries you want to send, the rate (number of packets per second), and dnsblast will tell you how well the resolver is able to keep up.

What it is:

  • a tool to spot bugs in DNS resolvers.
  • a tool to help you tune and tweak DNS resolver code in order to improve it in some way.
  • a tool to help you tune and tweak the operating system so that it can properly cope with a slew of UDP packets.
  • a tool to test a resolver with real queries sent to the real and scary interwebz, not to a sandbox.

What it is not:

  • a tool for DoS'ing resolvers. There are way more efficient ways to achieve this.
  • a benchmarking tool.
  • a tool for testing anything but how the server behaves under load. If you need a serious test suite, take a look at what Unbound provides.

What it does:

It sends queries for names like <random char><random char><random char><random char>.com.

Yes, that's 4 random characters dot com. Doing that achieves a NXDOMAIN vs "oh cool, we got a reply" ratio that is surprisingly close to the one you get from real queries made by real users.

Oh, and it displays that:

Sent: [1000] - Received: [799] - Reply rate: [250 pps] - Ratio: [79.90%]

That's the number of packets that have been sent, how many have been received (if everything is fine, both values should be the same), how fast the server replies, and the ratio between received and sent queries.

Different query types are sent. Namely SOA, A, AAAA, MX and TXT, and the probability that a query type gets picked is also close to its probability in the real world.

Names are occasionally repeated, also to get closer to what happens in the real world. That triggers resolver code responsible for queuing and merging queries.

The test is deterministic: the exact same sequence of packets is sent every time you fire up dnsblast. The magic resides in the power of the rand() function with a fixed seed.

What it does not:

It doesn't support DNSSEC, it doesn't send anything using TCP, it doesn't pay attention to the content the resolver sents.

Fuzzing:

In addition, dnsblast can send malformed queries.

Most resolvers just ignore these, so don't expect a high replies/queries ratio. But this feature can also help spotting bugs.

The fuzzer is really, really, really simple, though. It just changes some random bytes. It doesn't even pay attention to the server's behavior.

How do I compile it?

Type: make.

The code it trivial and should be fairly portable, although it only gets tested on OSX and OpenBSD.

How do I use it?

To send a shitload of queries to 127.0.0.1:

dnsblast 127.0.0.1

To send 50,000 queries to 127.0.0.1:

dnsblast 127.0.0.1 50000

To send 50,000 queries at a rate of 100 queries per second:

dnsblast 127.0.0.1 50000 100

To send 50,000 queries at a rate of 100 qps to a non standard-port, like 5353:

dnsblast 127.0.0.1 50000 100 5353

To send malformed packets, prepend "fuzz":

dnsblast fuzz 127.0.0.1
dnsblast fuzz 127.0.0.1 50000
dnsblast fuzz 127.0.0.1 50000 100
dnsblast fuzz 127.0.0.1 50000 100 5353

If you think that it desperately cries for getopt(), you're absolutely correct.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].