Tengo un cuadro de Slackware Linux donde no puedo iniciar ningún servicio que escuche en un puerto en particular en localhost. Al usar strace descubrí que el error ocurre en la bind()
llamada y el error es EADDRINUSE (Address already in use)
:
bind(3, {sa_family=AF_INET, sin_port=htons(874), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EADDRINUSE (Address already in use)
Esto sucede con cualquier proceso que intento comenzar a escuchar en ese puerto, por lo que no está relacionado con el proceso en sí. La salida de strace anterior proviene del comando strace -ff nc -l -p 874 -s 127.0.0.1
.
Entonces, esto sugiere que hay un proceso que ya está escuchando en el puerto localhost 874. Sin embargo, parece que no puedo encontrarlo. Los siguientes comandos no devuelven nada:
netstat -aplunt | grep :874
netstat -na | grep :874
lsof -i :874
lsof -i tcp | grep 874
fuser 874/tcp
socklist | grep 874
iptables -t filter -S | grep 874
iptables -t nat -S | grep 874
iptables -t mangle -S | grep 874
conntrack -L | grep 874
Si trato de escucharlo 0.0.0.0:874
, falla con el mismo error. Escuchar en una de las direcciones IP configuradas en un nic funciona bien, y escuchar 127.0.0.2:874
también funciona bien. Escuchar en un puerto diferente funciona bien, también en 127.0.0.1
o 0.0.0.0
.
Entonces, ahora tengo curiosidad. ¿Cómo puedo averiguar por qué la pila de red devuelve EADDRINUSE aquí? ¿Qué otras cosas podría mirar o qué otros comandos puedo ejecutar para obtener más información?
Información adicional:
- Kernel 4.1.31.
- Selinux no se usa aquí.
- Intentar conectarse a 127.0.0.1 con telnet devuelve "Conexión rechazada"
- Estoy ejecutando los comandos como root
netstat -na | grep 874
en caso de que sus netstat
banderas actuales sean demasiado restrictivas.
iptables -S
salida?