Azure Journey / Lab / Evidence analysis

Map the Network Path to an Azure VM

Trace one synthetic TCP flow through Azure and guest layers, identify the earliest point where evidence diverges, and write a finding an accountable owner can act on. No Azure subscription, deployment, payment, tenant access, or production environment is required.

Lab type

Evidence analysis

Everything needed to solve the scenario appears on this page. You will not sign in to Azure or run a live diagnostic.

Method

Map before concluding

Define the flow, compare each layer, and stop at the earliest supported divergence.

Boundary

No remediation

The result is a documented finding and escalation recommendation, not approval to change a network control.

Scenario

Entirely synthetic

Names, private addresses, rules, timestamps, and results were created for this lab and describe no customer environment.

1 · Learning objectives

What you should be able to do.

  • Define a network test by source, destination, protocol, port, direction, and UTC timestamp.
  • Separate DNS, VM state, effective policy, effective route, guest firewall, listener, and application evidence.
  • Mark each layer as supported, contradicted, or unknown without filling gaps with assumptions.
  • Write an escalation-quality conclusion that identifies evidence and preserves change authority.

2 · Prerequisite knowledge

Bring concepts, not cloud access.

You should recognize IPv4 subnets, TCP ports, DNS A records, Windows listeners, network security groups, and effective routes. Review Investigating Azure VM Connectivity first if those layers are unfamiliar.

3 · Investigation rules

Evidence first; authority stays separate.

Use only the supplied packet. Do not invent a route, rule, owner, health result, or approval.

One flow only. A result for TCP 443 from 10.20.1.4 at one time does not establish behavior for another source, port, or timestamp.

No configuration activity. This lab contains no procedure for creating resources, opening ports, changing NSGs or routes, modifying DNS or firewalls, restarting a VM, granting roles, or capturing packets.

4 · Synthetic environment

Two VMs, one VNet, one defined application flow.

Source

LAB-ADMIN-01

Private IP 10.20.1.4
Subnet subnet-admin
VNet vnet-krippytech-lab

Destination

LAB-WEB-01

Private IP 10.20.2.4
Subnet subnet-app
VNet vnet-krippytech-lab

Service

app.lab.example

Required protocol TCP
Required port 443
Path type: private, same VNet

Time

Investigation window

2026-08-22T15:30:00Z
Symptom: constant from the defined source during the supplied window.

5 · Defined traffic flow

State the tuple before reading controls.

SourceDestinationProtocolPortDirectionUTC timeExpected result
LAB-ADMIN-01
10.20.1.4
app.lab.example
LAB-WEB-01
10.20.2.4
TCP443Outbound from source; inbound to destination2026-08-22T15:30:00ZHTTPS TCP connection succeeds

6 · Topology and inventory

Follow the expected path in order.

The numbered cards and the equivalent table describe the same path for visual and screen-reader review.

01 · Source VM

LAB-ADMIN-01

10.20.1.4

02 · Source subnet

subnet-admin

10.20.1.0/24

03 · VNet routing

VirtualNetwork

System route for 10.20.0.0/16

04 · Destination subnet

subnet-app

10.20.2.0/24

05 · Destination NIC

nic-lab-web-01

10.20.2.4

06 · Guest firewall

Windows Firewall

Focused inbound HTTPS rule

07 · Listener

HTTPS

0.0.0.0:443 listening

OrderLayerExpected handoff
1Source VM and NICLAB-ADMIN-01 sends TCP 443 from 10.20.1.4.
2Source subnet controlsOutbound flow is permitted from subnet-admin.
3VNet routingThe 10.20.0.0/16 VirtualNetwork route selects same-VNet delivery.
4Destination subnet controlsInbound flow must be permitted by nsg-lab-app.
5Destination NIC controlsInbound flow must also be permitted by nsg-lab-web-nic.
6Guest firewallWindows Firewall permits the defined source and port.
7Application listenerA process accepts TCP 443 on LAB-WEB-01.

7 · Evidence packet

All evidence required to solve the lab.

Outputs are synthetic snapshots for the defined UTC window. They are not commands to run against an environment.

DNS and resource state

DNS result

app.lab.example

Name: app.lab.example
Type: A
IPAddress: 10.20.2.4
Response: Success

This identifies an address; it does not test TCP 443.

Source VM

LAB-ADMIN-01

Provisioning: Succeeded
Power: Running
NIC: nic-lab-admin-01
Private IP: 10.20.1.4

Destination VM

LAB-WEB-01

Provisioning: Succeeded
Power: Running
NIC: nic-lab-web-01
Private IP: 10.20.2.4

Subnet placement

Expected associations

nic-lab-admin-01subnet-admin
nic-lab-web-01subnet-app
Both subnets → vnet-krippytech-lab

Attached network security groups

Attachment pointNSGRelevant observation
Source subnet: subnet-adminnsg-lab-adminExplicit outbound HTTPS allow for the application subnet.
Source NIC: nic-lab-admin-01NoneNo NIC-level NSG is attached.
Destination subnet: subnet-appnsg-lab-appExplicit inbound deny matches the source subnet and TCP 443.
Destination NIC: nic-lab-web-01nsg-lab-web-nicExplicit inbound HTTPS allow matches the source subnet.

Relevant NSG rules

NSG and attachmentRulePriorityDirectionProtocolSourceDestinationPortAction
nsg-lab-admin
source subnet
AllowAppHttpsOut200OutboundTCP10.20.1.0/2410.20.2.0/24443Allow
nsg-lab-app
destination subnet
DenyAdminHttps200InboundTCP10.20.1.0/2410.20.2.4443Deny
nsg-lab-app
destination subnet
AllowApprovedHttps300InboundTCP10.20.3.0/2410.20.2.4443Allow
nsg-lab-web-nic
destination NIC
AllowAdminHttps300InboundTCP10.20.1.0/2410.20.2.4443Allow

Priorities are evaluated within each NSG, with lower numbers processed first. For inbound traffic, both the destination subnet NSG and destination NIC NSG must permit the flow. A NIC-level allow does not override a deny at the subnet gate.

Effective security and route evidence

Effective security rules

Destination NIC view

Aggregated result for TCP 443 from 10.20.1.4 to 10.20.2.4: Deny.

Responsible rule: DenyAdminHttps
Origin: nsg-lab-app
Attachment: destination subnet

Source effective route

Expected next hop

Prefix: 10.20.0.0/16
Next hop: VirtualNetwork
Source: Default
State: Active

Destination effective route

Return path represented

Prefix: 10.20.0.0/16
Next hop: VirtualNetwork
Source: Default
State: Active

IP flow verify

Access denied

Direction: Inbound
Protocol: TCP
Remote: 10.20.1.4:55024
Local: 10.20.2.4:443
Rule: DenyAdminHttps

Guest and focused connection evidence

EvidenceSynthetic resultInterpretation boundary
Guest IP configurationLAB-WEB-01 owns 10.20.2.4/24 on Ethernet.Confirms guest addressing, not remote reachability.
Guest firewall profileDomain profile enabled; focused rule LAB HTTPS Inbound enabled, TCP local port 443, remote 10.20.1.0/24, Allow.Supports guest policy for this tuple; it does not override Azure NSGs.
TCP listener0.0.0.0:443 LISTEN on LAB-WEB-01.A listener does not prove application health or remote path reachability.
Local port testlocalhost:443 TcpTestSucceeded: TrueConfirms a local TCP handshake only.
Source-side focused testComputerName: app.lab.example
RemoteAddress: 10.20.2.4
RemotePort: 443
SourceAddress: 10.20.1.4
TcpTestSucceeded: False
Confirms the defined remote attempt failed; it does not identify the blocking layer by itself.

Known and unknown evidence

Known

Supported observations

DNS answer, VM states, NIC placement, same-VNet routes, effective NSG deny, IP-flow deny, guest firewall allow, listener, and failed remote TCP test are supplied for one UTC window.

Unknown

Preserved uncertainty

NSG business intent and owner approval, application health beyond the listener, behavior from other sources, and whether another fault appears after the demonstrated deny are not established.

8 · Learner tasks

Build the finding from the packet.

  1. Write the exact source, destination, protocol, port, direction, and UTC timestamp.
  2. Draw or restate the expected seven-layer path.
  3. Mark every layer Supported, Contradicted, or Unknown.
  4. State exactly what the DNS result proves.
  5. State exactly what the VM power states prove.
  6. Evaluate the effective route and next hop.
  7. Evaluate source and destination NSG evidence without treating one rule as the whole policy.
  8. Evaluate guest firewall and listener evidence.
  9. Identify the earliest evidenced divergence.
  10. List what remains unknown.
  11. Write a concise finding that separates evidence from inference.
  12. Recommend the accountable escalation owner without proposing an unauthorized change.

9 · Network-path worksheet

Complete this before opening the answer key.

LayerExpected behaviorEvidence reviewedObserved resultStatusWhat this provesWhat this does not prove
DNSHostname returns 10.20.2.4________________________________Supported / Contradicted / Unknown________________________________
VM and NIC stateBoth VMs running; expected addresses and subnets________________________________Supported / Contradicted / Unknown________________________________
Source policyOutbound TCP 443 permitted________________________________Supported / Contradicted / Unknown________________________________
VNet routeVirtualNetwork next hop________________________________Supported / Contradicted / Unknown________________________________
Destination policyInbound TCP 443 permitted at subnet and NIC________________________________Supported / Contradicted / Unknown________________________________
Guest firewallDefined source and port permitted________________________________Supported / Contradicted / Unknown________________________________
ListenerTCP 443 listening________________________________Supported / Contradicted / Unknown________________________________
Application healthHTTPS transaction completes________________________________Supported / Contradicted / Unknown________________________________

10 · Interpretation questions

Test the boundaries of each observation.

  1. Why does a correct A record not establish TCP 443 reachability?
  2. Which VM facts are platform or control-plane observations, and which guest facts are separate?
  3. Why must both subnet and NIC NSG gates be evaluated?
  4. Does the VirtualNetwork next hop prove that every policy layer permits the flow?
  5. What does IP flow verify add beyond reading the NSG objects?
  6. Why does a local listener not prove a successful application transaction?
  7. Who should determine whether DenyAdminHttps reflects intended policy?

11 · Final conclusion template

Write a finding another technician can verify.

Defined flow: At [UTC time], [source and IP] attempted [protocol and port] to [destination and IP].

Supported layers: [List evidence that matched the expected path.]

Earliest divergence: [Name the first contradicted layer and the exact evidence.]

What remains unknown: [List unverified health, intent, ownership, and downstream behavior.]

Escalation: [Name the accountable owner and the determination needed, without authorizing a change.]

12 · Expandable answer key

Compare your evidence chain.

Each native disclosure is keyboard accessible and remains readable without JavaScript.

Why is DNS not the evidenced failure?

The A record resolves app.lab.example to the destination’s confirmed address, 10.20.2.4. DNS does not test Azure policy, routes, guest policy, a listener, or the HTTPS application.

Why is VM power not the evidenced failure?

Both VMs are reported Running, and their provisioning states are Succeeded. Those facts support platform state only; they do not establish guest or application health. Separate guest evidence is supplied.

Why is the effective route not the evidenced failure?

The source and return evidence show an active 10.20.0.0/16 system route with the expected VirtualNetwork next hop. That supports same-VNet route selection but does not bypass NSGs.

Why is the listener not the evidenced failure?

LAB-WEB-01 owns the expected address and a process listens on 0.0.0.0:443. The local test succeeds. This supports listener availability at the guest, not remote reachability or complete application health.

Why is the guest firewall not the evidenced failure?

The focused active rule allows inbound TCP 443 from 10.20.1.0/24. That supports the defined guest-policy requirement. It cannot override an Azure NSG deny.

Which effective rule blocks the defined flow?

DenyAdminHttps in nsg-lab-app, attached to destination subnet subnet-app, denies inbound TCP 443 from 10.20.1.0/24 to 10.20.2.4. Effective security and IP-flow evidence identify the same rule.

Why is the NSG the earliest demonstrated divergence?

Source state and policy, DNS, address placement, and the expected route are supported before traffic reaches the destination subnet gate. The destination subnet NSG contradicts the expected allow. Later guest evidence may be healthy, but the flow is already denied at that earlier layer.

What additional evidence would still be useful?

Confirm the NSG’s accountable owner, intended application-access policy, relevant change history, and whether a later issue appears after an authorized policy determination. Application health beyond the listener also remains unknown.

Why does this lab not authorize changing the rule?

A technically explanatory rule can still be intentional. Ownership, security intent, business need, approval, change control, rollback, and validation remain outside this evidence packet.

13 · Escalation-quality sample

A concise professional finding.

The defined TCP 443 flow from LAB-ADMIN-01 at 10.20.1.4 to LAB-WEB-01 at 10.20.2.4 resolves correctly and follows the expected VirtualNetwork route. LAB-WEB-01 is running, owns the expected address, and has an HTTPS listener. Effective security and IP-flow evidence identify destination-subnet rule DenyAdminHttps as the earliest demonstrated point blocking the defined flow. The NSG owner must confirm policy intent and authorized application access before any change is proposed.

14 · What the evidence does not prove

Keep the conclusion bounded.

  • The application is healthy beyond its listener.
  • Every source can or cannot connect.
  • The NSG rule is incorrect, should be deleted, or should be weakened.
  • No other path issue exists after the demonstrated deny.
  • Production change approval exists.
  • The same result applies to another port, address, subnet, or timestamp.