BXUP Track progress & test yourself — free
IT Support / Service Desk / Sysadmin · Hands-on lab · ~4 min read
IT SUPPORT / SERVICE DESK / SYSADMIN · HANDS-ON LAB

Lab 04 · Guided Network Diagnosis

Diagnose a "browser says no internet" case from real command outputs — running an AI-guided differential diagnosis where, at every step, you demand the discriminating test: the one check whose result separates cause A from cause B. The artifact is a transcript of hypotheses, tests, results and eliminations, ending at the true root cause.

Farhan does field support for an MSP in Bengaluru. This morning a client's payroll officer, Rekha, reports: "Internet is down on my laptop. Google won't load. But email works and the intranet works. Everyone else is fine." Farhan has remote CLI access to the laptop but not to the network gear — so every conclusion has to come from evidence he can gather at the endpoint.

The discipline this lab drills: never let the AI (or yourself) jump from symptom to fix. At each fork, ask "what test distinguishes these two causes, and what would each outcome mean?" — then take the result to the next fork. The scenario contains one true cause, one genuinely broken-but-irrelevant component, and several dead ends that look like the answer.

Time & tier

~60 minutes hands-on · Core tier (maps to module M2). $0 — any free AI chat and a text editor. All command outputs are provided inline; you reveal them to yourself (and the AI) only when a step legitimately calls for that command.

Setup

Save the block below as outputs.txt. Rule of the game: you may only "run" a command by copying its output from this file after you (or the AI) have named it as the next diagnostic step and said why. No reading ahead — the point is the path, not the destination.

--- C:\> ipconfig /all  (LAPTOP-REKHA, excerpt) ---
   IPv4 Address. . . . . . . . . . . : 10.50.22.147
   Subnet Mask . . . . . . . . . . . : 255.255.254.0
   Default Gateway . . . . . . . . . : 10.50.22.1
   DHCP Server . . . . . . . . . . . : 10.50.1.5
   DNS Servers . . . . . . . . . . . : 10.50.1.10
                                       10.50.1.11
--- C:\> ping 10.50.22.1 ---
   Reply from 10.50.22.1: bytes=32 time=1ms TTL=255   (4/4 received)
--- C:\> ping 8.8.8.8 ---
   Reply from 8.8.8.8: bytes=32 time=28ms TTL=115     (4/4 received)
--- C:\> nslookup www.google.com ---
   Server:  dc01.client.local   Address:  10.50.1.10
   Non-authoritative answer:
   Name: www.google.com   Addresses: 142.250.183.68
--- C:\> nslookup www.google.com 10.50.1.11 ---
   DNS request timed out. timeout was 2 seconds. *** Request to 10.50.1.11 timed-out
--- C:\> tracert -d -h 6 8.8.8.8 ---
   1 1ms 10.50.22.1   2 2ms 10.50.0.1   3 9ms 100.72.16.1   4 24ms 72.14.204.62   5 27ms 8.8.8.8
--- C:\> curl -s -o NUL -w "%{http_code}\n" https://www.google.com ---
   200
--- C:\> curl -s -o NUL -w "%{http_code}\n" http://intranet.client.local ---
   200
--- Browser (Edge): https://www.google.com ---
   ERR_PROXY_CONNECTION_FAILED  "There is something wrong with the proxy server"
--- C:\> netsh winhttp show proxy ---
   Current WinHTTP proxy settings:  Direct access (no proxy server).
--- Edge -> Settings -> System -> Proxy (via GPO, greyed out) ---
   Use setup script: On
   Script address: http://config.client.local/proxy.pac
--- C:\> curl -s http://config.client.local/proxy.pac ---
   function FindProxyForURL(url, host) {
     if (dnsDomainIs(host, ".client.local")) return "DIRECT";
     return "PROXY 10.50.7.20:8080";
   }
--- C:\> curl -s -o NUL -w "%{http_code}\n" --connect-timeout 5 -x http://10.50.7.20:8080 https://www.google.com ---
   000   (curl: (7) Failed to connect to 10.50.7.20 port 8080: Connection refused)
--- C:\> curl -s -o NUL -w "%{http_code}\n" --connect-timeout 5 -x http://10.50.7.25:8080 https://www.google.com ---
   200
--- MSP change calendar (Saturday) ---
   CHG-4471: Decommission legacy proxy PRX-OLD (10.50.7.20). Replacement
   PRX-NEW (10.50.7.25) live since June. Task "update proxy.pac" - status: OPEN.
--- Helpdesk note ---
   "Everyone else is fine" - checked: other users in Rekha's office are on
   the wireless VLAN, which gets proxy settings from a different PAC URL.

Guided steps

  1. Frame the differential before touching outputs. Give the AI only the symptom sentence ("Google won't load in the browser; email and intranet work; ping unknown; one user affected as far as we know") and ask: "List the 5–7 candidate causes for this symptom pattern, ordered by prior probability, and for the top two, name the single cheapest test that discriminates between them." Record its list in transcript.md.
  2. Run the layered basics. Whatever the AI proposed, the defensible opening is L3 connectivity and name resolution: reveal ipconfig /all, ping gateway, ping 8.8.8.8, nslookup www.google.com. Log each as a transcript row: hypothesis under test · command · result · what is now eliminated. Expected elimination after this step: IP config, gateway, raw internet routing, and primary DNS are all not the cause.
  3. Confront the tempting detour. The nslookup against 10.50.1.11 times out — a genuinely broken thing. Ask the AI: "Secondary DNS is dead. Does that explain the symptom? What would we see if it did?" Force the explicit reasoning: primary DNS answers, resolution works, so this is real-but-irrelevant to this ticket. Log it as a follow-up item, not a cause — and note whether the AI tried to close the case here.
  4. Split browser from transport. The killer discriminating test in this scenario: curl to the same URL the browser fails on. Reveal both curl 200s and the browser's ERR_PROXY_CONNECTION_FAILED. Ask the AI what it means when curl (which ignores the system PAC by default) succeeds while the browser fails, and what the next discriminating test is. Expected answer family: the path difference is proxy configuration.
  5. Follow the proxy chain. Reveal netsh winhttp show proxy, the GPO proxy-script setting, then fetch the PAC file. Transcript row: what the PAC says, and why intranet works (DIRECT for .client.local) while external sites die (all sent to 10.50.7.20:8080).
  6. Prove the dead proxy, then prove the fix. Reveal the two -x curl tests: refused via 10.50.7.20, 200 via 10.50.7.25. Then reveal the change-calendar entry. You now have mechanism and provenance: PRX-OLD decommissioned Saturday, PAC update task still OPEN. Ask the AI to state the root cause in one sentence and check it names the PAC file, not the proxy hardware.
  7. Explain the "everyone else is fine" anomaly. A root cause that cannot explain why only Rekha is hit is incomplete. Use the helpdesk note; log the explanation (wired VLAN PAC vs wireless PAC) as the final elimination.
  8. Close the transcript. Finish transcript.md with: root cause (one sentence) · fix (immediate: point PAC at 10.50.7.25; systemic: close CHG-4471's open task, add PAC to decommission checklists) · blast radius (who else is on the wired-VLAN PAC and silently one reboot away from the same call) · the two dead ends you rejected and the test that killed each.
Pro Tip

"What result would change your mind?" is the question that keeps an AI diagnosis honest. If neither outcome of a proposed test would alter the hypothesis ranking, the test is theatre — demand a better one.

Verify

  • transcript.md has one row per step with all four fields: hypothesis · test · result · elimination.
  • No output was used before its command was justified in the transcript (self-policed, but the row order shows it).
  • The secondary-DNS failure appears as unrelated-but-actionable, with the reasoning, not as the cause.
  • The curl-vs-browser split is explicitly interpreted (what curl not reading the PAC proves).
  • The final root cause names the stale PAC entry and cites CHG-4471's open task; the fix has both an immediate and a systemic component.
  • The single-user anomaly is explained, and blast radius is stated.

Self-grading rubric (pass = 7/10): correct root cause with mechanism (0–2) · every step has a stated discriminating purpose (0–3) · secondary-DNS decoy handled correctly (0–2) · systemic fix + blast radius (0–2) · dead ends documented with their killing test (0–1).

▸Answer key — the diagnosis path and the planted trapsoptional deep dive — click to expand

Root cause: the GPO-delivered PAC file at http://config.client.local/proxy.pac still directs all non-.client.local traffic to PROXY 10.50.7.20:8080 — the legacy proxy decommissioned in Saturday's CHG-4471, whose "update proxy.pac" task was left OPEN. The replacement proxy 10.50.7.25 works (curl via -x returns 200). Immediate fix: update the PAC to 10.50.7.25 (or a failover list PROXY 10.50.7.25:8080; DIRECT per policy). Systemic fix: PAC/WPAD references added to the decommission checklist; close the change properly.

Why the symptom pattern: intranet works because the PAC returns DIRECT for .client.local; email works (thick client using WinHTTP shows "Direct access"); ping/tracert/nslookup work because ICMP and DNS never touch the proxy; curl works because curl does not evaluate the system PAC by default. Only PAC-honouring browsers die — with ERR_PROXY_CONNECTION_FAILED, which the log actually says out loud.

Planted decoy #1 — the dead secondary DNS (10.50.1.11): genuinely down, genuinely worth a ticket, completely irrelevant here: the primary answers every query and nslookup www.google.com resolves fine. An AI (or a tired human) that stops at "DNS server down — that's your problem" fails the lab; resolution demonstrably succeeds. Correct classification: unrelated-but-actionable.

Planted decoy #2 — "it must be her machine/malware/winsock": ping, tracert, DNS and curl all healthy from the same machine eliminates the stack-corruption family; the greyed-out GPO setting eliminates "user changed her proxy". A netsh winsock reset here is cargo-culting.

Planted decoy #3 — "everyone else is fine, so it's the website/her account": killed by the helpdesk note — other users are on the wireless VLAN with a different PAC URL. The correct inference is the opposite of reassuring: every wired-VLAN user is exposed and calls will trickle in as browsers refresh their PAC cache. That is the blast-radius point.

The discriminating tests that carry the diagnosis: (1) ping 8.8.8.8 OK vs browser fail → transport is fine, application-layer path suspect. (2) curl 200 vs browser ERR_PROXY_CONNECTION_FAILED on the same URL → per-application proxy path difference. (3) curl -x 10.50.7.20 refused vs -x 10.50.7.25 200 → old proxy dead, new proxy healthy, so configuration (not infrastructure) is the fault. A transcript containing these three forks with correct readings earns the diagnosis marks even if the step order differs.

Scoring: root cause + PAC mechanism = 2 · three discriminating forks correctly read = 3 · decoy #1 as unrelated-but-actionable = 2 · systemic fix + wired-VLAN blast radius = 2 · dead ends logged with killing tests = 1.

Key Takeaway:

AI makes hypothesis generation free — so the scarce skill is the discriminating test. "Which result would change my mind?" walked this case from "internet is down" to a one-line PAC fix in eight evidence-priced steps, past two broken-but-innocent decoys.

This is the free reading view. Open BXUP to track your progress, run the hands-on labs, and prove it with original, exam-pattern assessments.
© Anvi Innovate · BXUP — Be Exponentially Upskilled · BXUP is an independent learning platform, not affiliated with or endorsed by AWS, Microsoft, Google, NVIDIA, IBM, Salesforce, Databricks, Oracle or Anthropic. All trademarks belong to their respective owners. · bxup.in