2

Azure サービス バス リレーを使用してクラウドに公開されるオンプレミス ソフトウェアを提供します。公開するために使用する基本的なコードは次のとおりです (識別可能なものはすべて削除しました)。

    ServiceHost sh = new ServiceHost(typeof(BasicHttpEntityService));
    BasicHttpRelayBinding basicHttpRelayBinding = new BasicHttpRelayBinding();

    Uri uriEndPointAddress = ServiceBusEnvironment.CreateServiceUri("https", "ourdomain", "test-url-appendage");
    m_shRelayServiceHost.AddServiceEndpoint(
      typeof(IMyService),
      basicHttpRelayBinding,
      uriEndPointAddress
    ).Behaviors.Add(
      new TransportClientEndpointBehavior
      {
        TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(
          "MyUser",
          "MyPassword")
      });
    sh.Open();

これはほとんどのお客様で問題なく機能しますが、あるお客様は厳格なファイアウォール ポリシーを持っています。

私たちが見つけた SB ガイドラインに従って、ポート 9351 ~ 9354 を ourdomain.servicebus.windows.net に開くように依頼しました。ここで、着信要求があると、サービスが「私たちのドメイン」(これは Wireshark と WCF ログでも成功していることがわかります) と 40.112.124.x 上の未知の (私たちにとって) サービスの両方に接続することがわかります。 9352 (最後のオクテットはリクエストごとに変わります)。

どのポートでも 40.xxx アドレスへの接続を禁止することで、開発環境で問題を再現できました。これは、WCF ログで発生することです。

System.Net.Sockets.SocketException (0x80004005): An attempt was made to access a socket in a way forbidden by its access permissions 40.112.124.25:9352

Server stack trace: 
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at Microsoft.ServiceBus.RelayedConnectionSession.ConnectAsyncResult.<GetAsyncSteps>b__4(ConnectAsyncResult thisRef, IAsyncResult r)
   at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)

Exception rethrown at [0]: 
   at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at Microsoft.ServiceBus.RelayedConnectionSession.EndConnect(IAsyncResult result)

この間、DNS 要求は送信されないため、この送信接続の機能の手がかりとなるホスト名はありません。

私の調査によると、これは Microsoft が制御するサブネットのようです。そのため、リレー サービスが接続されていることに問題はありませんが、次のことを知りたいです。

  1. この追加接続はオプションですか?
  2. そうでない場合、サブネット全体を許可する必要がありますか?
  3. この IP 範囲は将来変更される可能性がありますか? どこかにハードコードされていますか?
4

1 に答える 1

3

結局、マイクロソフトにサポートを依頼しました。要するに、彼らの答えは次のとおりです。

  1. この追加接続はオプションですか?

    いいえ、オプションではありません。リレー リスナーの場合、ポート 5671 に制御チャネルがあり、この接続は常にそこにあります。次に、ポータル 9352 にデータ チャネルがあります。この接続は、リレー クライアントがリスナーとの通信を試みるときに確立されます。

  2. この IP 範囲は将来変更される可能性がありますか?

    現在、リレーの場合、この IP は変更される可能性があるため、地域のデータセンター全体の IP 範囲を許可する必要があります ( https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653 )。SB 製品チームは、将来的にこの IP 範囲を大幅に縮小し、より予測可能にするように取り組んでいます。この未来には正確な ETA はありません。

良いニュースは、彼らがそれに取り組んでいることです。悪いニュースは、スムーズな操作を確保するために、ホワイトリストに多数の IP アドレスを追加する必要があることです。

于 2016-03-31T09:43:20.503 に答える