it-swarm.com.de

Netzwerkverbindungen eines Prozesses anzeigen

Gibt es eine Möglichkeit, die Zusammenhänge eines Prozesses aufzuzeigen? So ähnlich:

show PID

dabei ist show ein Befehl, um dies zu tun, und PID ist die PID des Prozesses. Die Ausgabe, die ich möchte, setzt sich aus der gesamten Verbindung des Prozesses zusammen (in Echtzeit). Wenn der Prozess beispielsweise versucht, eine Verbindung zu 173.194.112.151 herzustellen, lautet die Ausgabe 173.194.112.151.

Ein genaueres Beispiel mit Firefox:

show `pidof firefox`

und mit Firefox gehe ich zuerst auf google.com, dann auf nix.stackexchange.com und schließlich auf 192.30.252.129. Die Ausgabe, wenn ich den Brower schließe, muss sein:

google.com
stackexchange.com
192.30.252.129

(Offensichtlich ist diese Ausgabe mit dem Browser nicht realistisch, da es viele andere verwandte Verbindungen gibt, aber dies ist nur ein Beispiel.)

29
ᴜsᴇʀ

Sie suchen strace! Ich habe diese Antwort auf askubuntu gefunden, aber sie gilt für Unix:

So starten und überwachen Sie einen neuen Prozess:

strace -f -e trace=network -s 10000 PROCESS ARGUMENTS

So überwachen Sie einen vorhandenen Prozess mit einer bekannten PID:

strace -p $PID -f -e trace=network -s 10000

Andernfalls, aber das ist spezifisch für Linux, können Sie den Prozess in einem isolierten Netzwerk-Namespace ausführen und den Datenverkehr mit wireshark überwachen . Dies ist wahrscheinlich bequemer als das Lesen des strace -Protokolls:

  • erstellen Sie einen Testnetzwerk-Namespace:

    ip netns add test
    
  • erstellen Sie ein Paar virtueller Netzwerkschnittstellen (veth-a und veth-b):

    ip link add veth-a type veth peer name veth-b
    
  • ändern Sie den aktiven Namespace der veth-a-Schnittstelle:

    ip link set veth-a netns test
    
  • konfigurieren Sie die IP-Adressen der virtuellen Schnittstellen:

    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
    
  • konfigurieren Sie das Routing im Test-Namespace:

    ip netns exec test route add default gw 192.168.163.254 dev veth-a
    
  • aktivieren Sie ip_forward und richten Sie eine NAT -Regel ein, um den von dem von Ihnen erstellten Namespace eingehenden Datenverkehr weiterzuleiten (Sie müssen die Netzwerkschnittstelle und die SNAT-IP-Adresse anpassen):

    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
    

    (Sie können auch die MASQUERADE-Regel verwenden, wenn Sie dies bevorzugen.)

  • schließlich können Sie den zu analysierenden Prozess im neuen Namespace und auch im Wireshark ausführen:

    ip netns exec test thebinarytotest
    ip netns exec test wireshark
    

    Sie müssen die veth-a-Schnittstelle überwachen.

31
Olivier

Versuchen

lsof -i -a -p `pidof firefox`
16
alxrem

Hier ist ein anderer Ansatz:

ss -nap | grep $(pidof firefox)

Beispielausgabe:

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))
9

Sie können es auch mit netstat -p Versuchen. Von der Manpage:

netstat - Drucken Sie Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken, Maskerade-Verbindungen und Multicast-Mitgliedschaften

Um nur Netzwerkverbindungen anzuzeigen, verwenden Sie netstat -tup. Beachten Sie, dass Sie möglicherweise root sein müssen, um die Prozess-PID anzuzeigen.

Wenn Sie nicht netstat auf Ihrem System haben, haben Sie möglicherweise ss, das fast die exakte Syntax hat. Sie können dann ss -tup (Als root) verwenden.

5
abel