Η εντολή netstat είναι ένα βασικό εργαλείο για τη διαχείριση του δικτύου. Εμφανίζει πληροφορίες σχετικά με το υποσύστημα δικτύωσης Linux, συμπεριλαμβανομένων των δεδομένων για συνδέσεις ανοικτού δικτύου, πίνακες δρομολόγησης και στατιστικά στοιχεία για τις εγκατεστημένες διεπαφές δικτύου.

Η απλούστερη εντολή netstat είναι απλώς η εκτέλεση του εργαλείου χωρίς καμία παράμετρο:

 netstat 

Αυτό θα εμφανίσει μια λίστα με τις τρέχουσες ανοικτές συνδέσεις στο μηχάνημά σας. Ωστόσο, τα αποτελέσματα μπορεί να είναι λίγο δύσκολες. Είναι επομένως καλύτερο να καταργήσετε τις συνδέσεις ανά τύπο. Για να ορίσετε όλες τις ανοιχτές συνδέσεις TCP, χρησιμοποιήστε:

 netstat-t 

Το αποτέλεσμα είναι μια λίστα με τις τρέχουσες συνδέσεις που γίνονται στον υπολογιστή σας. Στο παραπάνω παράδειγμα, μπορείτε να δείτε ότι η δοκιμαστική μηχανή τρέχει διακομιστή SSH και ότι υπάρχουν εγκατεστημένες συνδέσεις SSH.

Παρατηρήστε τη γραμμή με την ένδειξη " Ενεργή σύνδεση στο Internet (χωρίς διακομιστές) ". Το τελευταίο μέρος σημαίνει ότι το netstat δεν περιλαμβάνει λίστα με τους διακομιστές που εκτελούνται στο μηχάνημά σας. με άλλα λόγια, δεν περιέγραψε τα προγράμματα εκείνα που περιμένουν τις συνδέσεις TCP αλλά επί του παρόντος δεν έχουν καθιερωθεί.

Για να λάβετε μια λίστα με τις ενεργές συνδέσεις TCP και μια λίστα με τις θύρες που ακούν για συνδέσεις TCP, προσθέστε τη σημαία -a :

 netstat -at 

Το -a σημαίνει ALL και προσθέτει το σύνολο των θυρών ακρόασης. Κοιτάζοντας προς τα κάτω τη λίστα, μπορείτε να δείτε ότι ο υπολογιστής μου Linux περιμένει επίσης συνδέσεις SSH μέσω IPv6.

Οι ίδιες πληροφορίες μπορούν επίσης να δημιουργηθούν για το UDP χρησιμοποιώντας:

 netstat -au 

Το αντίθετο από τη σημαία -a είναι η σημαία -l που κάνει netstat τη λίστα των θυρών ακρόασης αλλά παραλείπει τις ενεργές συνδέσεις.

Για να δείτε μια λίστα των διαδικασιών που έχουν ανοιχτές συνδέσεις ή περιμένουν συνδέσεις, χρησιμοποιήστε τη σημαία -p :

 sudo netstat -atp 

Μπορείτε να χρησιμοποιήσετε -p με και τα δύο -t για TCP ή -u για UDP. Σημειώστε επίσης ότι πρέπει να εκτελέσετε την εντολή με το sudo . Η σημαία -p κάνει πολύ πιο εύκολη την ερμηνεία της λίστας σύνδεσης. Από το παραπάνω παράδειγμα, μπορείτε να δείτε ότι δεν εκτελείται μόνο ο διακομιστής SSH (sshd), αλλά το μηχάνημα διαθέτει διακομιστή CUPS που εκτελείται μαζί με το μίνι διακομιστή DNSMasq.

Αν χρειάζεται να ελέγξετε ότι μια συγκεκριμένη υπηρεσία εκτελείται, μπορείτε να χρησιμοποιήσετε το netstat σε συνδυασμό με την εντολή grep . Για παράδειγμα, στη δοκιμή μου, εγκατέστησα ένα διακομιστή ηλεκτρονικού ταχυδρομείου (postfix). Για να ελέγξετε ότι εκτελείται, μπορώ να χρησιμοποιήσω τα εξής:

 sudo netstat -ltp | grep smtp 

Η σημαία -ltp λέει στο netstat να παραθέτει μόνο τους διακομιστές TCP (δηλ. -ltp διαδικασίες που ακούν για συνδέσεις) και η εντολή grep φιλτράρει την έξοδο για να δείξει μόνο τις γραμμές με τη συμβολοσειρά "smtp". Ως αποτέλεσμα, μπορούμε να δούμε ότι η διαδικασία " master "(το οποίο είναι το όνομα της κύριας διαδικασίας του Postfix) ακούει σε IPv4 και IPv6 για εισερχόμενες συνδέσεις SMTP.

το netstat είναι σε θέση να παράγει αρκετά στατιστικά στοιχεία σχετικά με το υποσύστημα δικτύωσης. Δοκιμάστε τις ακόλουθες εντολές:

  • netstat -i για να λάβετε πληροφορίες χρήσης σχετικά με τις διεπαφές δικτύου
  • netstat -ie για να λάβετε εκτεταμένες πληροφορίες χρήσης
  • netstat -s για να λάβετε συνοπτικά στατιστικά στοιχεία για κάθε πρωτόκολλο δικτύωσης (π.χ. TCP, UDP, ICMP και ούτω καθεξής)

Για να αποκτήσετε τον τρέχοντα πίνακα δρομολόγησης του πυρήνα, χρησιμοποιήστε:

 netstat -rn 

Ο πίνακας δρομολόγησης ανάγνωσης χρειάζεται εκπαιδευμένο μάτι, αλλά ουσιαστικά αυτό που δείχνει το παραπάνω παράδειγμα είναι ότι η προεπιλεγμένη διαδρομή (0.0.0.0) για όλα τα πακέτα εκτός από αυτά για το τοπικό μηχάνημα θα σταλεί στο 192.168.1.254, την προεπιλεγμένη πύλη και το μόντεμ / δρομολογητή μου στο Διαδίκτυο.

Μπορείτε να εκτελέσετε εντολή χωρίς τη σημαία -n πράγμα που σημαίνει ότι το netstat θα προσπαθήσει να επιλύσει τις διευθύνσεις.

Η σελίδα man netstat έχει πλήρη λίστα με όλες τις διαθέσιμες επιλογές, μπορείτε να την διαβάσετε χρησιμοποιώντας:

 man netstat 

Αν έχετε κάποιο πρόβλημα με τα παραπάνω παραδείγματα, μπορείτε να υποβάλετε μια ερώτηση στα παρακάτω σχόλια.