כיצד להשתמש ב- netstat בלינוקס

netstatפקודת לינוקס מעניקה לך אוצר מידע על חיבורי הרשת שלך, היציאות הנמצאות בשימוש והתהליכים המשתמשים בהן. למד כיצד להשתמש בו.

יציאות, תהליכים ופרוטוקולים

ניתן לחבר שקעי רשת או להמתין לחיבור. החיבורים משתמשים בפרוטוקולי רשת כמו פרוטוקול Control Control (TCP) או UDP של פרוטוקול User Datagram. הם משתמשים בכתובות פרוטוקול אינטרנט וביציאות רשת כדי ליצור חיבורים.

שקעי המילה   עשויים להעלות תמונות של נקודת חיבור פיזית עבור עופרת או כבל, אך בהקשר זה, שקע הוא מבנה תוכנה המשמש לטיפול בקצה אחד של חיבור נתוני רשת.

לשקעים יש שני מצבים עיקריים: הם מחוברים ומאפשרים תקשורת רשת מתמשכת, או שהם ממתינים לחיבור נכנס כדי להתחבר אליהם. ישנם מצבים אחרים, כגון המצב כאשר שקע באמצע יצירת חיבור במכשיר מרוחק, אך אם מציבים מצבים חולפים בצד, אתה יכול לחשוב על שקע שהוא מחובר או ממתין (מה שמכונה לעתים קרובות האזנה ).

שקע ההאזנה נקרא שרת , והשקע שמבקש חיבור עם שקע ההאזנה נקרא לקוח . לשמות אלה אין שום קשר לתפקידי חומרה או מחשב. הם פשוט מגדירים את התפקיד של כל שקע בכל קצה החיבור.

netstatפקוד מאפשרת לך לגלות אילו שקעים מחוברים ואשר ארובות מקשיבות. כלומר, זה אומר לך אילו יציאות בשימוש ואילו תהליכים משתמשים בהן. זה יכול להראות לך טבלאות ניתוב וסטטיסטיקה אודות ממשקי הרשת וחיבורי שידור הרשת שלך.

הפונקציונליות של netstatשוחזרה לאורך זמן בכלי עזר שונים של לינוקס, כגון ip ו- ss. עדיין כדאי להכיר את הסבא הזה עם כל פקודות ניתוח הרשת, מכיוון שהוא זמין בכל מערכות ההפעלה דומות לינוקס ו- Unix, ואפילו ב- Windows ו- Mac.

כך ניתן להשתמש בו, עם פקודות לדוגמא.

רישום כל השקעים

האפשרות -a(הכל) מאפשרת netstatלהציג את כל שקעי המחובר והמתנה. פקודה זו עלולה לייצר רישום ארוך, ולכן אנו מקדים אותה less.

netstat -a | פָּחוּת

הרישום כולל שקעי TCP (IP), TCP6 (IPv6) ו- UDP.

העטיפה בחלון המסוף מקשה מעט על המתרחש. להלן מספר קטעים מאותו רישום:

חיבורי אינטרנט פעילים (שרתים והוקמו) Proto Recv-Q Send-Q כתובת מקומית כתובת חוץ מדינה tcp 0 0 localhost: domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost : ipp 0.0.0.0:* LISTEN tcp 0 0 localhost: smtp 0.0.0.0:* LISTEN tcp6 0 0 [::]: ssh [::]: * LISTEN tcp6 0 0 ip6-localhost: ipp [::]: * להקשיב . . . שקעי דומיין פעילים של UNIX (שרתים ומבוססים) דגלי Proto RefCnt סוג מצב I-Node נתיב unix 24 [] DGRAM 12831 / run / systemd / journal / dev-log unix 2 [ACC] STREAM LISTENING 24747 @ / tmp / dbus-zH6clYmvw8 unix 2 [] DGRAM 26372 / run / user / 1000 / systemd / notify unix 2 [] DGRAM 23382 / run / user / 121 / systemd / notify unix 2 [ACC] SEQPACKET LISTENING 12839 / run / udev / control

החלק "אינטרנט פעיל" מפרט את החיבורים החיצוניים המחוברים ואת השקעים המקומיים המקשיבים לבקשות חיבור מרחוק. כלומר, הוא מפרט את חיבורי הרשת שנוצרו (או יוקמו) למכשירים חיצוניים.

החלק "תחום UNIX" מפרט את החיבורים הפנימיים המחוברים והאזינים. במילים אחרות, הוא מפרט את החיבורים שנוצרו בתוך המחשב שלך בין יישומים, תהליכים ורכיבים שונים של מערכת ההפעלה.

העמודות "אינטרנט פעיל" הן:

  • פרוטו: הפרוטוקול המשמש את השקע הזה (למשל, TCP או UDP).
  • Recv-Q: תור הקבלה. אלה בתים נכנסים שהתקבלו ונאגרים, ומחכים לתהליך המקומי המשתמש בחיבור זה כדי לקרוא ולצרוך אותם.
  • Send-Q:  תור השליחה. זה מציג את הבתים שמוכנים לשליחה מתור השליחה.
  • כתובת מקומית: פרטי הכתובת של הקצה המקומי של החיבור. ברירת המחדל היא netstat להציג את שם המארח המקומי עבור הכתובת ואת שם השירות עבור היציאה.
  • כתובת זרה:  הכתובת ומספר היציאה של הקצה המרוחק של החיבור.
  • מדינה: מצב השקע המקומי. בשקעי UDP זה בדרך כלל ריק. ראה טבלת המצב להלן.

עבור חיבורי TCP, ערך המצב יכול להיות אחד מהבאים:

  • האזנה: בצד השרת בלבד. השקע ממתין לבקשת חיבור.
  • SYN-SENT: צד הלקוח בלבד. שקע זה הגיש בקשת חיבור ומחכה לראות אם הוא יתקבל.
  • SYN-RECEIVED: צד השרת בלבד. שקע זה ממתין לאישור חיבור לאחר קבלת בקשת חיבור.
  • הוקם: שרת ולקוחות. נוצר חיבור עבודה בין השרת ללקוח, המאפשר העברת נתונים בין השניים.
  • FIN-WAIT-1: שרת ולקוחות. שקע זה ממתין לבקשת סיום חיבור מהשקע המרוחק, או לאישור בקשת סיום חיבור שנשלחה בעבר משקע זה.
  • FIN-WAIT-2: שרת ולקוחות. שקע זה ממתין לבקשה לסיום חיבור מהשקע המרוחק.
  • CLOSE-WAIT: שרת ולקוח. שקע זה ממתין לבקשה לסיום חיבור מהמשתמש המקומי.
  • סוגרים: שרת ולקוחות. שקע זה ממתין לאישור בקשת סיום חיבור מהשקע המרוחק.
  • LAST-ACK: שרת ולקוח. שקע זה ממתין לאישור בקשת סיום החיבור שהוא שלח לשקע המרוחק.
  • זמן המתנה: שרת ולקוחות. שקע זה שלח אישור לשקע המרוחק כדי להודיע ​​לו שהוא קיבל את בקשת הסיום של השקע המרוחק. כעת הוא ממתין לוודא שהתקבלה האישור.
  • סגור: אין חיבור, ולכן השקע הופסק.

העמודות "תחום יוניקס" הן:

  • פרוטו: הפרוטוקול המשמש את השקע הזה. זה יהיה "יוניקס".
  • RefCnt: ספירת הפניות. מספר התהליכים המצורפים המחוברים לשקע זה.
  • דגלים: בדרך כלל זה מוגדר ל- ACC , מה שמייצג SO_ACCEPTON, כלומר השקע ממתין לבקשת חיבור. SO_WAITDATA, מוצג כ W, פירושו שיש נתונים שמחכים לקריאה. SO_NOSPACE, שמוצג כ- Nפירושו שאין מקום לכתוב נתונים לשקע (כלומר, חיץ השליחה מלא).
  • סוג: סוג השקע. ראה טבלת הסוגים שלהלן.
  • מצב: מצב השקע. ראה את טבלת המצב להלן.
  • I-Node: קוד המערכת של מערכת הקבצים המשויך לשקע זה.
  • נתיב : נתיב מערכת הקבצים לשקע.

סוג שקע הדומיין של Unix יכול להיות אחד מהבאים:

  • DGRAM: השקע נמצא בשימוש במצב datagram, באמצעות הודעות באורך קבוע. לא ניתן להבטיח שתרשימי נתונים יהיו מהימנים, רצפים או לא כפולים.
  • STREAM: שקע זה הוא שקע זרם. זהו סוג חיבור השקע ה"רגיל "המקובל. שקעים אלה נועדו לספק משלוח מנות ברצף (לפי סדר) של חבילות.
  • RAW: שקע זה משמש כשקע גולמי. שקעים גולמיים פועלים ברמת הרשת של מודל OSI ואינם מתייחסים לכותרות TCP ו- UDP מרמת התחבורה.
  • RDM: שקע זה ממוקם בקצה אחד של חיבור הודעות שנמסר באופן אמין.
  • SEQPACKET: שקע זה פועל כשקע מנות רציף, המהווה אמצעי נוסף לספק אספקת מנות אמינה, ברצף ולא כפיל.
  • PACKET: שקע גישה ממשק גולמי. שקעי מנות משמשים לקבלת או משלוח מנות גולמיות ברמת מנהל ההתקן (כלומר שכבת קישור נתונים) של דגם ה- OSI.

מצב שקע הדומיין של Unix יכול להיות אחד מהבאים:

  • בחינם: שקע זה אינו מוקצה.
  • האזנה: שקע זה מאזין לבקשות חיבור נכנסות.
  • חיבור: שקע זה נמצא בתהליך חיבור.
  • מחובר: נוצר חיבור, והשקע מסוגל לקבל ולהעביר נתונים.
  • ניתוק: החיבור נמצא בתהליך סיום.

וואו, זה המון מידע! רבות netstatמהאפשרויות מעדנות את התוצאות בצורה כזו או אחרת, אך הן לא משנות יותר מדי את התוכן. בואו נסתכל.

שקעי רישום לפי סוג

netstat -aהפקודה יכול לספק מידע יותר ממה שאתה צריך לראות. אם אתה רק רוצה או צריך לראות את שקעי TCP, באפשרותך להשתמש באפשרות -t(TCP) כדי להגביל את התצוגה להצגת שקעי TCP בלבד.

netstat -at | פָּחוּת

התצוגה בחוץ מצטמצמת מאוד. השקעים המעטים המפורטים הם כולם שקעי TCP.

-u(UDP) ואת -xאפשרויות (UNIX) מתנהגים באופן דומה, הגבלת התוצאות לסוג שקע שצוינו בשורת הפקודה. הנה האפשרות -u (UDP) בשימוש:

netstat -au | פָּחוּת

Only UDP sockets are listed.

Listing Sockets by State

To see the sockets that are in the listening or waiting state, use the -l (listening) option.

netstat -l | less

The sockets that are listed are those that are in the listening state.

This can be combined with the -t (TCP, -u (UDP) and -x (UNIX) options to further home in on the sockets of interest. Let’s look for listening TCP sockets:

netstat -lt | less

Now, we see only TCP listening sockets.

Network Statistics by Protocol

To see statistics for a protocol, use the -s (statistics) option and pass in the -t (TCP), -u (UDP), or -x (UNIX) options. If you just use the -s (statistics) option on its own, you’ll see statistics for all protocols. Let’s check the statistics for the TCP protocol.

netstat -st | less

A collection of statistics for the TCP connections is displayed in less.

Showing Process Names and PIDs

It can be useful to see the process ID (PID) of the process using a socket, together with the name of that process. The -p (program) option does just that. Let’s see what the PIDs and process names are for the processes using a TCP socket that is in the listening state. We use sudo to make sure we receive all of the information that is available, including any information that would normally require root permissions.

sudo netstat -p -at

Here’s that output in a formatted table:

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name  tcp 0 0 localhost:domain 0.0.0.0:* LISTEN 6927/systemd-resolv  tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 751/sshd  tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN 7687/cupsd  tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN 1176/master  tcp6 0 0 [::]:ssh [::]:* LISTEN 751/sshd  tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN 7687/cupsd  tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN 1176/master

We’ve got an extra column called “PID/program name.” This column lists the PID and name of the process using each of the sockets.

Listing Numeric Addresses

Another step we can take to remove some ambiguity is to display the local and remote addresses as IP addresses instead of their resolved domain and hostnames. If we use the -n (numeric) option, the IPv4 addresses are shown in dotted-decimal format:

sudo netstat -an | less

The IP addresses are shown as numeric values. The port numbers are also shown, separated by a colon ” : ” from the IP Address.

An IP address of 127.0.0.1 shows that the socket is bound to the loopback address of the local computer. You can think of an IP address of 0.0.0.0 as meaning the “default route” for local addresses, and “any IP address” for foreign addresses. IPv6 addresses shown as “::” are also all zero addresses.

The ports that are listed can be easily checked to see what their usual purpose is:

  • 22: This is the Secure Shell (SSH) listening port.
  • 25: This the Simple Mail Transfer Protocol (SMTP) listening port.
  • 53: This is the Domain Name System (DNS) listening port.
  • 68: This is the Dynamic Host Configuration Protocol (DHCP) listening port.
  • 631: This is the Common UNIX Printing System (CUPS) listening port.

RELATED:What is the Difference Between 127.0.0.1 and 0.0.0.0?

Displaying the Routing Table

The -r (route) option displays the kernel routing table.

sudo netstat -r

Here’s that output in a neat table:

Kernel IP routing table Destination   Gateway       Genmask        Flags  MSS Window  irtt  Iface default       Vigor.router  0.0.0.0        UG       0  0          0 enp0s3 link-local    0.0.0.0       255.255.0.0    U       0  0          0 enp0s3 192.168.4.0   0.0.0.0       255.255.255.0 U       0  0          0 enp0s3

And, here’s what the columns mean:

  • Destination: The destination network or destination host device (if the destination is not a network).
  • Gateway: The gateway address. An asterisk “*” appears here if a gateway address is not set.
  • Genmask: The subnet mask for the route.
  • Flags: See the flags table, below.
  • MSS: Default Maximum Segment Size for TCP connections over this route—this is the largest amount of data that can be received in one TCP segment.
  • Window: The default window size for TCP connections over this route, indicating the number of packets that can be transferred and received before the receiving buffer is full. In practice, the packets are consumed by the receiving application.
  • irtt: The Initial Round Trip Time. This value is referenced by the kernel to make dynamic adjustments to TCP parameters for remote connections that are slow to respond.
  • Iface: The network interface from which the packets sent over this route are transmitted.

The flags value can be one of:

  • U: The route is up.
  • H: Target is a host and the only destination possible on this route.
  • G: Use the gateway.
  • R: Reinstate the route for dynamic routing.
  • D: Dynamically installed by the routing daemon.
  • M: Modified by the routing daemon when it received an Internet Control Message Protocol (ICMP) packet.
  • A: Installed by addrconf, the automated DNS and DHCP config file generator.
  • C: Cache entry.
  • !: Reject route.

Finding the Port Used by a Process

If we pipe the output of netstat through grep, we can search for a process by name and identify the port it is using. We use the -a (all), -n (numeric) and -p (program) options used previously, and search for “sshd.”

sudo netstat -anp | grep "sshd"

grep finds the target string, and we see that the sshd daemon is using port 22.

Of course, we can also do this in reverse. If we search for “:22”, we can find out which process is using that port, if any.

sudo netstat -anp | grep ":22"

This time grep finds the “:22” target string, and we see that the process using this port is the sshd daemon, process ID 751.

List the Network Interfaces

The -i (interfaces) option will display a table of the network interfaces that netstat can discover.

sudo netstat -i

Here’s the output in a more legible fashion:

Kernel Interface table Iface    MTU   RX-OK  RX-ERR RX-DRP  RX-OVR   TX-OK   TX-ERR   TX-DRP   TX-OVR Flg enp0s3   1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU

This is what the columns mean:

  • Iface: The name of the interface. The enp0s3 interface is the network interface to the outside world, and the lo interface is the loopback interface. The loopback interface enables processes to intercommunicate within the computer using networking protocols, even if the computer is not connected to a network.
  • MTU: The Maximum Transmission Unit (MTU). This is the largest “packet” that can be sent. It consists of a header containing routing and protocol flags, and other metadata, plus the data that is actually being transported.
  • RX-OK: The number of packets received, with no errors.
  • RX-ERR: The number of packets received, with errors. We want this to be as low as possible.
  • RX-DRP: The number of packets dropped (i.e., lost). We also want this to be as low as possible.
  • RX-OVR: Number of packets lost due to overflows when receiving. This usually means that the receiving buffer was full and could not accept any more data, but more data was received and had to be discarded. The lower this figure, the better, and zero is perfect.
  • TX-OK: The number of packets transmitted, with no errors.
  • RX-ERR: The number of packets transmitted, with errors. We want this to be zero.
  • RX-DRP: The number of packets dropped when transmitting. Ideally, this should be zero.
  • RX-OVR: The number of packets lost due to overflows when transmitting. This usually means the send buffer was full and could not accept any more data, but more data was was ready to be transmitted and had to be discarded.
  • Flg: Flags. See the flags table below.

The flags represent the following:

  • B: A broadcast address is in use.
  • L: This interface is a loopback device.
  • M: All packets are being received (i.e., in promiscuous mode). Nothing is filtered or discarded.
  • O: Address Resolution Protocol (ARP) is turned off for this interface.
  • P: This is a Point-to-Point (PPP) connection.
  • R: The interface is running.
  • U: The interface is up.

List Multicast Group Memberships

Simply put, a multicast transmission enables a packet to be sent only once, regardless of the number of recipients. For services such as video streaming, for example, this increases the efficiency from the sender’s point of view by a tremendous amount.

The -g (groups) option makes netstat list the multicast group membership of sockets on each interface.

sudo netstat -g

The columns are quite simple:

  • ממשק: שם הממשק שעליו משדר השקע.
  • RefCnt: ספירת ההתייחסות, שהיא מספר התהליכים המחוברים לשקע.
  • קבוצה: השם או המזהה של קבוצת ריבוי השידורים.

הילדים החדשים על הבלוק

פקודות המסלול, ip, ifconfig ו- ss יכולות לספק הרבה ממה netstatשמסוגל להראות לך. כולן פקודות נהדרות ושווה לבדוק.

התמקדנו netstatבכך שהוא זמין באופן אוניברסלי, ללא קשר לאיזו מערכת הפעלה דמוית יוניקס אתה עובד, אפילו לא עלומים.