|
| 1 | +# E2E Validation (Step 2) - Optional |
| 2 | + |
| 3 | +**Depends on:** #3 (Basic Scan) |
| 4 | + |
| 5 | +## Summary |
| 6 | + |
| 7 | +Optional step that tests resolvers from basic scan with actual Slipstream/DNSTT tunnel connections via health check endpoints. |
| 8 | + |
| 9 | +**Motivation:** Basic scan confirms DNS resolution works, but some resolvers may still fail with actual tunnel traffic due to rate limiting, DPI, or connection issues. E2E validation confirms the full tunnel path works. |
| 10 | + |
| 11 | +## Design |
| 12 | + |
| 13 | +### Prerequisites |
| 14 | + |
| 15 | +- Slipstream and/or DNSTT client binaries available |
| 16 | +- Server-side health check endpoints deployed (dnstm #27) |
| 17 | +- Output from basic scan (list of working resolvers) |
| 18 | + |
| 19 | +### How It Works |
| 20 | + |
| 21 | +1. Takes resolver list from basic scan output |
| 22 | +2. For each resolver, attempts actual tunnel connection: |
| 23 | + - Start Slipstream/DNSTT client using the resolver |
| 24 | + - Connect to health check endpoint on server |
| 25 | + - Verify response (e.g., echo back a token) |
| 26 | +3. Mark resolvers as `e2e_slipstream: true/false`, `e2e_dnstt: true/false` |
| 27 | + |
| 28 | +### CLI |
| 29 | + |
| 30 | +```bash |
| 31 | +# Basic scan only (default) |
| 32 | +dnst-scanner scan --tunnel-domain t.example.com |
| 33 | + |
| 34 | +# Basic scan + E2E validation |
| 35 | +dnst-scanner scan --tunnel-domain t.example.com --e2e \ |
| 36 | + --slipstream-health hc-s.example.com \ |
| 37 | + --slipstream-fingerprint abc123 \ |
| 38 | + --dnstt-health hc-d.example.com \ |
| 39 | + --dnstt-pubkey xyz789 |
| 40 | +``` |
| 41 | + |
| 42 | +### Binary Management |
| 43 | + |
| 44 | +- Slipstream/DNSTT binaries required for E2E |
| 45 | +- Env var overrides: `DNST_SCANNER_SLIPSTREAM_PATH`, `DNST_SCANNER_DNSTT_PATH` |
| 46 | +- Or download from GitHub releases if not provided |
| 47 | + |
| 48 | +### Output |
| 49 | + |
| 50 | +Extends basic scan output with E2E results: |
| 51 | +- `e2e_slipstream`: true/false/skipped |
| 52 | +- `e2e_dnstt`: true/false/skipped |
| 53 | +- `e2e_latency_ms`: tunnel round-trip time |
0 commit comments