All Projects → MiniDNS → Minidns

MiniDNS / Minidns

Licence: other
DNS library for Android and Java SE

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Minidns

dns-resolver-infra
Privacy DNS infrastructure
Stars: ✭ 39 (-74.51%)
Mutual labels:  dnssec
Dank Selfhosted
Automated solution for hosting email, web, DNS, XMPP, and ZNC on OpenBSD.
Stars: ✭ 800 (+422.88%)
Mutual labels:  dnssec
Ldns
LDNS is a DNS library that facilitates DNS tool programming
Stars: ✭ 127 (-16.99%)
Mutual labels:  dnssec
Zonemaster
The Zonemaster Project
Stars: ✭ 282 (+84.31%)
Mutual labels:  dnssec
Dns
DNS library in Go
Stars: ✭ 5,944 (+3784.97%)
Mutual labels:  dnssec
Statzone
DNS zone file analyzer targeted at TLD zones
Stars: ✭ 38 (-75.16%)
Mutual labels:  dnssec
danetls
Program to test DANE enabled TLS Services
Stars: ✭ 18 (-88.24%)
Mutual labels:  dnssec
Knot
A mirrored repository
Stars: ✭ 138 (-9.8%)
Mutual labels:  dnssec
Sdns
Privacy important, fast, recursive dns resolver server with dnssec support
Stars: ✭ 658 (+330.07%)
Mutual labels:  dnssec
Unbound
Unbound is a validating, recursive, and caching DNS resolver.
Stars: ✭ 1,103 (+620.92%)
Mutual labels:  dnssec
Dt
DNS tool - display information about your domain
Stars: ✭ 313 (+104.58%)
Mutual labels:  dnssec
Bugcrowd Levelup Subdomain Enumeration
This repository contains all the material from the talk "Esoteric sub-domain enumeration techniques" given at Bugcrowd LevelUp 2017 virtual conference
Stars: ✭ 513 (+235.29%)
Mutual labels:  dnssec
Internet.nl
Internet standards compliance test suite
Stars: ✭ 56 (-63.4%)
Mutual labels:  dnssec
Homebox
A set of ansible scripts to build a personal mail server / private cloud / etc.
Stars: ✭ 260 (+69.93%)
Mutual labels:  dnssec
Desec Stack
Backbone of the deSEC.io Free Secure DNS Hosting Service
Stars: ✭ 130 (-15.03%)
Mutual labels:  dnssec
resolve
Command line iterative DNS resolution testing program
Stars: ✭ 17 (-88.89%)
Mutual labels:  dnssec
Dnssecjava
A DNSSEC validating stub resolver for Java.
Stars: ✭ 33 (-78.43%)
Mutual labels:  dnssec
Trust Dns
A Rust based DNS client, server, and resolver
Stars: ✭ 2,155 (+1308.5%)
Mutual labels:  dnssec
Dnspython
a powerful DNS toolkit for python
Stars: ✭ 1,838 (+1101.31%)
Mutual labels:  dnssec
Getdns Node
Node.js bindings of getdns, a modern asynchronous DNS API.
Stars: ✭ 59 (-61.44%)
Mutual labels:  dnssec

MiniDNS - A DNSSEC enabled DNS library

Build Status Coverage Status

MiniDNS ("Modular Internet Name Informer for DNS") is a DNS library for Android and Java SE. It can parse resource records (A, AAAA, NS, SRV, …) and is easy to use and extend. MiniDNS aims to be secure, modular, efficient and as simple as possible. It also provides support for DNSSEC and DANE, and is thus the ideal resolver if you want to bring DNSSEC close to your application.

It comes with a pluggable cache mechanism, a pre-configured cache and an easy to use high-level API (minidns-hla) for those who just want to perform a reliable lookup of a domain name.

Notice: DNSSEC/DANE support has not yet undergo a security audit. If you find the project useful and if you are able to provide the resources for a security audit, then please contact us.

If you are looking for a DNSSEC-enabled resolver in C (and/or Lua) then hava a look at the Knot Resolver. Also this library is not intended to be used as a DNS server. You might want to look into dnsjava for such functionality.

MiniDNS release resources (javadoc, …) an be found at https://minidns.org/releases

Quickstart

The easiest way to use MiniDNS is by its high-level API provided by the minidns-hla Maven artifact. Simply add the artifact to your projects dependencies. For example with gradle

compile "org.minidns:minidns-hla:$minidnsVersion"

Then you can use the ResolverApi or DnssecResolverApi class to perform DNS lookups and check if the result was authenticated via DNSSEC. The following example shows a lookup of A records of 'verteiltesysteme.net'.

ResolverResult<A> result = DnssecResolverApi.INSTANCE.resolve("verteiltesysteme.net", A.class);
if (!result.wasSuccessful()) {
	RESPONSE_CODE responseCode = result.getResponseCode();
	// Perform error handling.
	
	return;
}
if (!result.isAuthenticData()) {
	// Response was not secured with DNSSEC.
	
	return;
}
Set<A> answers = result.getAnswers();
for (A a : answers) {
  InetAddress inetAddress = a.getInetAddress();
  // Do someting with the InetAddress, e.g. connect to.
  
}

MiniDNS also provides full support for SRV resource records and their handling.

SrvResolverResult result = DnssecResolverApi.INSTANCE.resolveSrv(SrvType.xmpp_client, "example.org")
if (!result.wasSuccessful()) {
	RESPONSE_CODE responseCode = result.getResponseCode();
	// Perform error handling.
	
	return;
}
if (!result.isAuthenticData()) {
	// Response was not secured with DNSSEC.
	
	return;
}
List<ResolvedSrvRecord> srvRecords = result.getSortedSrvResolvedAddresses();
// Loop over the domain names pointed by the SRV RR. MiniDNS will return the list
// correctly sorted by the priority and weight of the related SRV RR.
for (ResolvedSrvRecord srvRecord : srvRecord) {
	// Loop over the Internet Address RRs resolved for the SRV RR. The order of
	// the list depends on the prefered IP version setting of MiniDNS.
	for (InternetAddressRR inetAddressRR : srvRecord.addresses) {
		InetAddress inetAddress = inetAddressRR.getInetAddress();
		int port = srvAddresses.port;
		// Try to connect to inetAddress at port.
		
	}
}

REPL

MiniDNS comes with a REPL which can be used to perform DNS lookups and to test the library. Simple use ./repl to start the REPL. The loaded REPL comes with some predefined variables that you can use to perform lookups. For example c is a simple DNS client. See minidns-repl/scala.repl for more.

minidns $ ./repl
...
scala> c query ("measite.de", TYPE.A)
res0: dnsqueryresult.DnsQueryResult = [email protected](QUERY NO_ERROR qr rd ra) { \
  [Q: measite.de.	IN	A] \
  [A: measite.de.	3599	IN	A	85.10.226.249] \
  [X: EDNS: version: 0, flags:; udp: 512]
}
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].