Real natcheck runs captured across networks. Any address that could identify a specific machine is redacted: public IPs to RFC 5737 (IPv4 203.0.113.0/24, 198.51.100.0/24) and RFC 3849 (IPv6 2001:db8::/32) documentation ranges; private RFC 1918 source addresses to generic placeholders (e.g., 192.168.1.2). Ports, RTTs, error message shapes, and external STUN server IPs (Google, Cloudflare) are real. Ephemeral test-infrastructure IPs (e.g., a destroy-after coturn droplet) are redacted to RFC 5737 placeholders since they get reassigned after destroy.
| File | Network | Servers | Outcome |
|---|---|---|---|
dev-machine-default.txt / .json |
Residential dual-stack (IPv4 + IPv6) | default (Google + Cloudflare) | IPv6 preferred by DNS; Google IPv6 responds; Cloudflare IPv6 times out → 1/2 probes → Unknown verdict, exit 1 |
dev-machine-ipv4.txt / .json |
Same network, IPv4-forced via A-record --server |
Google 74.125.250.129:19302, Cloudflare 162.159.207.0:3478 |
Google IPv4 responds; Cloudflare IPv4 also times out → same Unknown verdict |
filtering.txt / .json |
Same network + custom coturn (DO droplet, multi-IP form per docs/coturn-setup.md) |
Google + Cloudflare hostname defaults + coturn IPv4 literal | Google + Cloudflare resolve IPv6 (2 probes, ADM internally); coturn via IPv4 (singleton). Per-family combine: v6 confident ADM + v4 Unknown → combined ADM. Filtering: APDF (tested against coturn). mixed_address_family_probes warning fires. Captured against natcheck v0.1.3. |
hairpinning.txt / .json |
Same network + custom coturn | Google + Cloudflare + coturn IPv4 literal, --timeout 10s |
Same per-family combine as v0.1.3 sample; adds v0.1.4 schema fields: hairpinning: true (NAT permits the tagged loopback), filtering: APDF (tested against coturn). Human format renders refined warning text from #19. Captured against natcheck v0.1.4. |
Run natcheck and natcheck --json, redact public IPs to documentation ranges, commit the files here, and add a row to the table above.