透過 Proxy 使用 Azure HCM (混合式連線管理員)

公司防火牆連外不開或只開有限IP時的疑難雜症

結論

C:\Program Files\Microsoft\HybridConnectionManager 0.7\Microsoft.HybridConnectionManager.Listener.exe.config

<configuration>
  <!-- 保留原本設定並增加以下區段來設定 Proxy -->
  <system.net>
    <defaultProxy>
      <proxy 
        usesystemdefault="True" 
        proxyaddress="http://192.168.1.10:3128" 
        bypassonlocal="True" />
    </defaultProxy>
  </system.net>
</configuration>

備註

設好 Proxy 之後,如果原本有混合式連線有設定限制 IP,則記得將 proxy server public IP 加上去白名單

參照

Azure App Service 混合式連線 (HCM) | Jakeuj - 點部落 (dotblogs.com.tw)

<defaultProxy> 項目 (網路設定) - .NET Framework | Microsoft Docs

Hybrid Connection behind Proxy Server (microsoft.com)

What IP addresses do I need to add to allowlist? (FAQ) | Microsoft Docs

Windows 環境 PowerShell 設定 proxy 方法 - I'm Ryan. (mvpdw06.github.io)

概要

  • HCM 需要 outbound Port 443
  • HCM 需要 outbound 包含但不限於動態IP區段
    • 52.187.0.0/17
  • HCM 需要 outbound 包含但不限於 Domain
    • https://sea-bus.servicebus.windows.net
    • g*-prod-sg3-001-sb.servicebus.windows.net
  • HCM 可以設定 Proxy 連線

情境

公司將對外全鎖,並只開放可以連到指定 IP

按照 Azure 文件大概只會找到需要開放 Endpoint 與 Gateway

但實際上只開放對這些目標進行 443 連線

會在 HCM 上顯示已連接但實際上 App Service 卻連不到 Db 的情況

在與 Azure Support 聯繫之後表示目前尚無切確文件指出 HCM 需要連那些目標

所以只能使用 HCM 觀察他嘗試連到哪一些 IP 來逐步開放

開放後會發現當下測試連線可以正常,但過一陣子或是其他混合連線還是會失敗

初步研判是 HCM 會往 52.187.0.0/17 這個動態 IP 區段產生連線

所以得出以下可能的解決方案

  1. 開放此網段供 HCM 連出去
  2. 採用透過 Proxy Server 的方式來連外

Log port

參照

Azure WCF Relay DNS Support - Microsoft Tech Community

PS5