Il existe un moyen de montrer les connexions d'un processus? Quelque chose comme ca:
show PID
dans lequel show
est une commande pour ce faire et PID
est le pid du processus. La sortie que je veux est composée de toute la connexion du processus (en temps réel). Par exemple, si le processus tente de se connecter à 173.194.112.151 la sortie est 173.194.112.151
.
Un exemple plus spécifique avec Firefox:
show `pidof firefox`
et avec firefox je vais d'abord sur google.com, puis sur nix.stackexchange.com et enfin 192.30.252.129. La sortie, quand je ferme le brower, doit être:
google.com
stackexchange.com
192.30.252.129
(Évidemment, avec le navigateur, cette sortie n'est pas réaliste, car il existe de nombreuses autres connexions associées, mais ce n'est qu'un exemple.)
Vous recherchez strace
! J'ai trouvé cette réponse sur askubunt , mais elle est valable pour Unix:
Pour démarrer et surveiller un nouveau processus:
strace -f -e trace=network -s 10000 PROCESS ARGUMENTS
Pour surveiller un processus existant avec un PID connu:
strace -p $PID -f -e trace=network -s 10000
Sinon, mais c'est spécifique à Linux, vous pouvez exécuter le processus dans un espace de noms de réseau isolé et utiliser wirehark pour surveiller le trafic . Ce sera probablement plus pratique que de lire le journal strace
:
créer un espace de noms de réseau de test:
ip netns add test
créer une paire d'interfaces réseau virtuelles (veth-a et veth-b):
ip link add veth-a type veth peer name veth-b
changer l'espace de noms actif de l'interface veth-a:
ip link set veth-a netns test
configurer les adresses IP des interfaces virtuelles:
ip netns exec test ifconfig veth-a up 192.168.163.1 netmask 255.255.255.0 ifconfig veth-b up 192.168.163.254 netmask 255.255.255.0
configurer le routage dans l'espace de noms de test:
ip netns exec test route add default gw 192.168.163.254 dev veth-a
activez ip_forward et établissez une règle NAT pour transférer le trafic provenant de l'espace de noms que vous avez créé (vous devez ajuster l'interface réseau et l'adresse IP SNAT):
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.163.0/24 -o YOURNETWORKINTERFACE -j SNAT --to-source YOURIPADDRESS
(Vous pouvez également utiliser la règle MASQUERADE si vous préférez)
enfin, vous pouvez exécuter le processus que vous souhaitez analyser dans le nouvel espace de noms, et wirehark aussi:
ip netns exec test thebinarytotest ip netns exec test wireshark
Vous devrez surveiller l'interface veth-a.
Essayer
lsof -i -a -p `pidof firefox`
Voici une autre approche:
ss -nap | grep $(pidof firefox)
Exemple de sortie:
tcp ESTAB 0 0 192.168.0.222:49050 216.58.218.164:443 users:(("firefox",3280,69))
tcp ESTAB 0 0 192.168.0.222:48630 198.252.206.25:443 users:(("firefox",3280,106))
tcp ESTAB 0 0 192.168.0.222:44220 216.58.217.38:443 users:(("firefox",3280,140))
tcp ESTAB 0 0 192.168.0.222:52690 54.240.170.181:80 users:(("firefox",3280,107))
tcp ESTAB 0 0 192.168.0.222:48744 198.252.206.25:443 users:(("firefox",3280,87))
tcp ESTAB 0 0 192.168.0.222:48811 198.252.206.25:443 users:(("firefox",3280,73))
Vous pouvez également essayer avec netstat -p
. Depuis la page de manuel:
netstat - Imprimer les connexions réseau, les tables de routage, les statistiques d'interface, les connexions de mascarade et les appartenances multicast
Pour afficher uniquement les connexions réseau, utilisez netstat -tup
. Notez que pour voir le processus PID, vous devrez peut-être être root.
Si vous n'avez pas netstat
sur votre système, vous pouvez avoir ss
, qui a presque la syntaxe exacte. Vous pouvez alors utiliser ss -tup
(en tant que root).