【问题标题】:Understanding Azure cloud services firewall了解 Azure 云服务防火墙
【发布时间】:2016-04-26 20:02:01
【问题描述】:

我试图了解默认情况下 Azure 云服务(Web/Worker 角色)的防火墙规则是什么,但我很困惑。

基于多个来源,包括此链接http://download.microsoft.com/download/C/A/3/CA3FC5C0-ECE0-4F87-BF4B-D74064A00846/AzureNetworkSecurity_v3_Feb2015.pdf,默认情况下会阻止云服务的入站连接,无论是工作者角色还是 Web 角色。要打开入站连接,我需要为 .cscfg 中的 EndPoints 元素指定参数。

但是,我从来没有这样做过,但是我的 Web 角色和辅助角色接受入站连接,甚至是与辅助角色的 UDP 连接。

我错过了什么?

更新:抱歉,我查看了错误的文件。由于我无法解释的原因,我混合了 .csdef 和 .cscfg。现在看起来很愚蠢的问题:)

【问题讨论】:

    标签: azure azure-web-roles azure-worker-roles azure-cloud-services


    【解决方案1】:

    您说得对 - 网络和辅助角色需要定义端点,以允许外部流量通过您的角色实例。

    关于您当前可以访问现有 Web/worker 实例的事实:默认情况下,会为您的 Web 角色创建端口 80 的端点,如果您启用了 RDP,也会启用该端点。

    请注意,会发生端口映射:也就是说,您指定外部端口(可能...端口 8000),然后映射到您的代码正在侦听的实际端口(可能...端口 80 )。

    还要注意,如果您将其中一个端口用于一个角色,则必须为不同的角色提供不同的端口。给定角色的所有实例都可以以负载平衡的方式使用相同的端口。但是...如果您在 Web 角色的外部使用端口 8000 设置 Web 服务器,并且您定义了另一个 Web 角色(或者可能是辅助角色),则不能将端口 8000 用于该角色。

    角色端点在 Visual Studio 中的云服务项目中公开,以防您不想直接编辑配置文件。

    【讨论】:

      【解决方案2】:

      David 已经回答了大部分问题,详细说明了它为什么起作用: https://azure.microsoft.com/nl-nl/documentation/articles/cloud-services-role-enable-remote-desktop/

      看一下csdef文件,里面有一个imports部分

      <Imports>
        <Import moduleName="<import-module>"/>
      </Imports>
      

      RDP 的模块是“RemoteAccess”,会有一个“RemoteAccessForwarder”,所有插件/模块都在 Azure SDK 的这个目录下(用你的 azure SDK 版本替换 v2.9)

      C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins
      

      导入此模块会导致在运行时将以下配置添加到 csdef 文件中:

      <?xml version="1.0" ?>
      <RoleModule 
        xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"
        namespace="Microsoft.WindowsAzure.Plugins.RemoteAccess">
        <Startup priority="-1">
          <Task commandLine="RemoteAccessAgent.exe" executionContext="elevated" taskType="background" />
          <Task commandLine="RemoteAccessAgent.exe /blockStartup" executionContext="elevated" taskType="simple" />
        </Startup>
        <ConfigurationSettings>
          <Setting name="Enabled" />
          <Setting name="AccountUsername" />
          <Setting name="AccountEncryptedPassword" />
          <Setting name="AccountExpiration" />
        </ConfigurationSettings>
        <Endpoints>
          <InternalEndpoint name="Rdp" protocol="tcp" port="3389" />
        </Endpoints>
        <Certificates>
          <Certificate name="PasswordEncryption" storeLocation="LocalMachine" storeName="My" permissionLevel="elevated" />
        </Certificates>
      </RoleModule>
      

      这将为 RDP 连接打开端口 3389,因此端点位于 .csdef 文件中,但通过导入。

      另外看看“RemoteForwarder”,它作为网关,所以只需要在外面打开1个端口(3389),只有1个实例会监听这个。然后 RemoteForwarder 会将 RDP 连接转发到正确的机器。更多信息: https://blogs.msdn.microsoft.com/avkashchauhan/2011/12/06/how-does-remote-desktop-works-in-windows-azure/

      【讨论】:

      • 这个答案完全是题外话。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 2017-02-08
      • 2022-07-27
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多