在 Virtual WAN 中使用 Private Link
Azure Private Link 是一種可讓您透過公開私人端點,使用私人 IP 位址連線能力來連線 Azure 平台即服務供應項目的技術。 透過使用 Azure Virtual WAN,您可以在連線至任何虛擬中樞的其中一個虛擬網路中部署私人端點。 此私人連結可讓您連線至與相同虛擬 WAN 連線的任何虛擬網路或分支。
開始之前
本文步驟會假設您已部署了具有一或多個中樞的虛擬 WAN,以及至少兩個連線至虛擬 WAN 的虛擬網路。
若要建立新的虛擬 WAN 與新的中樞,請使用下列文章中的步驟:
虛擬 WAN 中私人連結的路由考量
Azure 中的私人端點連線能力具狀態。 透過虛擬 WAN 建立私人端點的連線後,流量會透過不同的虛擬 WAN 元件路由傳送一或多個流量躍點 (例如虛擬中樞路由器、ExpressRoute 閘道、VPN 閘道、Azure 防火牆或 NVA)。 流量所採用的確切躍點是根據您的虛擬 WAN 路由組態。 在幕後,Azure 的軟體定義網路層會將與單一 5 Tuple 流程相關的所有封包傳送至其中一個為不同虛擬 WAN 元件提供服務的後端執行個體。 不支援非對稱路由流量 (例如,對應至路由到不同後端執行個體之單一 5 Tuple 流程的流量),並由 Azure 平台加以卸除。
在虛擬 WAN 基礎結構的維護事件期間,後端執行個體會一次重新啟動一個,這可能導致私人端點的間歇性連線問題,因為為流程提供服務的執行個體暫時無法使用。 當 Azure 防火牆或虛擬中樞路由器擴增時,可能會發生類似的問題。相同的流量流程可負載平衡至與目前為流程提供服務的執行個體不同的新後端執行個體。
若要降低維護和擴增事件對私人連結或私人端點流量的影響,請考慮下列最佳做法:
- 將內部部署應用程式的 TCP 逾時值設定為介於 15-30 秒之間。 較小的 TCP 逾時值可讓應用程式流量更快速地從維護和擴增事件復原。 或者,測試不同的應用程式逾時值,以根據您的需求來判斷適當的逾時。
- 預先調整虛擬 WAN 元件來處理流量高載,以防止自動調整事件發生。 針對虛擬中樞路由器,您可以在中樞路由器上設定最小路由基礎結構單位,以避免在流量高載期間進行調整。
最後,如果您使用 VPN 或 ExpressRoute 在 Azure 與內部部署環境之間使用內部部署連線,請確定內部部署裝置已設定為使用相同的 VPN 通道或相同的 Microsoft Enterprise Edge 路由器,作為對應至私人端點流量之每個 5 Tuple 的下一個躍點。
建立私人連結端點
您可以為許多不同的服務建立私人連結端點。 在此範例中,我們會使用 Azure SQL Database。 如需有關如何建立 Azure SQL Database 私人端點的詳細資訊,請參閱快速入門:使用 Azure 入口網站建立私人端點。 下圖顯示 Azure SQL Database 的網路設定:
建立 Azure SQL Database 之後,您可以透過瀏覽私人端點來驗證私人端點 IP 位址:
按一下所建立的私人端點,您應該會看到其私人 IP 位址,以及其完整網域名稱 (FQDN)。 私人端點在 VNet 的範圍內具有 IP 位址 (10.1.3.0/24):
驗證來自相同 VNet 的連線能力
在此範例中,我們會驗證 Linux 虛擬機器 (已安裝 MS SQL 工具) 是否能連線到 Azure SQL Database。 第一個步驟是驗證 DNS 解析是否正常運作,而且 Azure SQL Database 完整網域名稱解析為私人 IP 位址,並在已部署私人端點的相同 VNet 中 (10.1.3.0/24):
nslookup wantest.database.windows.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
wantest.database.windows.net canonical name = wantest.privatelink.database.windows.net.
Name: wantest.privatelink.database.windows.net
Address: 10.1.3.228
如您在上一個輸出中所見,FQDN wantest.database.windows.net
會對應至 wantest.privatelink.database.windows.net
,而沿著私人端點建立的私人 DNS 區域將會解析到私人 IP 位址 10.1.3.228
。 查看私人 DNS 區域,確認私人端點有對應至私人 IP 位址的 A 記錄:
驗證正確的 DNS 解析之後,我們可以嘗試連線到資料庫:
query="SELECT CONVERT(char(15), CONNECTIONPROPERTY('client_net_address'));"
sqlcmd -S wantest.database.windows.net -U $username -P $password -Q "$query"
10.1.3.75
如您所見,我們會使用特殊的 SQL 查詢,以提供 SQL 伺服器從用戶端看到的來源 IP 位址。 在此案例中,伺服器會透過其私人 IP (10.1.3.75
) 看到用戶端,這表示流量會直接從 VNet 進入私人端點。
設定變數 username
和 password
以符合 Azure SQL Database 中所定義的認證,以執行本指南中的範例。
從不同的 VNet 連線
既然 Azure 虛擬 WAN 中的一個 VNet 具有私人端點的連線能力,那麼所有其他連線至虛擬 WAN 的 VNet 和分支也可以對其進行存取。 您必須透過 Azure 虛擬 WAN 支援的任何模型提供連線能力,例如任意情節或共用服務 VNet 情節以命名兩個範例。
在 VNet 或分支之間具有連線到已部署私人端點的 VNet 連線能力之後,您就必須設定 DNS 解析:
- 如果從 VNet 連線到私人端點,您可以使用和 Azure SQL Database 一起建立的相同私人區域。
- 如果從分支 (站對站 VPN、點對站 VPN 或 ExpressRoute) 連線到私人端點,您就必須使用內部部署 DNS 解析。
在此範例中,我們會從不同的 VNet 進行連線。 首先將私人 DNS 區域附加至新的 VNet,讓其工作負載可以將 Azure SQL Database 的完整網域名稱解析至私人 IP 位址。 這是透過將私人 DNS 區域連結至新的 VNet 來完成:
現在,連結 VNet 中的任何虛擬機器都應該正確地將 Azure SQL Database 完整網域名稱解析至私人連結的私人 IP 位址:
nslookup wantest.database.windows.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
wantest.database.windows.net canonical name = wantest.privatelink.database.windows.net.
Name: wantest.privatelink.database.windows.net
Address: 10.1.3.228
若要重複檢查此 VNet (10.1.1.0/24) 已具有連線至設定私人端點 (10.1.3.0/24) 的原始 VNet 連線能力 ,您可以在 VNet 中的任何虛擬機器中驗證有效的路由表:
如您所見,有一個路由指向 Azure 虛擬 WAN 中虛擬網路閘道所插入的 VNet 10.1.3.0/24。 現在我們終於可以測試資料庫的連線能力:
query="SELECT CONVERT(char(15), CONNECTIONPROPERTY('client_net_address'));"
sqlcmd -S wantest.database.windows.net -U $username -P $password -Q "$query"
10.1.1.75
在此範例中,我們已了解如何在連結至虛擬 WAN 的其中一個 VNet 中建立私人端點,以提供虛擬 WAN 中其餘 VNet 和分支的連線能力。
下一步
如需虛擬 WAN 的詳細資訊,請參閱常見問題集。