Qué puertos utiliza una aplicación

Qué puertos utiliza una aplicación

Estoy probando una aplicación que abre sus propios puertos (actúa como servidor para estos puertos, por lo tanto escucha en esos puertos) y donde la misma aplicación se conecta a puertos vinculados por otras aplicaciones (actúa como cliente para estos puertos).

Me gustaría obtener una descripción general de qué puertos crea la aplicación y a qué aplicaciones y puertos se conecta.

¿Cómo puedo hacer esto?

Respuesta1

Puedes usar netstatpara esto. Vea el ejemplo (busqué ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

Explicación:

A menudo utilizo los parámetros -putan(porque son fáciles de recordar).

  • -p: muestra los PID de la aplicación/proceso
  • -u: muestra puertos/conexiones udp
  • -t: muestra puertos/conexiones tcp
  • -a: muestra tanto los enchufes de escucha como los de no escucha
  • -n: salida numérica (no realice búsquedas DNS para nombres de host, etc.)

En el resultado anterior, verá que hay un proceso de demonio ssh ( sshd) con PID 1725escuchando en el puerto 22en todas las interfaces de red ( 0.0.0.0). También hay un proceso de cliente ssh (PID 2491) conectado a la dirección IP 1.2.3.5en el número de puerto 22, mi dirección IP es 1.2.3.4y mi puerto externo es 45734. Verás que la conexión está establecida. Por lo tanto, inicié sesión a través de ssh.

Respuesta2

Otra herramienta que puede hacer esto eslsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

Las opciones utilizadas son las siguientes:

  • -iimprimir los puertos de Internet abiertos por un proceso
  • -apara hacer que todas las opciones sean AND-ed
  • -p 1981para mostrar el resultado del proceso 1981
  • -npara inhibir la búsqueda de nombres de host y mostrar IP en su lugar
  • -Ppara inhibir la búsqueda de servicios y mostrar el número de puerto en su lugar

lsoftiene la ventaja de que puede especificar el proceso a verificar en lugar de tener que extraerlo de una salida mayor. netstatestá disponible de manera más confiable en los sistemas, aunque lsofse está volviendo más estándar de lo que solía ser.

Respuesta3

Ya tenemos buenas respuestas, pero solo enumeran los puertos que están abiertos en el momento en que se ejecuta el comando.

stracees la herramienta adecuada para monitorear las conexiones abiertas durante la vida útil de la aplicación:

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

El resultado le mostrará información adicional como solicitudes UDP y conexiones abiertas pero cerradas.

Respuesta4

ss -a4 | less

Supongo que estás hablando de IPv4... Si no, puedes reemplazar el 4 en el comando anterior con 6. El parámetro -a es para mostrar todos los puertos (de escucha y no). Puede agregar -n a los parámetros si no desea resolver nombres en la pantalla.

información relacionada