Cuidado con los puertos dinámicos
Aunque el soporte de Windows Server 2003 ya acabó hace tiempo (el principal, el extendido todavía está vigente), al igual que pasa con el puesto cliente y Windows XP, seguimos encontrándolos en la mayoría de proyectos.
Es por eso que me gustaría recuperar un post de mi blog personal que escribí hace tiempo y que fue un caso recurrente en mis días de soporte en Microsoft.
Nos podemos encontrar con problemas de comunicación en un entorno donde tenemos servidores con Windows Server 2003 mezclados con Windows Server 2008 o superior. Esto viene por un cambio importante relativo al rango de los puertos dinámicos o efímeros que se produjo entre ambas versiones.
En la documentación oficial de Microsoft, esta es la razón que se dio para este cambio:
A fin de cumplir las recomendaciones de la Agencia de asignación de números Internet (IANA), Microsoft ha aumentado el intervalo de puertos de cliente dinámicos para las conexiones de salida en Windows Vista y en Windows Server 2008. El nuevo puerto de inicio predeterminado es el 49152 y el puerto de fin predeterminado es 65535. Se trata de un cambio con respecto a la configuración de versiones anteriores de Microsoft Windows, que utilizaban un intervalo de puertos predeterminado comprendido entre el 1025 y el 5000.
Este es el artículo de KB donde viene toda la información: http://support.microsoft.com/kb/929851
Debemos tener esto en cuenta a la hora de configurar nuestros Firewall si estos son restrictivos con los puertos utilizados internamente para conectar nuestras máquinas.
Si tenemos un entorno con Windows Server 2003 con el rango de puertos dinámicos que va del puerto 1025 al 5000, los firewalls pueden estar configurados para aceptar únicamente conexiones dirigidas a estos puertos.
Si añadimos equipos con Windows Server 2008 o superior, debido a este nuevo rango de puertos, podemos experimentar problemas con la comunicación RPC entre los servidores.
- Una opción en estos casos sería añadir las reglas del firewall que permitan el tráfico en el intervalo de puertos dinámicos comprendido entre el 49152 y el 65535.
- Otra opción es modificar en cada servidor Windows Server 2008 el intervalo de puertos dinámicos utilizado para que se ajuste a los de 2003 (con la pérdida en cantidad de ellos que supone).
Este intervalo se ajusta mediante el comando netsh:
1 |
netsh int <ipv4|ipv6> set dynamicportrange <tcp|udp> start=número num=intervalo |
El puerto de inicio es número y el número total de puertos es intervalo.
A continuación se muestran algunos ejemplos de comandos:
1 2 3 |
netsh int ipv4 set dynamicportrange tcp start=1025 num=3975 netsh int ipv4 set dynamicportrange udp start=1025 num=3975 |
El puerto de inicio mínimo que puede establecer es el 1025. El puerto de fin máximo, según el intervalo establecido, no puede superar el 65535.
Para duplicar el rango al comportamiento predeterminado de Windows Server 2003 (1025 – 5000) podemos utilizar en los servidores con 2008 o superior el ejemplo expuesto, en el que 1025 es el puerto de inicio y 3975 es el intervalo para TCP y UDP.
Esperamos que esta información os sirva, sobre todo en entornos donde empezáis a actualizar la infraestructura de servidores a versiones más modernas y tenéis un Firewall restrictivo por ahí.
Happy networking!