![¿Cómo evitar que otro servicio utilice el puerto para abrir uno?](https://rvso.com/image/1598550/%C2%BFC%C3%B3mo%20evitar%20que%20otro%20servicio%20utilice%20el%20puerto%20para%20abrir%20uno%3F.png)
Tengo varios servicios ejecutándose en puertos consecutivos (escuchándolos) en un rango restringido (1024+). De vez en cuando necesito reiniciar esos servicios y sucede que uno de los servicios está utilizando el puerto de otro servicio como puerto local para conectarse a la base de datos. Como resultado, otro servicio se queja de no poder escuchar en el puerto ahora ocupado. Necesito determinar manualmente el servicio con netstat para forzar el cambio de puerto reiniciando este mismo servicio para que el puerto ahora pueda ser utilizado libremente por otro servicio legítimo.
¿Existe algún método para evitar que el puerto se utilice como apertura y permitir que se abra solo en modo de escucha?
Sistema: Linux
Actualmente utilizando el rango de puertos de 9000-9100
Respuesta1
Normalmente estos puertos ya deberían estar fuera del rango de puertos "efímeros" (que no es lo mismo que los puertos sin privilegios). El rango lo establece elnet.ipv4.ip_local_port_range
sistema, y en mi sistema muestra 32768–60999 de forma predeterminada.
Si local_port_range es lo suficientemente alto, significa que el puerto 9000 nunca debería elegirse automáticamente como puerto de origen (aunque eso no impide que los programasexplícitamentevinculante a este puerto).
También puede agregar sus puertos al net.ipv4.ip_local_reserved_ports
sysctl (a través de /etc/sysctl.d); esta opción toma una lista separada por espacios de números de puertos individuales.