Private endpoint 从本质上来说是Azure 服务在Azure 虚拟网络中安插的一张带私有地址的网卡。
举例来说如果Storage account在没有绑定private endpoint之前,查询Storage account的DNS记录会是如下情况:
Seq Name Type Record Value
1 HOSTNAME.blob.core.windows.net CNAME blob.sn1prdstr01a.store.core.windows.net
2 blob.sn1prdstr01a.store.core.windows.net HOST (A) 20.38.104.164
首先, HOSTNAME.blob.core.windows.net 会被解析到CNAME blob.sn1prdstr01a.store.core.windows.net。
然后, blob.sn1prdstr01a.store.core.windows.net 会被解析到公网地址 20.38.104.164。
那么,当Storage account绑定了private endpoint之后,从公网的Storage account DNS记录解析顺序会变成如下情况:
Seq Name Type Record Value
1 HOSTNAME.blob.core.windows.net CNAME HOSTNAME.privatelink.blob.core.windows.net
2 HOSTNAME. privatelink.blob.core.windows.net CNAME blob.sn1prdstr01a.store.core.windows.net
3 blob.sn1prdstr01a.store.core.windows.net HOST (A) 20.38.104.164
可以看到 HOSTNAME.blob.core.windows.net 解析到了 CNAME HOSTNAME.privatelink.blob.core.windows.net, 之后HOSTNAME. privatelink.blob.core.windows.net 才会解析到 CNAME blob.sn1prdstr01a.store.core.windows.net, 然后解析到公网地址 20.38.104.164。
从Azure内网访问Storage account DNS 记录解析顺序会变成如下情况:
Seq Name Type Record Value
1 HOSTNAME.blob.core.windows.net CNAME HOSTNAME.privatelink.blob.core.windows.net
2 HOSTNAME.privatelink.blob.core.windows.net HOST (A) 10.0.0.5
在这种情况下 HOSTNAME.blob.core.windows.net 会解析到 HOSTNAME.privatelink.blob.core.windows.net, 然后 HOSTNAME.privatelink.blob.core.windows.net 直接解析到Azure 内网地址 10.0.0.5。
用一张图解释上述三种DNS记录解析情况:
那么private endpoint 的dns是怎样集成到Azure virtual network的呢?
以下这个图提供了从VNET中的虚拟机解析 Private endpoint DNS记录的详细过程。
- VM向Azure DNS 服务器 168.63.129.16 发送查询 HOSTNAME.blob.core.windows.net 的DNS请求。
- Azure DNS服务器向拥有blob.core.windows.net zone 的authoritative DNS服务器发送请求。
- Authoritative DNS 服务器向Azure DNS 服务器返回 CNAME记录 HOSTNAME.privatelink.blob.core.windows.net。
- Azure DNS 服务器 发现 Private DNS zone 里面有 privatelink.blob.core.windows.net 这个域名于是查询Private DNS zone获取到A记录的Priave endpoint的IP地址 10.0.0.5。
- Private DNS Zone 向 Azure DNS 服务器返回 Private endpoint的IP地址。
- Azure DNS 服务器将 Private endpoint的IP地址返回给VM。
- VM 通过 Private endpoint 的 IP地址 10.0.0.5 访问Storage Account。