¿Cómo encontrar el número de puertos abiertos en Linux?

17

¿Cómo encontrar el número de puertos abiertos en Linux? Quiero ver si me estoy quedando sin puertos. Además, ¿cómo veo el límite de mi sistema operativo?

erotsppa
fuente
2
¿Qué haces que temes quedarte sin puertos?
MDMarra

Respuestas:

27

En Linux moderno, use la utilidad ss (estadísticas de socket).

$ ss -s
Total: 10160 (kernel 10262)
TCP:   10349 (estab 8886, closed 408, orphaned 0, synrecv 0, timewait 393/0), ports 3147

Transport Total     IP        IPv6
*         10262     -         -        
RAW       0         0         0        
UDP       5         5         0        
TCP       9941      9941      0        
INET      9946      9946      0        
FRAG      0         0         0        
Curtis Doty
fuente
9
netstat -an | grep ESTABLISHED | wc -l

te dará el número de puertos abiertos, 32 en mi caso.

cat /proc/sys/net/ipv4/ip_local_port_range

Devolverá algo como:

32768 61000

lo que significa, 61000 - 32768 - $ OPENPORTS = Puertos disponibles

En mi caja, eso es:

61000-32768-32 = 28200 números de puerto disponibles.

Grizly
fuente
el -a46 no funcionó. ¿Alguna ayuda?
erotsppa
¿Qué distribución estás corriendo? (que funciona en el servidor ubuntu 10.04 LTS). Por supuesto, si no tiene instalado ipv6, simplemente use netstat -a.
Grizly
Probado en mi caja CentOS, parece que se cuelga si no usa "-n" para detener la resolución de nombres. (netstat -an | grep ESTABLECIDO | wc -l)
Grizly
Acabo de ver "ss" a continuación, eso es increíble, no lo sabía ... ¡mucho mejor! Use ip_local_port_range para determinar qué está configurado su Linux para permitir, ¡pero eso le muestra lo que está utilizando actualmente en un formato mucho más accesible!
Grizly
8

Como otros han mencionado, netstat es la herramienta que se usa para determinar qué puertos están actualmente en uso. En cuanto a los límites, el número de puertos disponibles es un entero sin signo de 16 bits que le da el rango 0-65535. Los puertos disponibles para que las aplicaciones se unan son los puertos privilegiados / raíz reservados (0-1024) más lo que no esté cubierto por su rango de puertos efímeros.

Puede ver sus puertos efímeros ejecutando cat /proc/sys/net/ipv4/ip_local_port_range.

Para modificar eso de forma persistente, deberá agregar / modificar "net.ipv4.ip_local_port_range" en el archivo /etc/sysctl.conf, o interactivamente con sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"

Alex
fuente
1
selección de liendres, pero no es exactamente un límite de ipv4. Es un límite tcp / udp. y aquellos que se ejecutan independientemente de ipv4. (ej. ipv6 no hace nada para la capa de transporte)
Joel K
Aaah, tienes razón. He eliminado la referencia IPV4 en mi respuesta.
Alex
1

Personalmente prefiero nmap. Puede encontrar el estado de todos los puertos emitiendo nmap -P 1-65535 target. La mayoría de las distribuciones deben tener este paquete disponible a través de su administrador de paquetes.

ThaKidd KG5ORD
fuente
1

Tratar

# lsof -n -i -P 

Por completo :)

Yuri
fuente
0

netstat le permitirá ver qué puertos están abiertos, haga "netstat -" para ver qué se adapta mejor a sus necesidades.

jer.salamon
fuente
1
netstat --inetayudará más.
Paul Tomblin
Me refería -? personaje perdido
jer.salamon
o lea la página de
manual
También incluya --inet6 (abreviatura para ambos: -4 -6), para obtener sockets IPv6 y sockets ip-agnósticos (este último es el predeterminado en los hosts de doble pila, consulte rfc 3493 sección 3.7).
Tobu
0

'nmap localhost' le dará todos los puertos y servicios abiertos que se ejecutan en ellos.

Vivek Varghese Cherian
fuente
1
en realidad no, solo escaneará puertos para 127.0.0.1, no para cualquier IP débil
Lucas Kauffman
0

netstat -tulnp

Los argumentos para el programa netstat se enumeran a continuación:

*

  t - Show TCP
*

  u - Show UDP
*

  l - Show only listening processes (netstat can show both listening and all established connections, i.e. as a client too)
*

  n - Do not resolve network IP address names or port numbers
*

  p - Show the process name that is listening on the port
Rajat
fuente
0

use el siguiente comando en la terminal para verificar todos los puertos

netstat -lntu

Para ver el estado de un puerto específico, use el siguiente comando

netstat -an | grep ':6060'

reemplace 6060 con su número de puerto específico.

Samuel
fuente