Watch every DNS query your processes make โ in real time, with per-process attribution, query types, resolved IPs, and latency. No packet capture tools. No tcpdump. No noise.
$ sudo proc-trace-dns 12341 curl A api.github.com โ 140.82.121.6 1.4ms 12342 python3 A api.openai.com โ 104.18.7.192 2.1ms 12342 python3 AAAA api.openai.com โ 2606:4700::6812 2.1ms 12343 wget A releases.ubuntu.com โ 185.125.190.36 0.9ms 12344 node A registry.npmjs.org โ 104.16.0.35 1.7ms 12345 apt A deb.debian.org โ NXDOMAIN 0.5ms
Every DNS query is tagged with the PID and process name that made it. No more guessing which binary is calling home.
Shows A, AAAA, MX, CNAME, TXT, PTR, and SRV queries โ not just hostnames. See the full picture of what's being resolved.
Measures round-trip time for each query. Spot slow resolvers, high-latency upstreams, or retries caused by timeouts.
Watch all DNS traffic across every process at once, or filter to a specific PID, process name, or domain pattern.
Surfaces failed lookups โ NXDOMAIN, SERVFAIL, timeouts โ alongside successful ones. Debug misconfigured resolvers instantly.
Does not require libpcap, tcpdump, or promiscuous mode. Uses eBPF or raw socket interception at the resolver level.
When an install script runs, does it phone home? When your app starts up, which DNS queries fail? When something breaks after a network change, which process is hitting the wrong resolver?
Existing tools are painful: tcpdump port 53 shows packets but no process context. strace -e trace=network is verbose and affects performance. System resolver logs are per-query without process attribution.
proc-trace-dns answers these questions with one command โ no packet capture, no daemon configuration, no noise from unrelated queries.
Watch what domains a package installer or build system contacts. Does npm install resolve anything unexpected?
Identify NXDOMAIN failures, retries, and fallback resolver behavior. Find exactly which process is hitting a broken DNS server.
Measure DNS round-trip times per process. Find slow resolvers adding latency to your app's startup or request path.
Watch for unexpected domains being resolved at startup or on a schedule. Catch beaconing behavior before it connects outbound.
See every hostname a microservice resolves during its lifecycle. Build an accurate picture of external dependencies.
Understand what DNS lookups your system generates at idle. A great way to audit service discovery and understand your infrastructure.