A visual guide and interactive simulator for diagnosing network connectivity issues — from DNS to TLS and everything between.
Before diving deep, check if the problem is widespread or isolated to your machine. This determines your entire troubleshooting path.
Don't just open another browser tab — browsers cache DNS and may show stale results. Use curl or ping from the terminal for a clean test.
DNS translates human-readable domain names to IP addresses. If this fails, nothing else matters — you can't even start a connection.
SERVFAIL = your DNS server is broken. NXDOMAIN = domain doesn't exist (typo?). connection timed out = DNS server unreachable. Try switching to 1.1.1.1 or 8.8.8.8.
DNS worked — you have an IP. Now can your machine actually route packets to it? This tests your network path.
Request timeout = firewall or routing issue. Destination host unreachable = no route exists. 100% packet loss = something is blocking ICMP (or the host is down). Use traceroute to pinpoint the failing hop.
The IP is reachable, but is the specific service listening? A server can be up but have its port firewalled or service crashed.
Connection refused = port is closed (no service listening). filtered = firewall is dropping packets. Connection timed out = packets are being silently dropped. Check both local and remote firewalls.
The port is open, but can you complete the TLS handshake? Certificate issues are one of the most common causes of "connection refused" in browsers.
Certificate has expired = server cert needs renewal. Hostname mismatch = cert is for a different domain. self-signed certificate = not trusted by your CA store. certificate verify failed = missing intermediate cert.
TLS handshake succeeded, but the application layer may return errors. The server is reachable — but is it doing what you expect?
403 Forbidden = auth/permissions issue. 429 Too Many Requests = rate limiting. 502 Bad Gateway = upstream server is down. 503 Service Unavailable = server is overloaded or in maintenance. Check headers — they often tell you exactly what's wrong.
If everything above works from a terminal but your browser can't connect, a local firewall, corporate proxy, or VPN is likely intercepting traffic.
Works in terminal but not browser? Proxy issue. ERR_PROXY_CONNECTION_FAILED = proxy is down. Corporate networks often intercept HTTPS via MITM proxies — you may need to install their root CA. VPNs can also silently break routing.
Your /etc/hosts file, browser extensions, or local DNS cache can silently redirect traffic to the wrong place.
Site works in one browser but not another? Check for extensions (ad blockers, privacy tools). /etc/hosts overrides are common in development but break things when forgotten. Stale DNS cache can point to IPs that no longer serve your domain.
Choose a scenario from the sidebar to start the interactive diagnosis simulator.
Each scenario walks you through real troubleshooting steps, testing your knowledge along the way.
| Command | What It Does |
|---|---|
| nslookup domain | Basic DNS lookup |
| dig domain +short | Detailed DNS query |
| dig @8.8.8.8 domain | Query specific DNS server |
| host domain | Simple reverse/forward lookup |
| cat /etc/resolv.conf | See your DNS servers |
| Command | What It Does |
|---|---|
| ping -c 4 host | Test basic reachability |
| traceroute host | Map the network path |
| mtr host | Live traceroute + ping |
| curl -v url | Verbose HTTP request |
| wget -S url | Fetch with headers |
| Command | What It Does |
|---|---|
| nc -zv host port | Test single port |
| nmap -Pn host | Scan common ports |
| nmap -p 80,443 host | Scan specific ports |
| ss -tlnp | Local listening ports |
| lsof -i :443 | What's using port 443 |
| Command | What It Does |
|---|---|
| openssl s_client ... | Inspect TLS handshake |
| curl -vI https://... | Check cert in HTTP request |
| certbot certificates | List local certs (Let's Encrypt) |
| openssl x509 -dates | Check cert expiry |
| sslscan host:443 | Full TLS analysis |
| Command | What It Does |
|---|---|
| iptables -L -n | List Linux firewall rules |
| ufw status | Ubuntu firewall status |
| echo $http_proxy | Check proxy config |
| curl --noproxy '*' | Bypass proxy |
| Get-NetFirewallRule | Windows firewall rules |
| Code | Meaning & Fix |
|---|---|
| 2xx | Success — no issue here |
| 403 | Forbidden — check auth / permissions |
| 404 | Not Found — check URL path |
| 429 | Rate Limited — back off, check limits |
| 502 | Bad Gateway — upstream is down |
| 503 | Unavailable — service overloaded |