连接到未知IP地址的Azure服务总线中继:40.112.124.x:9352

时间:2016-03-08 16:54:04

标签: c# .net wcf azure azure-servicebusrelay

我们使用Azure Service总线中继提供暴露于云的内部部署软件,我们用于公开的基本代码如下(我删除了所有可识别的内容):

    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();

这对大多数客户来说都很好,但是,我们的一位客户有严格的防火墙政策。

According to the SB guidelines we have found,我们要求他们将端口9351-9354打开到ourdomain.servicebus.windows.net。现在我们发现当有传入请求时,服务连接到'ourdomain'(我们在Wireshark中看到这个成功,也在WCF日志中成功)和40.112.124.x上的未知(对我们)服务: 9352(最后一个八位字节随每个请求而变化)。

我已经能够通过禁止连接到任何端口上的任何40.x.x.x地址来重现我的开发环境中的问题。这是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请求,因此没有主机名提供此传出连接功能的任何线索。

从我的调查来看,this appears to be a Microsoft controlled subnet,所以我很好地连接到它的中继服务,但我想知道:

  1. 此附加连接是否可选?
  2. 如果没有,我们应该允许整个子网吗?
  3. 未来这个IP范围会发生变化吗?它在某处被硬编码了吗?

1 个答案:

答案 0 :(得分:3)

最后,我们要求微软提供支持。 简而言之,他们的答案如下:

  1. 此附加连接是否可选?

      

    不,它不是可选的。对于中继侦听器,端口5671上有一个控制通道,此连接始终存在。然后在门户网站9352上有一个数据通道,当有一个中继客户端尝试与监听器通信时建立此连接。

  2. 未来这个IP范围会发生变化吗?

      

    目前,对于中继,此IP可以更改,因此您需要允许您所在区域的整个数据中心的IP范围(https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653)。 SB产品团队将在未来大力降低此IP范围,使其更具可预测性。这个未来没有确切的ETA。

  3. 所以好消息是他们正在努力。坏消息是,现在,我们需要在白名单中添加大量IP地址,以确保顺利运行。