Table of Contents

Overview

doggo is a modern DNS client for the command line, designed to be user-friendly and feature-rich, with colorized output and extensive query options.

Key Features

  • Modern CLI interface
  • Colorized output
  • Multiple output formats
  • DNSSEC validation
  • Multiple transport protocols
  • JSON output support
  • DNS-over-TLS/HTTPS
  • Extensive query types

Installation

Ubuntu (22.04/24.04)

# Using snap
sudo snap install doggo
 
# From source
go install github.com/mr-karan/doggo@latest

macOS

# Using Homebrew
brew install doggo

Basic Usage

Simple Queries

# Basic query
doggo example.com
 
# Specify record type
doggo A example.com
 
# Multiple record types
doggo A MX example.com
 
# Short output
doggo --short example.com

DNS Servers

# Use specific nameserver
doggo @8.8.8.8 example.com
 
# Use multiple nameservers
doggo @8.8.8.8 @1.1.1.1 example.com
 
# Use custom port
doggo @8.8.8.8:53 example.com

Query Types

Common Record Types

# A records
doggo A example.com
 
# AAAA records
doggo AAAA example.com
 
# MX records
doggo MX example.com
 
# TXT records
doggo TXT example.com
 
# NS records
doggo NS example.com
 
# All records
doggo ANY example.com

Special Queries

# Reverse DNS lookup
doggo -x 8.8.8.8
 
# DNSSEC records
doggo DS example.com
doggo DNSKEY example.com
 
# Service discovery
doggo SRV _http._tcp.example.com

Output Formats

Format Options

# JSON output
doggo --json example.com
 
# Minimal output
doggo --short example.com
 
# Table format
doggo --table example.com
 
# Raw DNS wire format
doggo --wire example.com

Customizing Output

# Select specific fields
doggo --json-fields name,type,ttl example.com
 
# Pretty JSON
doggo --json --pretty example.com
 
# No colors
doggo --no-color example.com

Advanced Features

Transport Protocols

# DNS-over-TLS
doggo @tls://1.1.1.1 example.com
 
# DNS-over-HTTPS
doggo @https://cloudflare-dns.com/dns-query example.com
 
# TCP only
doggo --tcp example.com

Query Options

# Set timeout
doggo --timeout 5s example.com
 
# Set number of retries
doggo --retry 3 example.com
 
# Enable trace
doggo --trace example.com

DNSSEC Validation

# Enable DNSSEC validation
doggo --dnssec example.com
 
# Check DNSSEC chain
doggo --dnssec --trace example.com
 
# Show DNSSEC details
doggo --dnssec --debug example.com

DNS Security

Secure DNS Queries

# Use DNS-over-TLS
doggo @tls://dns.google example.com
 
# Use DNS-over-HTTPS
doggo @https://dns.google/dns-query example.com
 
# Verify DNSSEC
doggo --dnssec example.com

Security Options

# Enable all security features
doggo --dnssec \
      --no-nsid \
      --no-edns \
      example.com
 
# Check for DNS poisoning
doggo --verify-all @8.8.8.8 @1.1.1.1 example.com

Best Practices

Query Guidelines

# Complete domain check
doggo A AAAA MX TXT example.com
 
# Security check
doggo --dnssec \
      --verify-all \
      @8.8.8.8 example.com
 
# Performance testing
doggo --timeout 2s \
      --retry 2 \
      --stats example.com

Troubleshooting

# Debug mode
doggo --debug example.com
 
# Trace queries
doggo --trace example.com
 
# Show statistics
doggo --stats example.com

Quick Reference

Essential Commands

# Basic query
doggo example.com
 
# Specific record
doggo A example.com
 
# Multiple records
doggo A MX TXT example.com
 
# Reverse lookup
doggo -x 8.8.8.8

Common Options

--json       # JSON output
--short      # Minimal output
--table      # Table format
--debug      # Debug mode
--trace      # Trace queries
--dnssec     # DNSSEC validation
--timeout    # Query timeout
--retry      # Number of retries

Example Use Cases

Domain Verification

#!/bin/bash
# Complete domain check
domain="example.com"
 
echo "Checking $domain..."
doggo --dnssec \
      --verify-all \
      A AAAA MX TXT \
      "$domain"

Mail Server Verification

#!/bin/bash
# Check mail records
domain="example.com"
 
echo "Checking mail records for $domain..."
doggo MX "$domain"
doggo TXT "$domain" | grep -i "spf"
doggo TXT "_dmarc.$domain"

Security Audit

#!/bin/bash
# Security checks
domain="example.com"
 
echo "Security audit for $domain..."
doggo --dnssec \
      --verify-all \
      --debug \
      DNSKEY DS NS \
      "$domain"