Until recently Azure Private Link has been restricted to specific Microsoft enabled resource types or your own Azure VM hosted resources.
A notable limitation has been the requirement for the destination to be a Standard Load Balancer with a backend pool configured by NIC. This excluded services such as VNet integrated Azure Container Instances, which do not support private endpoints and also do not provision a NIC in the VNet and therefore could only be routed by IP address.
Microsoft recently released in public preview Private Link Service Direct Connect. Direct Connect allows connectivity to any privately routable destination IP address. To demonstrate this new feature we can publish a private Azure Container Instance over Azure Private Link Service direct connect.
Important
To use direct connect you need to enable the feature flag Microsoft.Network/AllowPrivateLinkserviceUDR on your subscription e.g. using az feature register --namespace Microsoft.Network --name AllowPrivateLinkserviceUDR. Review the direct connect prerequisites for more details.
The example deploys the following:
flowchart LR
subgraph VNET1["vnet-pls: 10.0.0.0/16"]
subgraph SN1["subnet-aci: 10.0.1.0/24"]
ACI1["Container Instance / nginx 10.0.1.4"]
end
subgraph SN2["subnet-pls: 10.0.2.0/24"]
subgraph PLS["Private Link Service"]
NAT1["NAT IP 10.0.2.4"]
NAT2["NAT IP 10.0.2.5"]
end
end
NAT1 -- "Direct connect" --> ACI1
NAT2 -- "Direct connect" --> ACI1
end
subgraph VNET2["vnet-pe: 10.0.0.0/16"]
subgraph SN3["subnet-aci: 10.0.1.0/24"]
ACI2["Container Instance / client 10.0.1.4"]
end
subgraph SN4["subnet-pe: 10.0.2.0/24"]
PE["Private Endpoint 10.0.2.4"]
end
end
subgraph DNS["DNS: directconnect.test"]
A["A ping -> 10.0.2.4"]
end
ACI2 -- "curl http://ping.directconnect.test" --> PE
PE -- "Private Endpoint Connection" --> PLS
VNET2 --- DNS
DNS -.- PE
We can verify connectivity by running a curl command using az container exec (see the curlCommand deployment output parameter), noting that connections are distributed across private link service NAT addresses:
~ % az container exec --ids '/subscriptions/.../resourceGroups/.../providers/Microsoft.ContainerInstance/containerGroups/aci-pe' --exec-command 'curl http://ping.directconnect.test.'
2025-10-21T10:32:14+00:00 remote_addr=10.0.2.4
~ % az container exec --ids '/subscriptions/.../resourceGroups/.../providers/Microsoft.ContainerInstance/containerGroups/aci-pe' --exec-command 'curl http://ping.directconnect.test.'
2025-10-21T10:32:20+00:00 remote_addr=10.0.2.5