GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo verificar qué puertos están ocupados y qué puertos están libres en mi máquina Linux?

El comando

netstat -antu

mostrará todos los puertos tcp y udp en uso. La salida se verá así:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

El número después de los dos puntos en el campo Dirección local muestra el puerto en uso. Si el estado es "ESCUCHAR", significa un puerto que se está utilizando para las conexiones entrantes. Si la dirección IP en el Local Address el campo es 0.0.0.0 significa que las conexiones entrantes se aceptarán en cualquier dirección IP asignada a una interfaz, lo que significa conexiones que se originan fuera de su máquina.

Si dijera localhost o 127.0.0.1 solo aceptaría conexiones desde su máquina.

Además, si agrega el -p y ejecútelo como root, mostrará el proceso que abrió el puerto:

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN      860/rpc.statd

Cualquier cosa que no se muestre como en uso es gratis, sin embargo, los usuarios (cuentas sin privilegios) solo pueden abrir puertos por encima de 1023.


Compilé una pequeña lista yo mismo.

Algunos de mis favoritos son:

netstat -tulpn
lsof -i -n -P

Una forma buena y confiable de verificar los puertos abiertos es usar ss (reemplazo del obsoleto netstat ), se puede usar en un script sin requerir privilegios elevados (es decir, sudo ).

Uso:opción -l para puertos de escucha, opción -n para omitir la resolución de DNS y el filtro en el puerto de origen NN :src :NN (reemplace NN por el puerto que desea monitorear). Para obtener más opciones, consulte man ss

ss -ln src :NN

Ejemplos:

[[email protected] ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[[email protected] ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

Y en un script, usando grep, podemos probar si la salida contiene el puerto que solicitamos. Ejemplo con el puerto 80 en uso (ver arriba):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

Ejemplo con el puerto 81 no en uso (ver arriba)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

Linux
  1. Cómo verificar qué módulos de Apache están habilitados/cargados en Linux

  2. Cómo buscar puertos abiertos en Linux con netstat, lsof y nmap

  3. ¿Cómo verificar los módulos PHP y Apache que están instalados en Linux?

  4. ¿Cómo verificar qué zona horaria en Linux?

  5. ¿Cómo puedo verificar qué definiciones de terminal están disponibles?

Cómo verificar el uso de memoria en Linux

Cómo hacer un escaneo de puertos en Linux

Cómo encontrar y cerrar puertos abiertos en Linux

Cómo verificar el espacio libre en disco en Linux [Terminal y métodos GUI]

Cómo verificar el espacio libre en disco en Linux

¿Cómo comprobar los puertos abiertos en Linux?