¿Cuál es el número máximo de puerto en Linux?

¿Cuál es el número máximo de puerto en Linux?

Me gustaría configurar algunos servicios de Linux en puertos no estándar. ¿Cuál es el número de puerto válido más alto?

Respuesta1

(2^16)-1, o 0-65,535 (el -1 se debe a que el puerto 0 está reservado y no está disponible). (editado porque o_O Tync me recordó que no podemos usar el puerto 0, y Steve Folly me recordó que usted solicitó el puerto más alto, no la cantidad de puertos)

Pero probablemente estés haciendo esto de manera incorrecta. Hay quienes argumentan a favor y en contra de los puertos no estándar. Yo digo que son irrelevantes excepto para el escáner más informal, y el escáner más informal puede mantenerse a raya mediante el uso de software actualizado y técnicas de firewall adecuadas, junto con contraseñas seguras. En otras palabras, mejores prácticas de seguridad.

Respuesta2

1-65535 están disponibles y los puertos en el rango 1-1023 son losprivilegiadounos: una aplicación debe ejecutarse como root para poder escuchar estos puertos.

Respuesta3

Aunque 1-65535 son puertos TCP legítimos y es cierto que 1-1023 son para servicios portuarios bien conocidos. Es posible que se encuentre con problemas aleatorios con sus propios servicios si se inician después de que se haya establecido un puerto efímero. Para aquellos que no lo sepan, los puertos efímeros son aquellos que están conectados localmente para puntos finales remotos (o algo por el estilo). Entonces, si escribe un servicio TCP que escuche en el puerto 20001, podría estar bien hoy... y mañana. Pero un día su servicio puede iniciarse e intentar vincularse a 20001 y fallará porque se tomó como un puerto efímero. Hay una solucion. Debe pedirle a su administrador, o a usted mismo, que cambie la política de rango de puertos efímeros del sistema en su servidor. En sistemas Linux se realiza en dos pasos:

  • Dinamicamente
  • Permanentemente

Se deben seguir ambos pasos, a menos que planee reiniciar (en cuyo caso el paso Dinámico no es necesario). Para configurar su rango de hasta 40000 a 65535, haga lo siguiente:

Dinámica

echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range

o

sysctl -w net.ipv4.ip_local_port_range="40000 65535"

Permanente

Agregue lo siguiente a /etc/sysctl.conf:

net.ipv4.ip_local_port_range = 40000 65535

Para leer la configuración actual o confirmar el cambio:

/sbin/sysctl net.ipv4.ip_local_port_range

La salida será algo como esto:

net.ipv4.ip_local_port_range = 9000 65500

Asegúrese de comprender el propósito de su servidor. Reducir demasiado el alcance puede provocar otros problemas.

¡Feliz codificación! (o lo que sea que hagas)

Respuesta4

toda la gente que dice 65.535 tiene razón.

¡¡¡SIN EMBARGO!!! con una manipulación cuidadosa de los parámetros ajustables del kernel, puede decirle a Linux que use más. Algunos sistemas UNIX comerciales ejecutarían servicios en puertos técnicamente fuera de los límites sin problemas. ¡También es una forma súper sencilla de sortear algunas de las redes protegidas por firewall/ACL! :PAG

Solía ​​​​ejecutar un segundo servidor telnet en tcp/99999 y siempre funcionó para mí. Incluso en los casos en los que los puertos privilegiados típicos (1-1024) están bloqueados por ACL o firewall de red.

Casi nadie busca puertos que escuchen por encima de 65.535. La mayoría de los equipos de red no pueden inspeccionar nada fuera del rango definido (0-65535) y reenviar el tráfico ciegamente a menos que una regla indique lo contrario. Ahora que tenemos sistemas de 64 bits, el rango superior son técnicamente los límites de 64 bits. No significa que las redes pasarán el tráfico, pero normalmente pasan cualquier cosa que no exista una regla para descartar o negar.

información relacionada