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 指南,我们要求他们向 ourdomain.servicebus.windows.net 开放端口 9351-9354。现在我们发现,当有传入请求时,服务会连接到“ourdomain”(我们在 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 上有一个控制通道,此连接始终存在。然后在portal 9352上有一个数据通道,这个连接是在有中继客户端试图与监听器通信时建立的。

  2. 这个 IP 范围将来会改变吗?

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

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

于 2016-03-31T09:43:20.503 回答