Netstat命令示例及其用法

时间:2020-03-21 11:46:25  来源:igfitidea点击:

Netstat简介

假设有一种情况,我们想了解有关所有网络连接(传入或者传出)的详细信息。

它是一个实用程序,默认情况下,我们通常会在基于UNIX的计算机中找到它。
如果有效使用,它的功能非常强大。
Netstat会比其他任何工具更详细地告诉我们所有连接统计信息。
Netstat将向我们显示当前的实时网络活动。

Netstat也可以用于在我们通常通过运行“ route”命令获得的linux机器中显示路由表。

让我们看看使用netstat可以执行的所有技巧和技术,以向我们展示linux机器中的网络统计信息。

1.使用netstat显示路由表:

通常我们都使用route命令来显示我们的linux机器的路由表。
让我们看看如何使用netstat显示内核路由表

[root@myvm1 ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.159.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         192.168.159.2   0.0.0.0         UG        0 0          0 eth0
[root@myvm1 ~]#

在上面的示例中,我们使用了“ n”和“ r”选项,我将解释它们是什么。

r =显然用于路由列表。

n =使用此选项将避免DNS查找(仅显示ip)

前三列是自我说明。
第四列显示用于与该网络通信的接口是否通过“ U”打开。
G代表使用网关。

第五列显示了MSS。
现在什么是MSS?
因此,有了一些联网。
MSS代表最大段大小。
通常,我们不需要担心MSS的价值,因为内核自己(基于NIC卡和其他网络因素)自行处理了所有这些工作。
将在另一篇文章中详细发布MSS,因为我们在这里讨论的是netstat而不是MSS !!!!

现在,第六列还是基于网络的列,它显示了窗口大小。
.将保留单独的窗口大小。

不好意思说,但是第七专列也是网络专列!! irtt代表初始往返时间。
其余一列代表界面。

2.让我们看看如何从Netstat检查界面详细信息

[root@myvm1 ~]# 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   815837      0      0      0   514080      0      0      0 BMRU
lo        16436   0      548      0      0      0      548      0      0      0 LRU
[root@myvm1 ~]#

上图显示了通过netstat命令的接口详细信息。

MTU和Met列显示最大透射率(MSS位于内部,MTU)。

Rx和Tx列显示已传输和已接收的数据包,无错误显示为(Rx-OK,Tx-OK)。
和errerfull显示为(Rx-ERR,Tx-ERR)

默认情况下,只需键入netstat即可为我们提供许多我们从未要求的信息。
但是主要的工作是从大量信息中隔离出需求。
这里有正确的linux技能。

3.查看使用Netstat打开哪些TCp端口

要查看计算机中打开了哪些tcp端口,可以将以下选项与netstat一起使用。

--tcp或者-t用于显示tcp连接。

--listening或者-l将显示所有监听端口

--programs或者-p将显示打开该端口的程序的PID详细信息

[root@myvm1 ~]# netstat --tcp --listening --programs -n
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:679                 0.0.0.0:*                   LISTEN      3889/rpc.statd
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4291/mysqld
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      3859/portmap
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3178/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      4350/sendmail: acce
tcp        0      0 :::80                       :::*                        LISTEN      354/httpd
tcp        0      0 :::22                       :::*                        LISTEN      4152/sshd

当希望通过netstat查看所有协议(如tcp,udp,icmp等)的概述时,使用-s可能是一个有趣的选项。

-s选项的示例输出如下所示:

[root@myvm1 ~]# netstat -s
Ip:
    781419 total packets received
    162 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    781257 incoming packets delivered
    512934 requests sent out
    1 dropped because of missing route
Icmp:
    50 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 10
        timeout in transit: 3
        echo requests: 13
        echo replies: 24
    53 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 11
        echo request: 29
        echo replies: 13
IcmpMsg:
        InType0: 24
        InType3: 10
        InType8: 13
        InType11: 3
        OutType0: 13
        OutType3: 11
        OutType8: 29
Tcp:
    812 active connections openings
    12384 passive connection openings
    5 failed connection attempts
    81 connection resets received
    1 connections established
    761204 segments received
    509528 segments send out
    163 segments retransmited
    0 bad segments received.
    5 resets sent
Udp:
    2885 packets received
    11 packets to unknown port received.
    0 packet receive errors
    3143 packets sent
TcpExt:
    1 invalid SYN cookies received
    6812 TCP sockets finished time wait in fast timer
    4708 delayed acks sent
    1001 delayed acks further delayed because of locked socket
    Quick ack mode was activated 31 times
    7580 packets directly queued to recvmsg prequeue.
    297993 packets directly received from backlog
    7694595 packets directly received from prequeue
    509783 packets header predicted
    7728 packets header predicted and directly queued to user
    67857 acknowledgments not containing data received
    137274 predicted acknowledgments
    TCPDSACKUndo: 28
    76 congestion windows recovered after partial ack
    0 TCP data loss events
    42 retransmits in slow start
    113 other TCP timeouts
    22 DSACKs sent for old packets
    133 DSACKs received
    6 connections reset due to early user close
    10 connections aborted due to timeout
IpExt:
    InMcastPkts: 985
    OutMcastPkts: 609
    InBcastPkts: 17106
    OutBcastPkts: 6
[root@myvm1 ~]#

5.使用netstat持续监控所有流量,并持续活跃。

我们可以通过在netstat中使用-c选项来主动监视流量和连接。
将-c选项与所有前面提到的命令一起使用对于获取网络信息非常有用。

6.使用netstat查看ifconfig之类的信息:

如前所述,通过使用-i选项,我们可以从netstat获取接口统计信息。
与-i方法一起使用-e选项将改善输出,或者多或者少类似于接口的ifconfig输出。

请参阅下面的示例输出:

[root@myvm1 ~]# netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:0C:29:93:A0:52
          inet addr:192.168.159.128  Bcast:192.168.159.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe93:a052/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:816092 errors:0 dropped:0 overruns:0 frame:0
          TX packets:514402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:472160755 (450.2 MiB)  TX bytes:223864906 (213.4 MiB)
          Interrupt:75 Base address:0x2024
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:548 errors:0 dropped:0 overruns:0 frame:0
          TX packets:548 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:100017 (97.6 KiB)  TX bytes:100017 (97.6 KiB)
[root@myvm1 ~]#

7,查找ips建立的连接数

假设我们要查找ip地址建立的连接数。
我们可以使用以下命令找出答案。

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n