Actividad
Remote Procedure Call, RPC (Llamada a Procedimiento
Remoto).
Resumen
Investigar que es, como se configura o activa el protocolo RPC entre
diferentes sistemas operativos.
Autor
ARELLANO MARÍN JESÚS OSWALDO. IS22110288.
BRAVO MORENO JESÚS AARÓN. IS22110089.
GUTIÉRREZ PEDROZA ANGEL RODRIGO. IS22110668.
RAYA URBINA GUSTAVO GABRIEL. IS22110959.
REGALADO REGALADO ALAN. IS22110790.
Fecha
miércoles, 8 de mayo de 2024
The Secta Team
Declaramos solemnemente que el contenido de esta tarea ha sido realizado por nosotros,
excepto en las citas referenciadas en el documento y esta a su vez no ha sido enviada para su
revisión por ningún otro alumno del ITESI
RPC ENTRE SO’s.
El Remote Procedure Call, RPC o llamada a procedimiento remoto es un
programa que utiliza una computadora para ejecutar código en otra máquina
remota sin tener que preocuparse por las comunicaciones entre ambas, de forma
que parezca que se ejecuta en local. El protocolo que se utiliza para esta llamada
es un gran avance sobre los sockets de Internet usados hasta el momento. De
esta manera el programador no tenía que estar pendiente de las comunicaciones,
estando estas encapsuladas dentro de las RPC.
Llamada a procedimiento remoto (RPC) es un protocolo que proporciona el
paradigma de comunicaciones de alto nivel utilizado en el sistema operativo. RPC
presupone la existencia de un protocolo de transporte de bajo nivel, como por
ejemplo Protocolo de control de transmisiones/Internet Protocol (TCP/IP) o
Protocolo de datagramas de usuario (UDP), para transportar los datos de mensaje
entre programas de comunicación. RPC implementa un sistema lógico de
comunicaciones de cliente a servidor diseñado específicamente para el soporte de
aplicaciones de red.
El protocolo RPC permite a los usuarios trabajar con procedimientos remotos
como si los procedimientos fueran locales. Las llamadas de procedimiento remoto
se definen a través de rutinas contenidas en el protocolo RPC. Cada mensaje de
llamada coincide con un mensaje de respuesta. El protocolo RPC es un protocolo
de paso de mensajes que implementa otros protocolos no RPC como, por
ejemplo, el proceso por lotes y la difusión de llamadas remotas. El protocolo RPC
también admite procedimientos de devolución de llamada y la subrutina select en
el lado del servidor.
Un cliente es un sistema o proceso que accede a los servicios o recursos de otro
proceso o sistema de la red. Un servidor es un sistema que proporciona servicios
y recursos y que implementa servicios de red. Cada servicio de red es una
colección de programas remotos. Un programa remoto implementa procedimientos
remotos. Los procedimientos, sus parámetros y los resultados están todos
documentados en el protocolo del programa específico.
RPC proporciona un proceso de autenticación que identifica el servidor y el cliente
entre sí. RPC incluye una ranura para los parámetros de autenticación en cada
llamada de procedimiento remoto para que el llamante pueda identificarse a sí
mismo en el servidor. El paquete de cliente genera y devuelve parámetros de
autenticación. RPC da soporte a varios tipos de autenticación como, por ejemplo,
los sistemas UNIX ® y Data Encryption Standard (DES).
En RPC, cada servidor proporciona un programa que es un conjunto de
procedimientos de servicio remoto. La combinación de una dirección de sistema
principal, número de programa y número de procedimiento especifica un
procedimiento de servicio remoto. En el modelo RPC, el cliente realiza una
llamada de procedimiento para enviar un paquete de datos al servidor. Cuando
llega el paquete, el servidor llama a una rutina de asignación, realiza cualquier
servicio que se solicite y envía una respuesta al cliente. A continuación, la llamada
de procedimiento vuelve al cliente.
¿Cómo funciona la llamada a procedimiento remoto o RPC?
1. El cliente hace la llamada al procedimiento remoto mediante un mensaje a
través de la red. Este se detiene ya que es un proceso síncrono, es decir,
necesita una respuesta del servidor para poder continuar su ejecución. En
esta llamada se incluye un stub (o resguardo en español) el cual se
encarga de ajustar parámetros y direcciones de memoria de un ambiente
(el cliente) a otro (el servidor).
2. El servidor recibe la petición y desempaqueta el mensaje para extraer la
información necesaria para realizar la tarea. El stub ayuda a que el servidor
sea capaz de convertir parámetros de una representación a otra (de ser
necesario), para traducir direcciones de memoria de cliente a servidor, etc.
3. El servidor ejecuta la tarea.
4. El servidor crea un mensaje de respuesta para el cliente en el que incluye el
resultado de la tarea que este le pidió realizar.
5. El cliente recibe y desempaqueta el mensaje de respuesta del servidor.
Continua con su ejecución normal.
El stub.
El stub es la pieza de código que le permite al servidor ejecutar la tarea que se le
asignó. Se encarga de proveer la información necesaria para que el servidor
convierta las direcciones de los parámetros que el cliente envió en direcciones de
memoria válidos dentro del ambiente del servidor. La representación de datos en
cliente y servidor (big-endian o little-endian) podría discrepar, el stub también
provee la información necesaria para solucionar esta situación. De forma general
es la pieza de código que se encarga de enmascarar toda discrepancia entre el
cliente y servidor. Es necesario que las bibliotecas de stubsestén instaladas tanto
en el cliente como en el servidor.
El siguiente diagrama muestra de forma resumida cómo funciona una llamada a
procedimiento remoto:
Problemas con RPC.
A pesar de que RPC nos ofrece muchas ventajas para brindar servicios basados
en un modelo cliente-servidor, también tiene una desventaja bastante importante:
• RPC es dependiente del lenguaje de programación que se utilice. Si
quisiéramos utilizarlo para ofrecer algún servicio web, por ejemplo, es
probable que necesitemos utilizar más de un lenguaje de programación del
lado del cliente y del servidor, en ese momento RPC deja de ser una
alternativa. Sin embargo, si todos los módulos del servicio que vamos a
ofrecer a los clientes están basados en el mismo lenguaje de
programación, RPC es una muy buena opción.
Puntos clave sobre el Protocolo de Control Remoto:
1. Funcionamiento: En un RPC, el cliente invoca a una función en el servidor
como si fuera una llamada local. El cliente proporciona los parámetros de
entrada necesarios para la función y espera recibir los resultados de vuelta.
Internamente, el sistema RPC se encarga de empaquetar los parámetros,
enviar la solicitud al servidor a través de la red, ejecutar la función en el
servidor, y enviar los resultados de vuelta al cliente.
2. Transparencia: Uno de los principales objetivos del RPC es ocultar la
complejidad de la comunicación entre sistemas. Desde la perspectiva del
programador, una llamada a una función remota se ve y se utiliza de la
misma manera que una llamada a una función local, lo que simplifica el
desarrollo de aplicaciones distribuidas.
3. Protocolos: Existen varios protocolos que pueden implementar RPC, como
RPC sobre TCP/IP, RPC sobre HTTP (utilizando tecnologías como XML-
RPC o JSON-RPC), y RPC sobre protocolos específicos de comunicación
de red.
4. Implementaciones: Hay varias implementaciones de RPC disponibles,
tanto en software comercial como de código abierto. Algunas de las
implementaciones más conocidas incluyen gRPC (desarrollado por
Google), Apache Thrift (desarrollado por Facebook), y CORBA (Common
Object Request Broker Architecture).
5. Seguridad: Dado que las comunicaciones en un entorno de RPC suelen
ocurrir a través de una red, es importante considerar la seguridad. Esto
puede incluir autenticación de clientes y servidores, autorización para
acceder a funciones específicas, y cifrado de datos para proteger la
privacidad y la integridad de la información transmitida.
¿Cómo funciona el RPC en Windows?
En primer lugar, el intervalo de puertos dinámicos de RPC deberá restringirse a un
número más pequeño y manejable que facilite el bloqueo mediante un servidor de
seguridad (firewall) o una directiva IPsec. De modo predeterminado, RPC asigna
dinámicamente puertos en el intervalo de 1024 a 5000 para extremos que no
especifican un puerto en el que escuchar.
NotaEste artículo usa el intervalo 5001 a 5021 de puertos, para evitar el
agotamiento de los puertos efímeros y para reducir de 3976 a 20 el número de
puertos disponibles para los puntos extremos de RPC.
Después se debe crear una directiva IPsec que restrinja el acceso a este intervalo
de puertos, negando el acceso a todos los host de la red.
Finalmente. la directiva IPsec se puede actualizar para dar a determinadas
direcciones IP o subredes acceso a los puertos RPC y para excluir todos los
demás.
Para iniciar la tarea de reconfigurar el intervalo de puertos dinámicos RPC,
descargue la herramienta de configuración de RPC (RPCCfg.exe) y cópiela
después en la estación de trabajo o en el servidor que se va a reconfigurar. Para
ello, visite el siguiente sitio web de Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyID=0f9cde2f-8632-4da8-
ae70-645e1ddaf369&DisplayLang=en
Para realizar las sucesivas tareas de crear una directiva IPsec, descargar la
herramienta de directivas de seguridad de Protocolo Internet (Ipsecpol.exe) y
copiarla después en la estación de trabajo o el servidor que se va a reconfigurar.
Para ello, visite el siguiente sitio web de Microsoft:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7D40
460C-A069-412E-A015-A2AB904B7361
Nota para crear una directiva IPsec para Microsoft Windows XP o una versión
posterior del sistema operativo Windows, use Ipseccmd.exe, que forma parte de
las herramientas de soporte técnico de Windows XP. El uso y la sintaxis de
IPseccmd.exe son los mismo que los de Ipsecpol.exe. Para obtener más
información acerca de las herramientas de soporte técnico de Windows XP, haga
clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
838079 Herramientas de soporte técnico del Service Pack 2 de Windows XP
Reubicar y reducir el intervalo de puertos dinámicos RPC
utilizando RPCCfg.exe
Para reubicar y reducir el intervalo de puertos dinámicos RPC utilizando
RPCCfg.exe, siga estos pasos:
1. Copie RPCCfg.exe en el servidor que se va a configurar
2. En el símbolo del sistema, escriba rpccfg.exe -pe 5001-5021 -d 0.
Nota: se recomienda el uso de este intervalo de puertos RPC por puntos
extremos de RPC porque no es probable que los puertos de este intervalo
sean asignados para ser usados por otras aplicaciones. De manera
predeterminada, RPC usa el intervalo de puertos 1024 a 5000 para asignar
puertos a los extremos. Sin embargo, los puertos de este intervalo se
asignan también dinámicamente para que el sistema operativo Windows los
use para las aplicaciones de sockets de Windows y se pueden agotar en los
servidores de mucho uso, como los servidores terminales y los servicios de
nivel medio que hacen muchas llamadas de salida a sistemas remotos.
Por ejemplo, cuando Internet Explorer se pone en contacto con un servidor
Web en el puerto 80, escucha la respuesta del servidor en un puerto del
intervalo 1024-5000. Un servidor COM de nivel medio que hace llamadas
de salida a otros servidores remotos también usa un puerto de este
intervalo para la respuesta entrante a esa llamada. Mover el intervalo de
puertos que usa RPC para sus extremos al intervalo de puertos que
empieza en el 5001 reducirá las posibilidades de que esos puertos sean
usados por otras aplicaciones.
Para obtener más información sobre el uso de puertos efímeros en los
sistemas operativos Windows, visite los siguientes sitios Web de Microsoft.
▪ Para Windows 2000:
http://technet.microsoft.com/es-es/library/bb726981.aspx
▪ Para Windows Server 2003:
http://technet.microsoft.com/es-es/library/cc758746(WS.10).aspx
Utilice una directiva de firewall o IPsec para bloquear el acceso a
los puertos vulnerables del host afectado.
En los comandos de la siguiente sección, el texto que aparece entre los signos de
tanto por ciento (%) representa el texto del comando que debe introducir la
persona que crea la directiva IPsec. Por ejemplo, si aparece el texto
"%IPSECTOOL%", la persona que crea la directiva debería sustituir el texto del
modo siguiente:
▪ Para Windows 2000, sustituya "%IPSECTOOL%" por "ipsecpol.exe."
▪ Para Windows XP o una versión posterior de Windows, sustituya
"%IPSECTOOL%" por "ipseccmd.exe."
Para obtener más información acerca de cómo usar IPsec para bloquear puertos,
haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge
Base:
813878 Cómo bloquear determinados protocolos de red y puertos mediante IPSec
Bloquear el acceso al asignador de extremos RPC para todas las
direcciones IP.
Para bloquear el acceso al asignador de extremos RPC para todas las direcciones
IP, use la sintaxis siguiente.
Nota: en Windows XP y en los sistemas operativos posteriores, use Ipseccmd.exe.
En Windows 2000, use Ipsecpol.exe (Windows 2000).
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f
*=0:135:TCP -n BLOCK
Nota: no escriba "%IPSECTOOL%" en este comando. "%IPSECTOOL%" trata de
representar la parte del comando que debe ser personalizada. Por ejemplo, en
Windows 2000, escriba el comando siguiente desde un directorio que contenga
Ipsecpol.exe para bloquear todo el acceso entrante a TCP 135:
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f
*=0:135:TCP -n BLOCK
En Windows XP y en los sistemas operativos posteriores, escriba el comando
siguiente desde un directorio que contenga Ipseccmd.exe para bloquear todo el
acceso de entrada a TCP 135:
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f
*=0:135:TCP -n BLOCK
Bloquear el acceso al intervalo de puertos dinámicos RPC para
todas las direcciones IP.
Para bloquear el acceso al intervalo de puertos dinámicos RPC para todas las
direcciones IP, use la sintaxis siguiente.
Nota: en Windows XP y en los sistemas operativos posteriores, use Ipseccmd.exe.
En Windows 2000, use Ipsecpol.exe (Windows 2000).
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP %PORT%
Rule" -f *=0:%PORT%:TCP -n BLOCK
Nota: no escriba "%IPSECTOOL%" ni "%PORT%" en este comando.
"%IPSECTOOL%" y "%PORT%" tratan de representar partes del comando que
deben ser personalizadas. Por ejemplo, escriba el comando siguiente en los hosts
de Windows 2000 para bloquear todo el acceso entrante a TCP 5001:
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f
*=0:5001:TCP -n BLOCK
Para bloquear todo el acceso entrante a TCP 5001, escriba el comando siguiente
en los hosts de Windows XP y en los de los sistemas operativos Windows
posteriores:
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f
*=0:5001:TCP -n BLOCK
Repita este comando por cada puerto RPC que deba bloquearse cambiando el
número de puerto enumerado en este comando. Los puertos que deben ser
bloqueados están en el intervalo 5001-5021.
Nota: No olvide cambiar el número de puerto en el nombre de la regla (el
modificador -r) y en el filtro (el modificador -f).
Opcional: Dar acceso al asignador de extremos RPC para
subredes específicas cuando es acceso es necesario.
Si debe dar acceso a subredes específicas a los puertos RPC restringidos,
primero debe dar a esas subredes acceso al asignador de extremos RPC que
bloqueó antes. Para conceder a una subred específica acceso al asignador de
extremos de RPC, use el comando siguiente:
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP 135 from
%SUBNET% Rule" -f %SUBNET%/%MASK%=0:135:TCP -n PASS
Nota: en este comando, se aplican las siguientes instrucciones:
▪ "%IPSECTOOL%" representa el comando que se va a usar. Este comando
es "ipsecpol.exe" o "ipseccmd.exe". Que sea el uno o el otro dependerá del
sistema operativo que está configurando.
▪ "%SUBNET%" representa la subred de IP remota a la que quiere dar
acceso, por ejemplo, 10.1.1.0.
▪ "%MASK%" representa la máscara de subred que se va a usar,
255.255.255.0.
Por ejemplo, el comando siguiente habilita a todos los host de la subred
10.1.1.0/255.255.255.0 para conectar con el puerto TCP 135. Todos los
otros host verán denegadas sus conexiones por la regla del bloque
predeterminado que se creó antes para este puerto.
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 135
from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:135:TCP -n PASS
Opcional: Dar acceso al nuevo intervalo de puertos dinámicos
RPC para subredes específicas si se necesita el acceso.
Cada subred a la que anteriormente se dio acceso al asignador de extremos RPC
debe recibir también acceso a todos los puertos del intervalo de puertos dinámicos
RPC (5001-5021).
Si permite que las subredes lleguen al asignador de extremos RPC, pero no al
intervalo de puertos dinámicos, la aplicación puede dejar de responder o puede
experimentar otros problemas.
El comando siguiente da a una subred específica acceso a un puerto del nuevo
intervalo de puertos dinámicos RPC:
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP %PORT%
from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:%PORT%:TCP -n PASS
Nota: en este comando, se aplican las siguientes instrucciones:
▪ "%IPSECTOOL%" representa el comando que se va a usar. Este comando
es "ipsecpol.exe" o "ipseccmd.exe". Que sea el uno o el otro dependerá del
sistema operativo que está configurando.
▪ "%PORT%" representa el puerto del intervalo de puertos dinámicos al que
da acceso.
▪ "%SUBNET%" representa la subred de IP remota a la que quiere dar
acceso, por ejemplo, 10.1.1.0.
▪ "%MASK%" representa la máscara de subred que se va a usar,
255.255.255.0.
Por ejemplo, el comando siguiente habilita a todos los host de la subred
10.1.1.0/255.255.255.0 para conectar con el puerto TCP 5001. Todos los
otros host verán denegadas sus conexiones por la regla del bloque
predeterminado que se creó antes para este puerto.
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 5001
from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:5001:TCP -n PASS
Nota: Este comando debería repetirse por cada subred y puerto del nuevo
intervalo de puertos dinámicos.
Asignar la directiva Ipsec
Nota: los comandos de esta sección surten efecto inmediatamente.
Después de crear todas las reglas de bloqueo y todas las reglas de permiso
opcional para los puertos RPC configurados, asigne la directiva usando el
comando siguiente:
%IPSECTOOL% -w REG -p "Block RPC Ports" –x
Nota: para quitar inmediatamente la asignación de la directiva, utilice el comando
siguiente:
%IPSECTOOL% -w REG -p "Block RPC Ports" –y
Nota: para eliminar la directiva del Registro, use el comando siguiente:
%IPSECTOOL% -w REG -p "Block RPC Ports" -o
Debe reiniciar el host para que los cambios surtan efecto.
Notas
▪ Los cambios en la configuración de RPC exigen reiniciar.
▪ Los cambios en la directiva IPsec surten efecto inmediatamente y no exigen
reiniciar.
Después de reiniciar la estación de trabajo o el servidor, cualquier interfaz RPC
que use la secuencia de protocolo ncacn_ip_tcp y no especifique un puerto TCP
concreto al que enlazar tendrá un puerto asignado entre los de ese intervalo por el
motor en tiempo de ejecución de RPC cuando se inicie el servidor de RPC.
Nota El servidor puede requerir más de 20 puertos TCP. Puede usar el comando
rpcdump.exe para contar el número de extremos RPC que están enlazados a un
puerto TCP y para incrementar el número si debe hacerlo.
¿Cómo funciona el RPC en Ubuntu?
Utilizando el comando net rpc share
El comando net rpc share proporciona la capacidad de listar, añadir y eliminar
recursos compartidos en un servidor Samba o Windows local o remoto.
Acciones de la lista
Para listar los recursos compartidos de un servidor SMB, utilice el comando net
rpc share list. Opcionalmente, pase el parámetro -S server_name al comando para
listar los recursos compartidos de un servidor remoto. Por ejemplo:
# net rpc share list -U "DOMAIN\administrator" -S server_name
Enter DOMAIN\administrator's password:
IPC$
share_1
share_2
...
Nota:
Los recursos compartidos alojados en un servidor Samba que tienen browseable =
no establecido en su sección en el archivo /etc/samba/smb.conf no se muestran en
la salida.
Añadir una acción.
El comando net rpc share add permite añadir un recurso compartido a un servidor
SMB.
Por ejemplo, para añadir un recurso compartido llamado example en un servidor
Windows remoto que comparte el directorio C:\example\:
# net rpc share add example="C:\example" -U "DOMAIN\administrator" -S server_name
Nota
Debe omitir la barra invertida final en la ruta cuando especifique un nombre de
directorio de Windows.
Para utilizar el comando para añadir un recurso compartido a un servidor Samba:
• El usuario especificado en el parámetro -U debe tener el
privilegio SeDiskOperatorPrivilege concedido en el servidor de destino.
• Debe escribir un script que añada una sección de recursos compartidos al
archivo /etc/samba/smb.conf y recargue Samba. El script debe establecerse
en el parámetro add share command en la
sección [global] en /etc/samba/smb.conf. Para más detalles, consulte la
descripción de add share command en la página man de smb.conf(5).
Eliminar una acción.
El comando net rpc share delete permite eliminar un recurso compartido de un
servidor SMB.
Por ejemplo, para eliminar el recurso compartido llamado ejemplo de un servidor
Windows remoto:
# net rpc share delete example -U "DOMAIN\administrator" -S server_name
Para utilizar el comando para eliminar un recurso compartido de un servidor
Samba:
• El usuario especificado en el parámetro -U debe tener concedido el
privilegio SeDiskOperatorPrivilege.
• Debe escribir un script que elimine la sección del recurso compartido del
archivo /etc/samba/smb.conf y vuelva a cargar Samba. El script debe
establecerse en el parámetro delete share command de la
sección [global] en /etc/samba/smb.conf. Para más detalles, consulte la
descripción de delete share command en la página man de smb.conf(5).
¿Cómo funciona el RPC en Windows 7?
Es posible que encuentre "Servidor RPC" al conectarse a Instrumental de
administración de Windows (WMI) o Microsoft SQL Server, durante una sesión de
llamada a procedimiento remoto (RPC) o al usar varios complementos de
Microsoft Management Console (MMC). En la imagen siguiente se muestra un
ejemplo de error rpc.
Se trata de un error de red común que requiere cierta familiaridad básica con el
proceso para solucionar problemas correctamente. Para empezar, hay varios
términos importantes que debe comprender:
• Asignador de puntos de conexión (EPM): servicio que escucha en el
servidor y guía las aplicaciones cliente a las aplicaciones del servidor
mediante la información de puerto y UUID.
• Torre: describe el protocolo RPC para permitir que el cliente y el servidor
negocien una conexión.
• Pisos: las capas de contenido de una torre que contienen datos
específicos, como puertos, direcciones IP e identificadores.
• UUID: GUID conocido que identifica una aplicación RPC. Durante la
solución de problemas, puede usar el UUID para realizar un seguimiento de
las conversaciones RPC de un solo tipo de aplicación (entre los muchos
tipos que se producen en un solo equipo a la vez).
• Opnum: identifica una función que el cliente quiere que el servidor realice.
Se trata simplemente de un número hexadecimal. Sin embargo, un buen
analizador de red traducirá la función automáticamente. Si no se puede
identificar la función, póngase en contacto con el proveedor de la
aplicación.
• Puerto: punto de conexión de comunicación para la aplicación cliente o
servidor. EPM asigna puertos dinámicos (también conocidos como puertos
altos o puertos efímeros) para que los clientes y servidores los usen.
• Datos de código auxiliar: los datos intercambiados entre las funciones del
cliente y las funciones del servidor. Estos datos son la carga útil, la parte
importante de la comunicación.
Funcionamiento de la conexión
En el diagrama siguiente se muestra un cliente que se conecta a un servidor para
ejecutar una operación remota. Inicialmente, el cliente se pone en contacto con el
puerto TCP 135 en el servidor y, a continuación, negocia con EPM un número de
puerto dinámico. Una vez que EPM asigna un puerto, el cliente se desconecta y, a
continuación, usa el puerto dinámico para conectarse al servidor.
Importante
Si un firewall separa el cliente y el servidor, el firewall tiene que permitir la
comunicación en el puerto 135 y en los puertos dinámicos que asigna EPM. Un
enfoque para administrar este escenario es especificar puertos o intervalos de
puertos para que EPM lo use. Para obtener más información,
consulte Configuración de cómo RPC asigna puertos dinámicos.
Algunos firewalls también permiten el filtrado UUID. En este escenario, si una
solicitud RPC usa el puerto 135 para cruzar el firewall y ponerse en contacto con
EPM, el firewall anota el UUID asociado a la solicitud. Cuando EPM responde y
envía un número de puerto dinámico para ese UUID, el firewall también anota el
número de puerto. A continuación, el firewall permite operaciones de enlace RPC
para ese UUID y puerto.
Configuración de cómo RPC asigna puertos dinámicos
De forma predeterminada, EPM asigna puertos dinámicos aleatoriamente desde el
intervalo configurado para TCP y UDP (en función de la implementación del
sistema operativo que se usa). Sin embargo, este enfoque podría no ser práctico,
especialmente si el cliente y el servidor deben comunicarse a través de un firewall.
Un método alternativo consiste en especificar un número de puerto o un intervalo
de números de puerto para que EPM los use y abrir esos puertos en el firewall.
Muchas aplicaciones de servidor windows que se basan en RPC proporcionan
opciones (como claves del Registro) para personalizar los puertos permitidos. Los
servicios de Windows usan la
subclave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet para
esta tarea.
Cuando especifique un puerto o un intervalo de puertos, use puertos que estén
fuera del intervalo de puertos de uso común. Puede encontrar una lista completa
de los puertos de servidor que se usan en Windows y los principales productos de
Microsoft en Información general del servicio y requisitos de puertos de red para
Windows. En el artículo también se enumeran las aplicaciones de servidor RPC y
se menciona qué aplicaciones de servidor RPC se pueden configurar para usar
puertos de servidor personalizados más allá de las funcionalidades del entorno de
ejecución de RPC.
De forma predeterminada, la clave de Internet no existe. Por lo tanto, tiene que
crearlo. Para la clave de Internet , puede configurar las siguientes entradas:
• Puertos REG_MULTI_SZ: especifica un puerto o un intervalo inclusivo de
puertos. Las demás entradas que aparecen en Internet indican si estos son
los puertos que se van a usar o los puertos que se van a excluir del uso.
o Intervalo de valores: 0 - 65535
Por ejemplo, 5984 representa un único puerto y 5000–
5100 representa un conjunto de puertos. Si algún valor está fuera del
intervalo de 0 a 65535, o si no se puede interpretar ningún valor, el
runtime de RPC trata toda la configuración como no válida.
• PortsInternetAvailable REG_SZ: especifica si el valor de Ports representa
los puertos que se van a incluir o los puertos que se van a excluir.
o Valores: Y o N (no distinguen mayúsculas de minúsculas)
▪ Y: Los puertos que aparecen en la
entrada Puertos representan todos los puertos de ese equipo
que están disponibles para EPM.
▪ N: Los puertos que aparecen en la
entrada Puertos representan todos los puertos que no están
disponibles para EPM.
• UseInternetPorts REG_SZ: especifica la directiva del sistema
predeterminada.
o Valores: Y o N (no distinguen mayúsculas de minúsculas)
▪ Y: a los procesos que usan la directiva de sistema
predeterminada se les asignan puertos del conjunto de
puertos disponibles en Internet, tal como se definió
anteriormente.
▪ N: A los procesos que usan la directiva de sistema
predeterminada se les asignan puertos del conjunto de
puertos de solo intranet.
Debe abrir un intervalo de puertos que sean mayores que el puerto 5000. Es
posible que otras aplicaciones ya usen números de puerto inferiores a 5000 y
podrían provocar conflictos con las aplicaciones DCOM. Además, la experiencia
anterior muestra que se debe abrir un mínimo de 100 puertos. Esto se debe a que
varios servicios del sistema se basan en estos puertos RPC para comunicarse
entre sí.
De forma predeterminada, la clave de Internet no existe. Por lo tanto, tiene que
crearlo. Para la clave de Internet , puede configurar las siguientes entradas:
• Puertos REG_MULTI_SZ: especifica un puerto o un intervalo inclusivo de
puertos. Las demás entradas que aparecen en Internet indican si estos son
los puertos que se van a usar o los puertos que se van a excluir del uso.
o Intervalo de valores: 0 - 65535
Por ejemplo, 5984 representa un único puerto y 5000–
5100 representa un conjunto de puertos. Si algún valor está fuera del
intervalo de 0 a 65535, o si no se puede interpretar ningún valor, el
runtime de RPC trata toda la configuración como no válida.
• PortsInternetAvailable REG_SZ: especifica si el valor de Ports representa
los puertos que se van a incluir o los puertos que se van a excluir.
o Valores: Y o N (no distinguen mayúsculas de minúsculas)
▪ Y: Los puertos que aparecen en la
entrada Puertos representan todos los puertos de ese equipo
que están disponibles para EPM.
▪ N: Los puertos que aparecen en la
entrada Puertos representan todos los puertos que no están
disponibles para EPM.
• UseInternetPorts REG_SZ: especifica la directiva del sistema
predeterminada.
o Valores: Y o N (no distinguen mayúsculas de minúsculas)
▪ Y: a los procesos que usan la directiva de sistema
predeterminada se les asignan puertos del conjunto de
puertos disponibles en Internet, tal como se definió
anteriormente.
▪ N: A los procesos que usan la directiva de sistema
predeterminada se les asignan puertos del conjunto de
puertos de solo intranet.
Debe abrir un intervalo de puertos que sean mayores que el puerto 5000. Es
posible que otras aplicaciones ya usen números de puerto inferiores a 5000 y
podrían provocar conflictos con las aplicaciones DCOM. Además, la experiencia
anterior muestra que se debe abrir un mínimo de 100 puertos. Esto se debe a que
varios servicios del sistema se basan en estos puertos RPC para comunicarse
entre sí.
PortQry
PortQry proporciona información rápida sobre cómo funciona RPC antes de
profundizar en los datos de seguimiento de red. Puede determinar rápidamente si
puede realizar una conexión ejecutando el siguiente comando en el equipo cliente:
Portqry.exe -n <ServerIP> -e 135
Portqry.exe -n <ServerIP> -e 135
Querying target system called:
169.254.0.2
Attempting to resolve IP address to a name...
IP address resolved to RPCServer.contoso.com
querying...
TCP port 135 (epmap service): LISTENING
Using ephemeral source port
Querying Endpoint Mapper Database...
Server's response:
UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d
ncacn_ip_tcp:169.254.0.2[49664]
Netsh
Puede usar la herramienta Netsh de Windows para recopilar datos de seguimiento
de red simultáneamente en el cliente y el servidor.
Para recopilar seguimientos de red simultáneos, abra una ventana del símbolo del
sistema con privilegios elevados tanto en el cliente como en el servidor.
En el cliente, ejecute el siguiente comando:
Netsh trace start scenario=netconnection capture=yes
tracefile=c:\client_nettrace.etl maxsize=512 overwrite=yes report=yes
En el servidor, ejecute el siguiente comando:
Netsh trace start scenario=netconnection capture=yes
tracefile=c:\server_nettrace.etl maxsize=512 overwrite=yes report=yes
Abra los archivos de seguimiento en Microsoft Network Monitor 3.4 o el Analizador
de mensajes y filtre los datos de seguimiento para la dirección IP del servidor o los
equipos cliente y el puerto TCP 135. Por ejemplo, use cadenas de filtro como las
siguientes:
• Ipv4.address==<client-ip> e ipv4.address==<server-ip> y tcp.port==135
En esta cadena de filtro, <client-ip> representa la dirección IP del cliente y
<server-ip> representa la dirección IP del servidor.
• tcp.port==135
En los datos filtrados, busque la entrada EPM en la columna Protocolo .
Busque una respuesta de EPM (en el servidor) que incluya un número de puerto
dinámico. Si el número de puerto dinámico está presente, fíjese en él para futuras
referencias.
Vuelva a filtrar los datos de seguimiento del número de puerto dinámico y la
dirección IP del servidor. Por ejemplo, use una cadena de filtro
como tcp.port==<dynamic-port-allocated> e ipv4.address==<server-ip>. En
esta cadena de filtro, <dynamic-port-allocated> representa el número de puerto
dinámico y <server-ip> representa la dirección IP del servidor.
En los datos filtrados, busque pruebas de que el cliente se conectó correctamente
al puerto dinámico o busque cualquier problema de red que se haya producido.
REFERENCIAS BIBLIOGRÁFICAS
• 3.19.3. Utilizando el comando net rpc share. (s/f). Red Hat Customer Portal.
Recuperado el 8 de mayo de 2024, de
https://access.redhat.com/documentation/es-
es/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/pr
oc_using-the-net-rpc-share-command_assembly_frequently-used-samba-
command-line-utilities
• AIX 7.3. (2023, noviembre 3). Ibm.com.
https://www.ibm.com/docs/es/aix/7.3?topic=concepts-remote-procedure-call
• (S/f-a). Medium.com. Recuperado el 8 de mayo de 2024, de
https://medium.com/@maniakhitoccori/qué-es-rpc-llamada-a-procedimiento-
remoto-7cbcbe45d8e
• (S/f-b). Microsoft.com. Recuperado el 8 de mayo de 2024, de
https://support.microsoft.com/es-es/topic/cómo-configurar-rpc-para-usar-
determinados-puertos-y-cómo-asegurar-esos-puertos-con-ipsec-2a94b798-
063a-479a-8452-9cf07ac613d9