Primary Purpose:
loo is a lightweight DNS query tool designed for debugging and testing. It provides a versatile platform for network administrators, developers, and IT professionals to troubleshoot DNS issues efficiently.
Key Features:
Versatile Protocol Support: loo supports various DNS query types including DNS-over-TCP, TLS, HTTPS, and QUIC, making it adaptable to different network environments.
Flexible Resolver Configuration: Users can specify custom resolvers, enhancing the tool's utility for targeted testing and debugging.
Enhanced Security with Basic Auth: Supports basic authentication, allowing secure queries to protected DNS servers.
EDNS Parameter Customization: Capabilities to add subnet masks and padding enhance query customization, aiding in thorough network diagnostics.
JSON Output Support: Facilitates integration with other tools or scripts by providing structured data output.
Audience & Benefits:
Ideal for network administrators, developers, and IT professionals, loo streamlines DNS troubleshooting by offering a comprehensive toolset. Its ability to handle multiple query types and configurations saves time, reducing the need for multiple specialized tools.
Installable via winget on Windows, loo is an essential addition to any network troubleshooter's toolkit, enhancing efficiency and effectiveness in diagnosing DNS-related issues.
# windows
winget install loo
# macos brew
brew install yonomesh/tap/loo
## or
brew tap yonomesh/tap
brew update && brew install loo
# debian
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://yonomesh.github.io/apt/yonomesh.gpg | gpg --dearmor -o /etc/apt/keyrings/yonomesh.gpg
chmod a+r /etc/apt/keyrings/yonomesh.gpg
echo "deb [signed-by=/etc/apt/keyrings/yonomesh.gpg] https://yonomesh.github.io/apt stable main" \
| tee /etc/apt/sources.list.d/yonomesh.list > /dev/null
apt-get update
apt-get install loo
Usage
# Plain DNS using the default system resolver:
loo example.org
# Plain DNS with a specific resolver:
loo example.org 8.8.8.8
# DNS-over-TCP:
loo example.org tcp://8.8.8.8
# DNS-over-TLS:
loo example.org tls://dns.adguard.com
# DNS-over-TLS with bootstrap resolver (8.8.8.8 used for dns.adguard.com):
loo example.org tls://dns.adguard.com 8.8.8.8
# DNS-over-HTTPS (HTTP/2):
loo example.org https://dns.adguard.com/dns-query
# DNS-over-HTTPS with HTTP/3 support (auto-select):
HTTP3=1 loo example.org https://dns.google/dns-query
# DNS-over-HTTPS forcing HTTP/3 only:
loo example.org h3://dns.google/dns-query
# DNS-over-HTTPS with bootstrap resolver (8.8.8.8 used for dns.adguard.com):
loo example.org https://dns.adguard.com/dns-query 8.8.8.8
# DNS-over-HTTPS with basic auth (AdGuard DNS supported):
loo example.org https://username:password@d.adguard-dns.com/dns-query
# DNS-over-QUIC:
loo example.org quic://dns.adguard.com
# PTR query for IPv4 (auto-detected when RRTYPE is omitted):
loo 8.8.8.8
# PTR query for IPv6:
loo 2606:4700:4700::1111
# JSON output:
JSON=1 loo example.org 94.140.14.14
# Disable certificate verification:
VERIFY=0 loo example.org tls://1.1.1.1
# Specify resource record type (default A):
RRTYPE=AAAA loo example.org tls://1.1.1.1
RRTYPE=HTTPS loo example.org tls://1.1.1.1
# Specify DNS class (default IN):
CLASS=CH loo example.org tls://1.1.1.1
# Add EDNS subnet:
SUBNET=1.2.3.4/24 loo example.org tls://8.8.8.8
# Add EDNS0 Padding:
PAD=1 loo example.org tls://1.1.1.1
# Verbose logging:
VERBOSE=1 loo example.org tls://dns.adguard.com