Intermediate · Name resolution · 13 of 15

Storage returns 403 from a spoke

Problem

vm-spoke1 gets 403 Forbidden from stlogs01.blob.core.windows.net.

Your job
  • Make stlogs01.blob.core.windows.net resolve to 10.0.3.4 from vm-spoke1
Without breaking
  • Get vm-spoke1 reaching the private endpoint on 443broken
  • Turn auto-registration off on every link to the zonebroken
Background

The storage account stlogs01 has a private endpoint, pe-stlogs01, in vnet-hub at 10.0.3.4. A private endpoint gives the service a private IP inside your network, and its public name is meant to resolve to that IP. Public network access on stlogs01 is disabled, so anything that reaches it any other way is refused. VMs in the hub work fine. vm-spoke1 in the peered vnet-spoke1 gets 403 Forbidden from stlogs01.blob.core.windows.net. SSH to the VMs to look around, then fix it so vm-spoke1 uses the private endpoint.

You'll learn
Private endpoints and DNS
How to work it
  1. 1See it fail

    Prove the problem yourself before you change anything. Reports are often wrong.

    VM commands forVMs
    1. ssh vm-spoke1
      What's this?

      Opens a shell on vm-spoke1, so the next commands run on that VM. In this lab it's a shortcut. In real Azure you'd connect through something like Azure Bastion, or SSH to an address you can reach.

    2. nslookup stlogs01.blob.core.windows.net
      What's this?

      Asks the VM's DNS server what IP address a name points to. Run it on the VM that has the problem, because each VM can get a different answer.

    3. nc -zv stlogs01.blob.core.windows.net 443
      What's this?

      netcat, a standard Linux tool. Tries to open a TCP connection and reports whether it worked.

      • -z only check whether the port answers. Send no data
      • -v print the result in words
      • stlogs01.blob.core.windows.net where to connect
      • 443 the port to try

    Ticks off when the test runs on vm-spoke1.

  2. 2Find where it stops
  3. 3Name the cause
  4. 4Fix it and test again
  5. 5Explain it
Sources on Microsoft Learn (3)
0/1 changes
Network map
?
  • Resource group, the outer dashed frame
  • Virtual network, with its address space top right
  • Subnet, with range and usable IPs (5 reserved)
  • Network security group. A small shield on a VM's NIC means the NIC has one too
  • Route table on the subnet
  • NICVM Appliance Private endpoint
  • Peering Connected Initiated or access off
  • Goal working Goal broken, X marks where it stops
  • Private DNS zone, dotted lines go to linked VNets
  • Orange pulse: what your last command changed. Drag to pan, Ctrl and scroll to zoom.
Resource grouprg-labvnet-spoke1: tap to inspectVirtual networkvnet-spoke110.1.0.0/16subnet-app: tap to inspectsubnet-app10.1.1.0/24 · 251 usablevm-spoke1 10.1.1.4: tap to inspectNICvm-spoke110.1.1.4vnet-hub: tap to inspectVirtual networkvnet-hub10.0.0.0/16subnet-shared: tap to inspectsubnet-shared10.0.1.0/24 · 251 usablevm-hub 10.0.1.4: tap to inspectNICvm-hub10.0.1.4subnet-pe: tap to inspectsubnet-pe10.0.3.0/24 · 251 usablepe-stlogs01 10.0.3.4: tap to inspectpe-stlogs0110.0.3.4Connected: tap to inspectpeeredprivatelink.blob.core.windows.net: tap to inspectDNSPrivate DNS zone · privatelink.blob.core.windows.net · 1 link · stlogs01 → 10.0.3.4stlogs01.blob.core.windows.net?:443 ✗
  • vm-spoke1 → stlogs01.blob.core.windows.net:443should work: not working
Goals 0/4
Cloud Shell · bashVMsrg-lab · eastus2
cloudshell:~$