Η εντολή ss είναι μια σύγχρονη αντικατάσταση του κλασικού netstat. Μπορείτε να το χρησιμοποιήσετε στο Linux για να λάβετε στατιστικά στοιχεία σχετικά με τις συνδέσεις δικτύου σας. Δείτε πώς να εργαστείτε με αυτό το εύχρηστο εργαλείο.
Πίνακας περιεχομένων
Το ss Command έναντι του netstat
Αντικατάσταση του καταργημένου εντολή netstat, σσ σας δίνει αναλυτικές πληροφορίες σχετικά με τον τρόπο επικοινωνίας του υπολογιστή σας με άλλους υπολογιστές, δίκτυα και υπηρεσίες.
ss εμφανίζει στατιστικά στοιχεία για Πρωτόκολλο Ελέγχου Μετάδοσης (TCP), Πρωτόκολλο User Datagram (UDP), Unix (διαδικασία), και ακατέργαστες πρίζες. Ακατέργαστες πρίζες λειτουργούν στο επίπεδο OSI δικτύου, που σημαίνει ότι οι κεφαλίδες TCP και UDP πρέπει να αντιμετωπίζονται από το λογισμικό εφαρμογής και όχι από το επίπεδο μεταφοράς. Πρωτόκολλο μηνυμάτων ελέγχου Διαδικτύου (ICMP) μηνύματα και το ping utility και οι δύο χρησιμοποιούν ακατέργαστες πρίζες.
Χρησιμοποιώντας ss
Δεν χρειάζεται να εγκαταστήσετε το ss, καθώς αποτελεί ήδη μέρος μιας ενημερωμένης διανομής Linux. Η παραγωγή του, ωστόσο, μπορεί να είναι πολύ μεγάλη—είχαμε αποτελέσματα που περιέχουν περισσότερες από 630 γραμμές. Τα αποτελέσματα είναι επίσης πολύ μεγάλα.
Εξαιτίας αυτού, συμπεριλάβαμε αναπαραστάσεις κειμένου των αποτελεσμάτων που λάβαμε, καθώς δεν χωρούσαν σε ένα στιγμιότυπο οθόνης. Τα περικόψαμε για να τα κάνουμε πιο διαχειρίσιμα.
Καταχώριση συνδέσεων δικτύου
Η χρήση ss χωρίς επιλογές γραμμής εντολών εμφανίζει υποδοχές που δεν ακούνε. Δηλαδή, παραθέτει τις υποδοχές που δεν βρίσκονται σε κατάσταση ακρόασης.
Για να το δείτε, πληκτρολογήστε τα εξής:
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
Οι στήλες είναι οι εξής:
Netid: Ο τύπος πρίζας. Στο παράδειγμά μας, έχουμε “u_str”, μια ροή Unix, μια “udp” και “icmp6”, μια υποδοχή ICMP έκδοσης IP 6. Μπορείτε να βρείτε περισσότερες περιγραφές για Τύποι υποδοχών Linux στις σελίδες man Linux.
Κατάσταση: Η κατάσταση στην οποία βρίσκεται η πρίζα.
Recv-Q: Ο αριθμός των ληφθέντων πακέτων.
Send-Q: Ο αριθμός των σταλθέντων πακέτων.
Local Address:Port: Η τοπική διεύθυνση και θύρα (ή ισοδύναμες τιμές για υποδοχές Unix).
Peer Address:Port: Η απομακρυσμένη διεύθυνση και η θύρα (ή ισοδύναμες τιμές για υποδοχές Unix).
Για υποδοχές UDP, η στήλη “Κατάσταση” είναι συνήθως κενή. Για υποδοχές TCP μπορεί να είναι ένα από τα ακόλουθα:
ΑΚΡΟΑΣΗ: Μόνο από την πλευρά του διακομιστή. Η πρίζα περιμένει αίτημα σύνδεσης.
SYN-SENT: Μόνο από την πλευρά του πελάτη. Αυτή η υποδοχή έχει υποβάλει αίτημα σύνδεσης και περιμένει να δει αν έχει γίνει αποδεκτό.
SYN-RECEIVED: Μόνο από την πλευρά του διακομιστή. Αυτή η πρίζα περιμένει για επιβεβαίωση σύνδεσης μετά την αποδοχή ενός αιτήματος σύνδεσης.
ΙΔΡΥΘΗΚΕ: Διακομιστής και πελάτες. Έχει δημιουργηθεί μια λειτουργική σύνδεση μεταξύ του διακομιστή και του πελάτη, επιτρέποντας τη μεταφορά δεδομένων μεταξύ των δύο.
FIN-WAIT-1: Διακομιστής και πελάτες. Αυτή η πρίζα αναμένει ένα αίτημα τερματισμού σύνδεσης από την απομακρυσμένη πρίζα ή μια επιβεβαίωση ενός αιτήματος τερματισμού σύνδεσης που είχε σταλεί προηγουμένως από αυτήν την υποδοχή.
FIN-WAIT-2: Διακομιστής και πελάτες. Αυτή η πρίζα αναμένει αίτημα τερματισμού σύνδεσης από την απομακρυσμένη πρίζα.
ΚΛΕΙΣΙΜΟ ΑΝΑΜΟΝΗ: Διακομιστής και πελάτης. Αυτή η υποδοχή αναμένει αίτημα τερματισμού σύνδεσης από τον τοπικό χρήστη.
ΚΛΕΙΣΙΜΟ: Διακομιστής και πελάτες. Αυτή η πρίζα αναμένει επιβεβαίωση αιτήματος τερματισμού σύνδεσης από την απομακρυσμένη πρίζα.
ΤΕΛΕΥΤΑΙΑ ΕΠΙΔΕΙΞΗ: Διακομιστής και πελάτης. Αυτή η πρίζα περιμένει μια επιβεβαίωση του αιτήματος τερματισμού σύνδεσης που έστειλε στην απομακρυσμένη πρίζα.
ΧΡΟΝΟΣ ΑΝΑΜΟΝΗΣ: Διακομιστής και πελάτες. Αυτή η υποδοχή έστειλε μια επιβεβαίωση στην απομακρυσμένη υποδοχή για να την ενημερώσει ότι έλαβε το αίτημα τερματισμού της απομακρυσμένης πρίζας. Τώρα περιμένει να βεβαιωθεί ότι ελήφθη η επιβεβαίωση.
ΚΛΕΙΣΤΟ: Δεν υπάρχει σύνδεση, επομένως η πρίζα έχει τερματιστεί.
Εισαγωγή Υποδοχές Ακρόασης
Για να δούμε τις υποδοχές ακρόασης, θα προσθέσουμε την επιλογή -l (ακρόαση), όπως:
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Όλες αυτές οι πρίζες δεν είναι συνδεδεμένες και ακούνε. Το “rtnl” σημαίνει σύνδεση δικτύου δρομολόγησης, η οποία χρησιμοποιείται για τη μεταφορά πληροφοριών μεταξύ των διεργασιών του πυρήνα και του χώρου χρήστη.
Καταχώριση όλων των πριζών
Για να απαριθμήσετε όλες τις υποδοχές, μπορείτε να χρησιμοποιήσετε την επιλογή -a (όλα):
ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:*
Η έξοδος περιέχει όλες τις υποδοχές, ανεξαρτήτως κατάστασης.
Καταχώρηση υποδοχών TCP
Μπορείτε επίσης να εφαρμόσετε ένα φίλτρο, ώστε να εμφανίζονται μόνο οι αντίστοιχες υποδοχές. Θα χρησιμοποιήσουμε την επιλογή -t (TCP), επομένως θα εμφανίζονται μόνο οι υποδοχές TCP:
σσ -α -τ
Καταχώριση υποδοχών UDP
Η επιλογή -u (UDP) εκτελεί τον ίδιο τύπο δράσης φιλτραρίσματος. Αυτή τη φορά, θα δούμε μόνο υποδοχές UDP:
ss -a -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Καταχώρηση υποδοχών Unix
Για να δείτε μόνο υποδοχές Unix, μπορείτε να συμπεριλάβετε την επιλογή -x (Unix), όπως φαίνεται παρακάτω:
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
Καταχώριση Raw Sockets
Το φίλτρο για ακατέργαστες πρίζες είναι η επιλογή -w (raw):
ss -a -w
Καταχώρηση Υποδοχές IP Έκδοσης 4
Οι υποδοχές που χρησιμοποιούν το πρωτόκολλο έκδοσης 4 TCP/IP μπορούν να παρατίθενται χρησιμοποιώντας την επιλογή -4 (IPV4):
ss -a -4
Καταχώριση IP Έκδοσης 6 Υποδοχές
Μπορείτε να ενεργοποιήσετε το αντίστοιχο φίλτρο IP έκδοσης 6 με την επιλογή -6 (IPV6), όπως:
ss -a -6
Καταχώρηση Sockets κατά κράτος
Μπορείτε να παραθέσετε τις υποδοχές ανά κατάσταση στην οποία βρίσκονται με την επιλογή κατάστασης. Αυτό λειτουργεί με καθιερωμένες καταστάσεις, ακρόαση ή κλειστές καταστάσεις. Θα χρησιμοποιήσουμε επίσης την επιλογή επίλυσης (-r), η οποία προσπαθεί να επιλύσει διευθύνσεις δικτύου σε ονόματα και θύρες σε πρωτόκολλα.
Η ακόλουθη εντολή θα αναζητήσει εγκατεστημένες συνδέσεις TCP και το ss θα προσπαθήσει να επιλύσει τα ονόματα:
ss -t -r state established
Παρατίθενται τέσσερις συνδέσεις που βρίσκονται στην κανονική κατάσταση. Το όνομα κεντρικού υπολογιστή, ubuntu20-04, έχει επιλυθεί και εμφανίζεται το “ssh” αντί για το 22 για τη σύνδεση SSH στη δεύτερη γραμμή.
Μπορούμε να το επαναλάβουμε για να αναζητήσουμε υποδοχές σε κατάσταση ακρόασης:
ss -t -r state listening
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:smtp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:smtp [::]:*
Καταχώρηση Υποδοχών κατά Πρωτόκολλο
Μπορείτε να καταχωρήσετε τις υποδοχές χρησιμοποιώντας ένα συγκεκριμένο πρωτόκολλο με τις επιλογές dport και sport, οι οποίες αντιπροσωπεύουν τις θύρες προορισμού και πηγής, αντίστοιχα.
Πληκτρολογούμε τα ακόλουθα για να παραθέσουμε τις υποδοχές χρησιμοποιώντας το πρωτόκολλο HTTPS σε μια εγκατεστημένη σύνδεση (σημειώστε το διάστημα μετά την αρχική παρένθεση και πριν από το κλείσιμο):
ss -a state established ‘( dport = :https or sport = :https )’
Μπορούμε να χρησιμοποιήσουμε το όνομα του πρωτοκόλλου ή τη θύρα που συνήθως σχετίζεται με αυτό το πρωτόκολλο. Η προεπιλεγμένη θύρα για Ασφαλές κέλυφος (SSH) είναι η θύρα 22.
Θα χρησιμοποιήσουμε το όνομα του πρωτοκόλλου σε μία εντολή και, στη συνέχεια, θα το επαναλάβουμε χρησιμοποιώντας τον αριθμό θύρας:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Όπως ήταν αναμενόμενο, έχουμε τα ίδια αποτελέσματα.
Καταχώριση συνδέσεων σε μια συγκεκριμένη διεύθυνση IP
Με την επιλογή dst (προορισμός), μπορούμε να παραθέσουμε συνδέσεις σε μια συγκεκριμένη διεύθυνση IP προορισμού.
Πληκτρολογούμε τα εξής:
ss -a dst 192.168.4.25
Προσδιορισμός Διαδικασιών
Για να δείτε ποιες διεργασίες χρησιμοποιούν τις υποδοχές, μπορείτε να χρησιμοποιήσετε την επιλογή διεργασιών (-p), όπως φαίνεται παρακάτω (σημειώστε ότι πρέπει να χρησιμοποιήσετε sudo):
sudo ss -t -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Αυτό μας δείχνει ότι οι δύο εγκατεστημένες συνδέσεις σε υποδοχές TCP χρησιμοποιούνται από τον δαίμονα SSH και τον Firefox.
Ένας Άξιος Διάδοχος
Η εντολή ss παρέχει τις ίδιες πληροφορίες που παρείχε προηγουμένως η netstat, αλλά με έναν απλούστερο και πιο προσιτό τρόπο. Μπορείτε να ελέγξετε το σελίδα ανθρώπου για περισσότερες επιλογές και συμβουλές.