Azure混合连接到HTTP服务

时间:2016-06-30 15:31:43

标签: azure azure-web-sites

我已成功创建混合连接(ServerA)并将其链接到我的Azure Web App。状态已成功连接:ServerB:1010已定义

On My On Premise计算机(ServerA)我可以连接到ServerB上运行的HTTP服务:1010但由于其他限制,我无法在ServerB上安装Hybrid Connection Manager。

如果我在Azure Web App中使用WebClient.UploadData(' ServerB:1010',data []),则会收到以下错误。

无法连接到远程服务器---> System.Net.Sockets.SocketException:尝试以其访问权限禁止的方式访问套接字。

如果我连接到也可从此服务器访问的数据库服务器MySql或Oracle,我没有任何问题

2 个答案:

答案 0 :(得分:5)

  

我已成功创建混合连接(ServerA)并将其链接到我的Azure Web App。

将其删除并添加混合连接到服务器B 。在服务器A 上安装混合连接管理器。 HCM将充当反向代理。

混合连接不关心哪个服务器具有HCM安装,只要该服务器可以访问您在新建>中指定的DNS名称。混合连接门户网站刀片。

WebClient.UploadData('ServerB:1010', data[])的示例流量:

Web App ---> Hybrid Connection ---> HCM on Server A ---> 1010/TCP on Server B.
        <---                   <---                 <---

有一种更简单的测试方法。打开Kudu控制台并执行

tcpping ServerB:1010

更正tcpping测试非常具有误导性,因为您正在握手混合连接的Azure端,而不是本地应用程序的TCP端点。即使本地内容没有连接,也可能很乐意回复你。这就是我的意思:
tcpping is bad

始终在应用层进行测试(例如,使用Kudu Console中的curl.exe http://webservice.corp.local

您必须使用名称而不是IP地址。使用完整的FQDN在Portal设置和代码中引用ServerA和ServerB。混合连接通过拦截操作系统级别的DNS调用并将其解析为魔法127.0.0.x,然后通过混合连接路由到本地。

TL; DR版本:

而不是

10.10.10.2:1010

使用

ServerB.domain.local:1010

在Portal设置中以及在代码中引用本地主机时。

如果您使用IP地址而不是名称,会发生以下情况:

IP Address

在Kudu的DebugConsole中:

D:\home>nameresolver 192.168.0.4
Server: Default

Non-authoritative answer:
Name: 192.168.0.4
Addresses:  127.0.0.3


D:\home>tcpping 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Complete: 0/4 successfull attempts (0%). Average success time: 0ms


D:\home>curl -s 192.168.0.4
This is iisstart.htm from IIS 8.5 on Windows Server 2012 R2, on-prem.

因此,根据您调用的API(将192.168.0.4作为FQDN与IP地址相关的API),有点可以正常工作。

答案 1 :(得分:3)

您无法使用混合连接进行tcpping。它并没有真正告诉你任何事情。所有这一切都告诉您,您点击本地套接字将捕获您的TCP流量前往您的HC端点。它实际上并没有通过连接。

对于使用具有混合连接的IPv4地址,它可以工作,但有时它不会。原因是该功能通过捕获DNS请求来起作用。如果您在应用程序代码中使用的客户端库没有对IP地址进行DNS查找,那么它将无法通过混合连接。

DNS名称必须从运行混合连接管理器的主机解析为正确的IP地址。

转到原始问题,您需要为ServerB端口1010的端点定义混合连接。用于ServerB的DNS名称必须从运行HCM的主机解析。您的HCM需要对ServerB端口1010和Azure进行网络访问。您的状态显示为已连接,这表示您的网络应用可以与该端点的混合连接管理器通信。因此,测试从运行HCM的主机到所需主机:端口端点的连接。如果可以,请使用DNS名称。我希望这能阻止你。