Je teste une application qui ouvre ses propres ports (agit en tant que serveur pour ces ports, écoute par conséquent sur ces ports) et où la même application se connecte à des ports liés par d'autres applications (agit en tant que client pour ces ports).
J'aimerais avoir un aperçu des ports créés par l'application et des applications et des ports auxquels elle se connecte.
J'utilise souvent les paramètres -putan(car ils sont simples à retenir).
-p: affiche les PID de l'application / du processus
-u: affiche les ports / connexions udp
-t: affiche les ports / connexions tcp
-a: affiche les sockets à l'écoute et non à l'écoute
-n: sortie numérique (ne faites pas de recherches DNS pour les noms d'hôte, etc.)
Dans la sortie ci-dessus, vous voyez qu'il existe un processus ssh daemon ( sshd) avec PID en 1725écoute au port 22de toutes les interfaces réseau ( 0.0.0.0). Il existe également un processus client ssh (PID 2491) connecté à l'adresse IP 1.2.3.5au numéro de port 22. Mon adresse IP est 1.2.3.4et mon port externe 45734. Vous voyez que la connexion est établie. Par conséquent je suis connecté via ssh.
Une connexion TCP établie sur le port 22 n'indique pas une authentification réussie. Le protocole TCP doit être établi avant que l'authentification dans les deux sens puisse se produire.
Jamesbtate
@Puddingfox oui, nous pourrions mieux dire "je suis connecté à ce port", mais pour la compréhension, j'ai dit "je suis connecté", car c'est plus illustratif.
chaos
1
hehe ... `-putan ' Je suis tellement tenté de corriger cette faute d'orthographe mineure;)
James Mertz
Pourquoi utiliser des utilitaires obsolètes alors que des utilitaires modernes sont disponibles? ss -lntp est l'utilitaire fourni par la suite iproute2 .
# 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)
#
Les options utilisées sont les suivantes:
-i imprimer les ports Internet ouverts par un processus
-a pour que toutes les options soient ET-ed
-p 1981 pour afficher le résultat du processus 1981
-n pour empêcher la recherche de nom d'hôte et afficher l'adresse IP à la place
-P pour empêcher la recherche de service et afficher le numéro de port à la place
lsofL'avantage est que vous pouvez spécifier le processus à vérifier plutôt que de devoir le sortir d'une sortie plus importante. netstatest plus fiable sur les systèmes, bien qu’il lsofdevienne de plus en plus standard.
Je souhaite exécuter cette commande avant de lancer l'application que je souhaite surveiller, mais puis-je déterminer le pid qu'une application obtiendra avant de la lancer?
Baz
@Baz, si vous souhaitez surveiller une application au démarrage (par exemple, avant de savoir qu'il s'agit d'un PID), vous devez essayer la stracesolution proposée par @olivecoder.
Je suppose que vous parlez d'IPv4 ... Sinon, vous pouvez remplacer le 4 dans la commande précédente par 6. Le paramètre -a permet d'afficher tous les ports (en écoute et non). Vous pouvez ajouter -n aux paramètres si vous ne voulez pas résoudre les noms à l'écran.
Un autre outil qui peut faire cela est
lsof
:Les options utilisées sont les suivantes:
-i
imprimer les ports Internet ouverts par un processus-a
pour que toutes les options soient ET-ed-p 1981
pour afficher le résultat du processus 1981-n
pour empêcher la recherche de nom d'hôte et afficher l'adresse IP à la place-P
pour empêcher la recherche de service et afficher le numéro de port à la placelsof
L'avantage est que vous pouvez spécifier le processus à vérifier plutôt que de devoir le sortir d'une sortie plus importante.netstat
est plus fiable sur les systèmes, bien qu’illsof
devienne de plus en plus standard.la source
strace
solution proposée par @olivecoder.ss
Utilitaire du paquet iproute pour Linuxla source
Nous avons déjà de bonnes réponses, mais ils ne répertorient que les ports ouverts au moment de l'exécution de la commande.
strace
est le bon outil pour surveiller les connexions ouvertes pendant la durée de vie de l'application:La sortie afficherait des informations supplémentaires telles que les demandes UDP et les connexions ouvertes mais fermées.
la source
ss -a4 | less
Je suppose que vous parlez d'IPv4 ... Sinon, vous pouvez remplacer le 4 dans la commande précédente par 6. Le paramètre -a permet d'afficher tous les ports (en écoute et non). Vous pouvez ajouter -n aux paramètres si vous ne voulez pas résoudre les noms à l'écran.
la source