Поделиться через


Настройка реестра для распределения портов и выборочной привязки

Начиная с Windows 2000, программа в наборе ресурсов Windows с именем Rpccfg.exe должна использоваться для задания привязок. Дополнительные сведения см. в комплекте ресурсов Windows для соответствующей версии операционной системы.

Для версий windows до Windows 2000 разделы реестра в следующей таблице указывают системные значения по умолчанию для динамического выделения портов и привязки к сетевым адаптерам на нескольких компьютерах. Сначала необходимо создать эти ключи, а затем указать соответствующие параметры.

Использование функции RpcServerUseProtseqEx влияет на эти параметры. Разработчики должны ознакомиться с параметрами реестра, описанными в этом разделе, и функции RpcServerUseProtseqEx при управлении выделением портов. Пример с тремя гипотетическими приложениями следует таблице ниже и демонстрирует взаимодействие этих параметров и RpcServerUseProtseqEx функции.

Если ключ отсутствует или содержит недопустимое значение, вся конфигурация помечается как недопустимая, а все RpcServerUseProtseq* вызовы через ncacn_ip_tcp или ncadg_ip_udp завершаются ошибкой.

Заметка

Порты, выделенные процессу, остаются выделенными до тех пор, пока этот процесс не умрет. Если все доступные порты используются, функция возвращает RPC_S_OUT_OF_RESOURCES.

 

Ключ порта Тип данных Описание
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               Ports
REG_MULTI_SZ Задает набор диапазонов IP-портов, состоящих либо из всех портов, доступных из Интернета, либо всех портов, недоступных из Интернета. Каждая строка представляет один порт или включающий набор портов (например, 1000-1050, 1984). Если какие-либо записи находятся вне диапазона от 0 до 65535 или если не удается интерпретировать любую строку, время выполнения RPC будет рассматривать всю конфигурацию как недопустимую.
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               PortsInternetAvailable
REG_SZ Y или N (не учитывает регистр). Если Y, порты, перечисленные в ключе портов, являются всеми доступными в Интернете портами на этом компьютере. Если N, порты, перечисленные в ключе портов, — это все порты, которые недоступны в Интернете.
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               UseInternetPorts
REG_SZ Y или N (не учитывает регистр). Указывает политику по умолчанию системы. Если Y, процессы, использующие значение по умолчанию, будут назначены портам из набора доступных в Интернете портов, как описано выше. Если N, процессы, использующие значение по умолчанию, будут назначены портам из набора портов, доступных только для интрасети.
HKEY_LOCAL_MACHINE   System      CurrentControlSet         Services            Rpc               Linkage                  Bind
REG_MULTI_SZ Перечисляет имена устройств всех сетевых интерфейсов, к которым следует привязываться по умолчанию (например, \Device\AMDPCN1). Если ключ не существует, сервер привязывается ко всем сетевым адаптерам. Если ключ существует, сервер привязывается к сетевым адаптерам, указанным в ключе, если для поля NICFlags не задано значение RPC_C_BIND_TO_ALL_NICS. Если ключ имеет значение NULL (""), конфигурация будет помечена как недопустимая, и все вызовы к RpcServerUseProtseq* через ncacn_ip_tcp или ncadg_ip_udp завершится ошибкой.

 

В следующей таблице показано, как влияет три примера приложений на параметры, определенные в предыдущей таблице, а также способы применения параметров с помощью функции RpcServerUseProtseqEx.

В этом примере рассматриваются три гипотетических приложения:

  • InternetApp: это приложение предназначено для доступа к Интернету и указало RPC_C_USE_INTERNET_PORT в EndpointFlags член структуры RPC_POLICY, переданной функции RpcServerUseProtseqEx.
  • LocalApp: это приложение не предназначено для доступа к Интернету и указало RPC_C_USE_INTRANET_PORT в EndpointFlags член структуры RPC_POLICY, переданной функции RpcServerUseProtseqEx.
  • DefaultApp: это приложение задает нуль в EndpointFlags элемент структуры RPC_POLICY, переданной функции RpcServerUseProtseqEx.

В следующей таблице объясняется влияние этих параметров на основе значений, указанных в записях реестра, описанных в предыдущей таблице. Для рекомендаций по форматированию назначаются следующие коды:

PIA = значение ключа PortsInternetAvailable

UIP = значение ключа UseInternetPorts

Для этого примера значение ключа "Порты" равно 5000-5100 для каждой записи.

Приложение PIA UIP Результат
InternetApp Y Y Использует порты от 5000 до 5100
LocalApp Y Y Использует порт за пределами диапазона 5000-5100
Приложение по умолчанию Y Y Использует порты от 5000 до 5100
Интернет-приложение Y N Использует порты от 5000 до 5100
LocalApp Y N Использует порт за пределами диапазона 5000-5100
DefaultApp У N Использует порт за пределами диапазона 5000-5100
InternetApp N Y Использует порт за пределами диапазона 5000-5100
LocalApp N Y Использует порты от 5000 до 5100
DefaultApp N Y Использует порт за пределами диапазона 5000-5100
InternetApp N N Использует порт за пределами диапазона 5000-5100
LocalApp N N Использует порты от 5000 до 5100
DefaultApp N N Использует порты от 5000 до 5100

 

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqIfEx

ncacn_ip_tcp

ncadg_ip_udp