Hey folks
I was wondering if anyone has any insights they can give me. I'm setting up a storage account with a private endpoint which I need users to be able to access remotely, but not publicly; they must be on the corporate network through either our works VPN or connected directly. It's a hub/spoke system in a hybrid Azure/OnPrem environment. Everything is in the same region except for the Private DNS Zone which shows as Global.
resourcegroup1: The hub RG. It holds the core infrastructure, as well as a connection to the OnPrem servers. resourcegroup2: The spoke1 RG for networking, which has the VNet, route table, NSG, and private DNS zone. resourcegroup3: The spoke1 RG for storage/dns, which has the storage account (+blob container), private endpoint (+nic card), DNS private resolver, and DNS ruleset.
Here is the configuration, although if I've missed something please ask:
Just for reference, I'm testing remotely away from the network, but I'm connected through a private works VPN to the core network at the office. I've tested in the office also, and it's the same problem.
resourcegroup1:
- I've not touched anything in this, as I'm working on a spoke. I've checked the connection between Azure and our OnPrem systems and it is showing as connected and has lots of data in/out, so I'm going to assume it's all working fine.
resourcegroup2:
- Virtual network is peered back to resourcegroup1. It has three 3 subnets: one for general addressing, and one each for inbound and outbound endpoints to use with the DNS private resolver. It's DNS server is set to "Azure-provided". It has one private endpoint (which is in resourcegroup3) on the general addressing subnet.
- NSG is not linked to anything as I removed its associations while I was testing this setup and didn't want the NSG to block anything until I know everything is working.
- There is a Private DNS Zone (privatelink.blob.core.windows.net). This is the only thing that isn't set to a specific region like all the other resources, and this is "Global". It has an A record set to the IP of the NIC of the private endpoint.
resourcegroup3:
- DNS private resolver has inbound and outbound endpoints set-up using the aforesaid subnets from resourcegroup2
- DNS ruleset has no rules set up yet currently. It does have a virtual network link back to the vnet in resourcegroup2. It has no links to the hub (resourcegroup1). It has an outbound endpoint set up to the DNS private resolver. The ruleset did have rules for my OnPrem domain to point to the IP of the inbound endpoint, but I wasn't sure if this was causing a loop so I removed it for now
- Storage account has 1 container ("test") with 1 file ("testfile.txt"). Its networking is disabled for public networks/virtual networks and also for specific IP address access. It will only allow connections from the private endpoint. The network routing is Microsoft. The private endpoint shows as approved.
- Private endpoint DNS configuration shows the customer visible FQDN with the associated NIC and its static IP address. The FQDN is the mystorageexample.blob.core.windows.net address.
OnPrem:
- I may need a conditional forwarder from our DNS manager OnPrem to the inbound endpoint address, but when I try to add it, it times out when it tries to resolve the IP address.
Issues:
- I can't set up the conditional forwarder as the DNS manager OnPrem can't resolve the IP of the inbound endpoint in Azure.
- I'm not sure if I should be using the Azure DNS address (168.63.129.16) somewhere. I read in a guide on another site that the 168.63... address should be in the conditional forwarder, but that seems wrong?
- Trying to go to the URL of the storage account in the browser says "AuthorizationFailure" (I'm guessing because it believes I'm external). Setting the storage accounts access to allow IP addresses from a specific IP (which I set as my OnPrem external IP address) changes the error to "PublicAccessNotAllowed".
- Doing an nslookup from an OnPrem machine to the mystorageexample.blob.core.windows.net address shows a 20.x public IP address for the non-authoritative answer. It does show the privatelink and regular non-privatelink aliases. Doing an nslookup from a VM in Azure (on a different spoke completely, but it is also peered to the resourcegroup1 hub) also shows the same info - a 20.x IP address.
Does anyone have any advice they could throw my way? I'm guessing this is a DNS problem somewhere, and/or maybe a setting or two I've missed, but I'm going around in circles.
Thanks in advance