![](/img/trans.png)
[英]Connecting Azure Service Bus Relay (WCF endpoint) using HttpWebRequest
[英]Azure service bus relay connecting to unknown ip address: 40.112.124.x:9352
我們提供使用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();
這對於大多數客戶來說都可以正常工作,但是其中一位客戶擁有嚴格的防火牆策略。
根據我們發現的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控制的子網 ,因此可以將中繼服務連接到該子網 ,但我想知道:
最后,我們要求Microsoft提供支持。 簡而言之,他們的答案如下:
此附加連接是可選的嗎?
不,這不是可選的。 對於中繼偵聽器,端口5671上有一個控制通道,此連接始終存在。 然后在門戶9352上有一個數據通道,當存在中繼客戶端嘗試與偵聽器進行通信時,將建立此連接。
這種IP范圍將來會改變嗎?
當前,該IP可以更改以進行中繼,因此您需要允許您所在區域的整個數據中心的IP范圍( https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=41653 )。 SB產品團隊將在未來努力降低IP范圍,使其更加可預測。 在這個未來沒有確切的預計到達時間。
因此,好消息是他們正在努力。 壞消息是,現在,我們將需要在白名單中添加很多IP地址,以確保正常運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.