netstat - مشاهده آمار شبکه

دستور netstat برای دیدن اطلاعات شبکه لینوکس مانند کانکشن ها , جدول روتینگ , برخی از اطلاعات هر یک از اینترفیس ها و ... مورد استفاده قرار می گیرد .

اپشن های دستور netstat

a-: برای نشون دادن تمام پورت های  باز (listening) و غیر باز (none listening) که اگر با اپشن iترکیب بشه (پایین تر توضیح دادم) اینترفیس هایی که up نیستن رو هم نشون میده

# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 172.16.134.164:ssh      172.16.134.1:57131      ESTABLISHED
tcp6       0      0 [::]:http               [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
udp        0      0 *:bootpc                *:*                                
udp        0      0 *:50110                 *:*                                
udp6       0      0 [::]:44704              [::]:*                             
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  6      [ ]         DGRAM                    5944     /dev/log
unix  2      [ ACC ]     SEQPACKET  LISTENING     4208     /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     7625     /var/run/acpid.socket
unix  2      [ ]         DGRAM                    9520     
unix  2      [ ]         DGRAM                    8252     
unix  2      [ ]         DGRAM                    4529     
unix  2      [ ]         DGRAM                    6573     
unix  3      [ ]         DGRAM                    5497     
unix  3      [ ]         DGRAM                    5496     

معمولا اپشن aرو همراه با اپشن nبه کار می برن . اپشن nباعث میشه تا نوع عددی اطلاعات نشون داده بشه یعنی مثلا بجای این که بنویسه ssh می نویسه 22 که شماره پرت ssh هست انجام این کار به صورت بسزایی در  سرعت  گرفتن خروجی از netstat تاثیر داره چون دیگه لازم نیست که اعداد رو به صورت نامشون در بیاره.

این خروجی همون خروجی دستور بالاست ولی همراه با اپشن n- :

# netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 172.16.134.164:22       172.16.134.1:57131      ESTABLISHED
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 0.0.0.0:50110           0.0.0.0:*                          
udp6       0      0 :::44704                :::*                               
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  6      [ ]         DGRAM                    5944     /dev/log
unix  2      [ ACC ]     SEQPACKET  LISTENING     4208     /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     7625     /var/run/acpid.socket
unix  2      [ ]         DGRAM                    9520     
unix  2      [ ]         DGRAM                    8252     
unix  2      [ ]         DGRAM                    4529     
unix  2      [ ]         DGRAM                    6573     
unix  3      [ ]         DGRAM                    5497     
unix  3      [ ]         DGRAM                    5496     

i-: برای نشون دادن جدول اینترفیس های شبکمون (فقط اینترفیس هایی که up هستن رو نشون می ده)

aliabry@lp:~$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0    190803      0      0 0        190091      0      0      0 BMRU
lo        16436 0       441      0      0 0           441      0      0      0 LRU
pan1       1500 0         0      0      0 0           901      0      0      0 BMRU
ppp0       1492 0     15505      0      0 0         17393      0      0      0 MOPRU
vmnet1     1500 0         0      0      0 0           206      0      0      0 BMRU
vmnet8     1500 0        27      0      0 0           206      0      0      0 BMRU

اگر اپشن iو aرو باهم ترکیب کنین اینترفیس هایی که down هستن رو هم نشون می ده .

aliabry@lp:~$ netstat -ia
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0    194700      0      0 0        194268      0      0      0 BMRU
lo        16436 0       441      0      0 0           441      0      0      0 LRU
pan1       1500 0         0      0      0 0           940      0      0      0 BMRU
ppp0       1492 0     19344      0      0 0         21492      0      0      0 MOPRU
vmnet1     1500 0         0      0      0 0           226      0      0      0 BMRU
vmnet8     1500 0       110      0      0 0           335      0      0      0 BMRU
wlan0      1500 0         0      0      0 0             0      0      0      0 BM

اگر دو خروجی بالا رو با هم مقایسه کنین می بینین که اینترفیس wlan0 داون بوده.

r-: برای نشون دادن جدول روتینگ . خروجی این اپشن دقیقا خروجی هست که دستور route نشون می ده .

aliabry@lp:~$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         *               0.0.0.0         U         0 0          0 ppp0
44.210.11.23    *               255.255.255.255 UH        0 0          0 ppp0
172.16.134.0    *               255.255.255.0   U         0 0          0 vmnet8
172.16.179.0    *               255.255.255.0   U         0 0          0 vmnet1
192.168.1.0     *               255.255.255.0   U         0 0          0 pan1
192.168.64.0    *               255.255.255.0   U         0 0          0 eth0

l-: برای نشون دادن سوکت هایی که در حال listening هستن

aliabry@lp:~$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:56873                 *:*                     LISTEN     
tcp        0      0 *:netbios-ssn           *:*                     LISTEN     
tcp        0      0 *:54508                 *:*                     LISTEN     
tcp        0      0 *:38575                 *:*                     LISTEN     
tcp        0      0 *:sunrpc                *:*                     LISTEN     
tcp        0      0 lp.local:domain         *:*                     LISTEN     
tcp        0      0 *:51285                 *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 *:microsoft-ds          *:*                     LISTEN     
tcp        0      0 *:nfs                   *:*                     LISTEN     
tcp        0      0 *:39299                 *:*                     LISTEN     
tcp        0      0 *:902                   *:*                     LISTEN     
tcp6       0      0 [::]:57802              [::]:*                  LISTEN     
tcp6       0      0 [::]:55850              [::]:*                  LISTEN     
tcp6       0      0 [::]:netbios-ssn        [::]:*                  LISTEN     
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN     
tcp6       0      0 [::]:51761              [::]:*                  LISTEN     
tcp6       0      0 fe80::d811:56ff::domain [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:51929              [::]:*                  LISTEN     
tcp6       0      0 [::]:37757              [::]:*                  LISTEN     
tcp6       0      0 [::]:microsoft-ds       [::]:*                  LISTEN     
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN     
udp        0      0 *:sunrpc                *:*                                
udp        0      0 192.168.64.2:netbios-ns *:*                                
udp        0      0 lp.local:netbios-ns     *:*                                
udp        0      0 172.16.134.2:netbios-ns *:*                                
udp        0      0 lp.local:netbios-ns     *:*                                
udp        0      0 172.16.179.2:netbios-ns *:*                                
udp        0      0 lp.local:netbios-ns     *:*    

p-: برای نشون دان PID  و اسم  نرم افزار در خروجی netstat .

در زیر پرت های  مربوط به firefox رو لیست میکنیم :

aliabry@lp:~$ sudo netstat -nap | grep firefox
tcp        1      0 8.180.28.136:49384      74.125.232.145:443      CLOSE_WAIT  7974/firefox    
tcp        1      0 8.180.28.136:49364      74.125.232.145:443      CLOSE_WAIT  7974/firefox    
tcp        1      0 8.180.28.136:46306      173.194.40.19:443       CLOSE_WAIT  7974/firefox    
tcp        1      0 8.180.28.136:46324      173.194.40.19:443       CLOSE_WAIT  7974/firefox    

u-: برای این که فقط پرتکل udp رو نشون بده . (در زیر قسمتی از خروجی قرار گرفته)

aliabry@lp:~$ netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0      0 *:sunrpc                *:*                                
udp        0      0 192.168.65.2:netbios-ns *:*                                
udp        0      0 lp.local:netbios-ns     *:*                                
udp        0      0 172.16.134.2:netbios-ns *:*                                
udp        0      0 lp.local:netbios-ns     *:*                                

t-: برای نشون دادن فقط پرتکل tcp (در زیر قسمتی از خروجی قرار گرفته)

aliabry@lp:~$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:netbios-ssn           *:*                     LISTEN     
tcp        0      0 *:sunrpc                *:*                     LISTEN     
tcp        0      0 lp.local:domain         *:*                     LISTEN     
tcp        0      0 *:39094                 *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 lp.local:46649          grape.canonical.c:https ESTABLISHED
tcp        1      0 lp.local:44669          vip1.G-anycast1.ca:http CLOSE_WAIT
tcp        1      0 lp.local:47142          198.78.208.254:http     CLOSE_WAIT
tcp        1      0 lp.local:47145          198.78.208.254:http     CLOSE_WAIT    

s-: برای نشون دادن اطلاعات هر پرتکل استفاده میشود مثلا TCP,UDP,ICMP,IPو...  .

مثلا برای دیدن فقط اطلاعات tcp :

aliabry@lp:~$ netstat -st
IcmpMsg:
    InType0: 1303
    InType3: 186
    OutType3: 72
    OutType8: 1400
Tcp:
    8917 active connections openings
    2 passive connection openings
    69 failed connection attempts
    177 connection resets received
    1 connections established
    505388 segments received
    506139 segments send out
    4774 segments retransmited
    818 bad segments received.
    1685 resets sent
UdpLite:
TcpExt:
    6490 TCP sockets finished time wait in fast timer
    3719 delayed acks sent
    1 delayed acks further delayed because of locked socket
    Quick ack mode was activated 6392 times
    7 packets directly queued to recvmsg prequeue.
    156 bytes directly in process context from backlog
    5 bytes directly received in process context from prequeue
    186959 packet headers predicted
    1 packets header predicted and directly queued to user
    10074 acknowledgments not containing data payload received
    4184 predicted acknowledgments
    3 times recovered from packet loss by selective acknowledgements
    7 congestion windows recovered without slow start by DSACK
    2304 congestion windows recovered without slow start after partial ack
    1 TCP data loss events
    156 timeouts after SACK recovery
    9 timeouts in loss state
    3 fast retransmits
    53 retransmits in slow start
    3437 other TCP timeouts
    1 SACK retransmits failed
    6378 DSACKs sent for old packets
    3134 DSACKs sent for out of order packets
    329 DSACKs received
    604 connections reset due to unexpected data
    152 connections reset due to early user close
    97 connections aborted due to timeout
    TCPDSACKIgnoredNoUndo: 33
    TCPSackMerged: 4
    TCPSackShiftFallback: 520
    IPReversePathFilter: 4
    TCPChallengeACK: 827
    TCPSYNChallenge: 824
IpExt:
    InMcastPkts: 940
    OutMcastPkts: 649
    InBcastPkts: 709
    OutBcastPkts: 700
    InOctets: 630978953
    OutOctets: 39405273
    InMcastOctets: 56545
    OutMcastOctets: 47393
    InBcastOctets: 139093
    OutBcastOctets: 136078

c-: برای دیدن خروجی به صورت ادامه دار  که هر یک ثانیه یک خروجی نشون می ده.

اگر با دستور زیر اپشن n- رو هم به کار ببرین ,  خیلی بهتر اپدیت شدن خروجی رو احساس می کنین .

aliabry@lp:~$ netstat -c
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 lp.local:46649          grape.canonical.c:https ESTABLISHED
tcp        1      0 lp.local:44669          vip1.G-anycast1.ca:http CLOSE_WAIT
tcp        1      0 lp.local:47142          198.78.208.254:http     CLOSE_WAIT

v-: برای دیدن اطلاعات بیشتر در مورد وقایعی که درحال رخ دادن هست که البته در اخر خروجی این اپشن از ادرس هایی  (address families) که سیستممون پشتیبانی نمیکنه رو هم نشون میده

aliabry@lp:~$ netstat -vn
...
netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.

دراین جا خورجی های این دستور رو تشریح یا توضیح ندادیم (مثل Tcp states) که در  صفحه man این دستور توضیحاتی در مورد قسمت های مختلف خروجی این دستور  امده که از ادرس زیر در دست رس هست :

http://manpages.ubuntu.com/manpages/raring/en/man8/netstat.8.html