2026-01-16 21:49:22 +08:00
2026-01-16 00:38:03 +08:00
2026-01-16 21:49:22 +08:00
2026-01-16 00:38:03 +08:00
2026-01-16 13:27:07 +08:00
2026-01-16 13:27:07 +08:00
2026-01-16 13:33:32 +08:00
2026-01-16 13:33:32 +08:00
2026-01-16 13:38:41 +08:00

WTFnet

WTFnet is a pure CLI toolbox for diagnosing network problems on Linux and Windows.

Highlights

  • System snapshot: interfaces, IPs, routes, DNS config.
  • Ports, neighbors, and trusted root certificates.
  • Probing: ping, tcping, traceroute (best-effort).
  • DNS: query/detect/watch with GeoIP, DoT/DoH, and SOCKS5 for DoH.
  • GeoIP offline lookup via GeoLite2 Country/ASN.
  • Subnet calculator: subnet/contains/overlap/summarize.

Quickstart

cargo run -p wtfnet-cli -- sys ifaces
cargo run -p wtfnet-cli -- dns query example.com A
cargo run -p wtfnet-cli -- calc subnet 192.168.1.10 255.255.255.0

Usage examples

# System snapshot
wtfn sys ifaces
wtfn sys ip --all
wtfn sys route --ipv4
wtfn sys dns

# Ports and neighbors
wtfn ports listen --tcp
wtfn ports who 443
wtfn neigh list --ipv6

# GeoIP and probing
wtfn geoip lookup 8.8.8.8
wtfn probe ping example.com --count 4
wtfn probe tcping example.com:443 --count 4
wtfn probe trace example.com:443 --max-hops 20

# DNS
wtfn dns query example.com A
wtfn dns query example.com AAAA --server 1.1.1.1
wtfn dns query example.com A --transport doh --server 1.1.1.1 --tls-name cloudflare-dns.com
wtfn dns detect example.com --transport doh --servers 1.1.1.1 --tls-name cloudflare-dns.com
wtfn dns watch --duration 10s --filter example.com

# Calc
wtfn calc contains 192.168.0.0/16 192.168.1.0/24
wtfn calc overlap 10.0.0.0/24 10.0.1.0/24
wtfn calc summarize 10.0.0.0/24 10.0.1.0/24

Supported flags

Global flags:

  • --json / --pretty
  • --no-color / --quiet
  • -v / -vv
  • --log-level <error|warn|info|debug|trace>
  • --log-format <text|json>
  • --log-file <path>

Command flags (implemented):

  • sys ip: --all, --iface <name>
  • sys route: --ipv4, --ipv6, --to <ip>
  • ports listen: --tcp, --udp, --port <n>
  • neigh list: --ipv4, --ipv6, --iface <name>
  • probe ping: --count <n>, --timeout-ms <n>, --interval-ms <n>, --no-geoip
  • probe tcping: --count <n>, --timeout-ms <n>, --no-geoip
  • probe trace: --max-hops <n>, --timeout-ms <n>, --udp, --port <n>, --no-geoip
  • dns query: --server <ip[:port]>, --transport <udp|tcp|dot|doh>, --tls-name <name>, --socks5 <url>, --timeout-ms <n>
  • dns detect: --servers <csv>, --transport <udp|tcp|dot|doh>, --tls-name <name>, --socks5 <url>, --repeat <n>, --timeout-ms <n>
  • dns watch: --duration <Ns|Nms>, --iface <name>, --filter <pattern>

GeoIP data files

GeoLite2 mmdb files should live in data/. Lookup order:

  1. NETTOOL_GEOIP_COUNTRY_DB / NETTOOL_GEOIP_ASN_DB
  2. data/ next to the CLI binary
  3. data/ in the current working directory

Build and package

cmake -S . -B build
cmake --build build
cmake --build build --target package

Install:

cmake --build build --target install

Roadmap

v0.1 (MVP)

  • sys: ifaces/ip/route/dns
  • ports: listen/who
  • probe: ping + tcping
  • calc: subnet/contains/overlap
  • basic logging + --json everywhere

v0.2 (current requirements)

  • dns: query + detect + watch (best-effort)
  • geoip: local Country+ASN mmdb integration
  • http: head/get (HTTP/2 required; HTTP/3 best-effort optional)
  • tls: handshake/verify/cert/alpn
  • neigh: ARP/NDP snapshot
  • discover: mdns + ssdp (bounded)
  • diag: bundle export (zip)

v0.3 (future upgrades)

  • richer trace output (reverse lookup, per-hop loss)
  • TLS extras: OCSP stapling indicator, more chain parsing
  • ports conns improvements (top talkers / summary)
  • better baseline/diff for system roots
  • smarter "diagnose " workflow mode

Current stage

Implemented:

  • Core CLI with JSON output and logging.
  • sys, ports, neigh, cert roots.
  • geoip, probe, dns query/detect/watch.
  • DoT/DoH + SOCKS5 proxy for DoH.
  • calc subcrate with subnet/contains/overlap/summarize.
  • CMake/Makefile build + package + install targets.

In progress:

  • http, tls, discover, diag.

License

MIT (see LICENSE).

Description
"Wtf with my network?" A toolbox helps you debug networking problems.
Readme 11 MiB
0.4.0 Latest
2026-01-17 22:44:40 +08:00
Languages
Rust 98.2%
Python 1.7%
Just 0.1%