2

По умолчанию я пытаюсь понять, какие правила брандмауэра для облачных сервисов Azure (роли Web/Worker), и я смущен.Понимание брандмауэра облачных сервисов Azure

На основе нескольких источников, включая эту ссылку http://download.microsoft.com/download/C/A/3/CA3FC5C0-ECE0-4F87-BF4B-D74064A00846/AzureNetworkSecurity_v3_Feb2015.pdf, входящие соединения по умолчанию блокируются для облачных сервисов, будь то роль рабочего или веб-роли. Чтобы открыть входящее соединение, мне нужно будет указать параметры для EndPoints элементов в .cscfg.

Однако я никогда не делал этого, но мои роли в сети и рабочие роли принимают inboud соединение, даже соединение UDP с ролью исполнителя.

Что мне не хватает?

Обновление: Извиняюсь, я искал неправильный файл. По причинам я не могу объяснить, что я смешал .csdef и .cscfg. Теперь это выглядит как глупый вопрос :)

ответ

0

Дэвид большую часть ответа покрыта за подробный Почему это работает: https://azure.microsoft.com/nl-nl/documentation/articles/cloud-services-role-enable-remote-desktop/

Посмотрите на файл csdef, есть раздел импорта там

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

Модуль для RDP - это «RemoteAccess», и там будет «RemoteAccessForwarder», все плагины/модули находятся в Azure SDK в этом каталоге (замените v2.9 на вашу версию SDK с лазером)

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> 

Это позволит открыть порт 3389 для соединения RDP, так что конечная точка находится в .csdef файла, но через импорт ,

Также взгляните на «RemoteForwarder», он действует как шлюз, поэтому снаружи открывается только один порт (3389), и только 1 экземпляр прослушивает это. Затем RemoteForwarder перенаправляет соединение RDP на нужную машину.Дополнительная информация: https://blogs.msdn.microsoft.com/avkashchauhan/2011/12/06/how-does-remote-desktop-works-in-windows-azure/

+0

Этот ответ полностью отключен от темы. –

2

Вы правы - для ролей в Интернете и для работы необходимо определить конечные точки, чтобы разрешить внешнему трафику проходить через экземпляры вашей роли.

Относительно того факта, что вы можете получить доступ к существующим экземплярам веб-/ рабочих: по умолчанию для вашей веб-роли создается конечная точка для порта 80, и если вы включили RDP, это также включено.

Просто имейте в виду, что происходят сопоставления портов. То есть вы указываете внешний порт (возможно ... порт 8000), который затем отображается на ваш фактический порт, где ваш код прослушивает (может быть ... порт 80).

Также имейте в виду, что если вы используете один из этих портов для одной роли, вы должны придумать другой порт для другой роли. Все экземпляры данной роли могут потреблять один и тот же порт с балансировкой нагрузки. Но ... если вы настроили веб-сервер, используя, например, порт 8000 извне на свою веб-роль, и вы определяете другую веб-роль (или, возможно, рабочую роль), вы не можете использовать порт 8000 для этой роли.

Ролевые конечные точки отображаются в проекте облачных сервисов в Visual Studio, если вы не хотите напрямую редактировать файл конфигурации.