Tenho vários serviços em execução em portas consecutivas (escutando-as) em um intervalo restrito (1024+). De vez em quando preciso reiniciar esses serviços e acontece que um dos serviços está usando a porta de outro serviço como porta local para conectar-se ao banco de dados. Como resultado, outro serviço reclama por não conseguir escutar na porta agora ocupada. Preciso determinar manualmente o serviço com netstat para forçar a mudança de porta reiniciando esse mesmo serviço para que a porta agora esteja livre para ser usada por outro serviço legítimo.
Existe algum método para impedir que a porta seja usada como abertura e permitir que ela seja aberta apenas no modo de escuta?
Sistema: Linux
Atualmente usando o intervalo de portas de 9000 a 9100
Responder1
Normalmente essas portas já devem estar fora do intervalo de portas "efêmeras" (que não é o mesmo que portas sem privilégios). O intervalo é definido pelonet.ipv4.ip_local_port_range
sysctl, e no meu sistema mostra 32768–60999 por padrão.
Se local_port_range for alto o suficiente, significa que a porta 9000 nunca deve ser escolhida automaticamente como porta de origem (embora isso não impeça a execução de programasexplicitamentevinculação a esta porta).
Você também pode adicionar suas portas ao net.ipv4.ip_local_reserved_ports
sysctl (via /etc/sysctl.d); esta opção usa uma lista separada por espaços de números de porta individuais.