All Projects → dkorunic → dnstrace

dkorunic / dnstrace

Licence: MIT license
Yet another DNS query tracing/analysis tool written in Go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to dnstrace

ts3admin.class
The ts3admin.class is a powerful api for communication with Teamspeak 3 Servers from your website! Your creativity knows no bounds!
Stars: ✭ 107 (+205.71%)
Mutual labels:  query
py-jsonq
A simple Python package to Query over Json Data
Stars: ✭ 100 (+185.71%)
Mutual labels:  query
service-fabric-queryable
Enable query support for your stateful services in Service Fabric via the OData protocol.
Stars: ✭ 42 (+20%)
Mutual labels:  query
PageQueryBoss
A ProcessWire Module to build complex nested queries containing multipple fields and pages and return an array that can be parsed to JSON. This is usefull to fetch data for SPA and PWA.
Stars: ✭ 18 (-48.57%)
Mutual labels:  query
powerorm
A very simple but effective php orm
Stars: ✭ 21 (-40%)
Mutual labels:  query
rx-query
timdeschryver.github.io/rx-query/
Stars: ✭ 195 (+457.14%)
Mutual labels:  query
dora
JSON parser/explorer
Stars: ✭ 42 (+20%)
Mutual labels:  query
howto
Dumping ground for various HowTo documents that I produce
Stars: ✭ 58 (+65.71%)
Mutual labels:  sysadmin
kql
Kirby's Query Language API combines the flexibility of Kirby's data structures, the power of GraphQL and the simplicity of REST.
Stars: ✭ 120 (+242.86%)
Mutual labels:  query
Notify-me
A shell command to notify you via Telegram
Stars: ✭ 34 (-2.86%)
Mutual labels:  sysadmin
facilejdbc
FacileJDBC - Fast, simple and lightweight JDBC wrapper
Stars: ✭ 34 (-2.86%)
Mutual labels:  query
SQLiteHelper
🗄 This project comes in handy when you want to write a sql statement easily and smarter.
Stars: ✭ 57 (+62.86%)
Mutual labels:  query
chartjs-plugin-datasource-prometheus
Chart.js plugin for Prometheus data loading
Stars: ✭ 77 (+120%)
Mutual labels:  query
lfcs
Personal notes to prepare for the Linux Foundation Certified System Administrator (LFCS) exam
Stars: ✭ 69 (+97.14%)
Mutual labels:  sysadmin
polscan
Zero-setup SSH-based scanner with extensive visualizations for Debian server inventory, policy compliance and vulnerabilities
Stars: ✭ 57 (+62.86%)
Mutual labels:  sysadmin
cisco-ip-trace
Trace IP addresses to edge Cisco switch port
Stars: ✭ 65 (+85.71%)
Mutual labels:  sysadmin
micro-query
Simple query string parser for Vercel's Micro
Stars: ✭ 23 (-34.29%)
Mutual labels:  query
ammlib
bash-library to provide high-level functions with whatever it has available. No hard-dependency: it'll do with what is available (or will fail fast)
Stars: ✭ 24 (-31.43%)
Mutual labels:  sysadmin
LDflex-Comunica
Comunica query engine support for the LDflex language
Stars: ✭ 15 (-57.14%)
Mutual labels:  query
querqy-elasticsearch
Querqy for Elasticsearch
Stars: ✭ 37 (+5.71%)
Mutual labels:  query

dnstrace

GitHub license GitHub release Build Status Go Report Card

About

dnstrace is yet another DNS query/response tracing tool. Its purpose is to emulate iterative (with RD flag being unset) DNS queries usually being sent from any DNS recursor and traverse DNS authoritative hierarchy in search for the given query name and query type, assuming IN class. It will display every query and response, indicating reasons (delegations, CNAME following, missing glue etc.) for any new sub-query and additionally displaying individual and total response time.

EDNS is supported (with 4096 message payload size), as well as TCP failover in case of UDP communication issues (truncated messages and/or timeouts). When using EDNS it is also possible to manually (or automatically through Ipify) specify Client-Subnet option to test for Geo-aware DNS responses.

It is also possible to set Recursion Desired flag which essentially disables DNS tracing and relies on local resolver (from /etc/resolver.conf) or remote DNS cache/resolver to perform all iterative queries and return the final result.

Demo

Installation

There are two ways of installing dnstrace:

Manual

Download your preferred flavor from the releases page and install manually.

Using go get

go install github.com/dkorunic/dnstrace@latest

Usage

Usage:

Usage: ./dnstrace [option] [qtype] qname [@server]
Options:
  -client string
    	Sends EDNS Client Subnet option with specified IP address
  -edns
    	Enable EDNS support in queries (default true)
  -fallback
    	Fallback to 4K UDP message buffer size and then to TCP (default true)
  -ignoresub
    	Ignore tracing sub-requests when missing glue
  -port int
    	Use to send DNS queries to non-standard ports (default 53)
  -recurse
    	Toggle RD (recursion desired) flag in queries
  -tcp
    	Use TCP when querying DNS servers

NB: Nameserver (@server) will be ignored if not using recurse flag and random root nameserver will be used instead.
Client option (-client) accepts "external" keyword and will use ipify.org to get your public IP.  When using recurse (-recurse)
flag, if nameserver is not specified (@server), system resolver (from /etc/resolv.conf) will be used.  All boolean flags
accept true or false arguments, for instance "-edns=false"

This tool is typically used to establish worst-case scenario RTT for iterative queries being sent from resolvers and
doesn't necessarily reflect real life.

Typical use case is to specify one or more qtypes (MX, A, NS etc.) and one or more qnames (for example apple.com, www.google.com, etc.). When there is no qtype specified, A is assumed. If temporary result is CNAME and qtype is A, dnstrace will attempt to follow CNAME to the target. Internet qclass (IN) is assumed at all times.

It is possible to override default flag values by specifiying values, for example -edns=false or -client=8.8.8.8.

Typical use case would be:

dnstrace a porn.xxx

Then we are not interested in seeing sub-queries being sent to resolve missing glue for NS delegations, -ignoresub flag can be used.

Bugs, feature requests, etc.

Please open a PR or report an issue. Thanks!

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].