Linux netstat命令详解

来源:互联网 发布:常见的数据备份方式 编辑:程序博客网 时间:2024/05/20 14:22

参考自:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html

简介

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

输出信息含义

执行netstat后,其输出结果为

复制代码
Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHEDtcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHEDtcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHEDtcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHEDtcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSEActive UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 1 [ ] STREAM CONNECTED 16178 @000000ddunix 1 [ ] STREAM CONNECTED 16176 @000000dcunix 9 [ ] DGRAM 5292 /dev/logunix 1 [ ] STREAM CONNECTED 16182 @000000df
复制代码


从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

常见参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

 

实用命令实例

 

1. 列出所有端口 (包括监听和未监听的)

  列出所有端口 netstat -a

复制代码
# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address           Foreign Address         State tcp        0      0 localhost:30037         *:*                     LISTEN udp        0      0 *:bootpc                *:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags       Type       State         I-Node   Path unix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0 unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket
复制代码

  列出所有 tcp 端口 netstat -at

复制代码
# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address           Foreign Address         State tcp        0      0 localhost:30037         *:*                     LISTEN tcp        0      0 localhost:ipp           *:*                     LISTEN tcp        0      0 *:smtp                  *:*                     LISTEN tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
复制代码

  列出所有 udp 端口 netstat -au

# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address           Foreign Address         State udp        0      0 *:bootpc                *:* udp        0      0 *:49119                 *:* udp        0      0 *:mdns                  *:*

 

2. 列出所有处于监听状态的 Sockets

  只显示监听端口 netstat -l

# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State tcp        0      0 localhost:ipp           *:*                     LISTEN tcp6       0      0 localhost:ipp           [::]:*                  LISTEN udp        0      0 *:49119                 *:*

  只列出所有监听 tcp 端口 netstat -lt

# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State tcp        0      0 localhost:30037         *:*                     LISTEN tcp        0      0 *:smtp                  *:*                     LISTEN tcp6       0      0 localhost:ipp           [::]:*                  LISTEN

  只列出所有监听 udp 端口 netstat -lu

# netstat -lu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State udp        0      0 *:49119                 *:* udp        0      0 *:mdns                  *:*

  只列出所有监听 UNIX 端口 netstat -lx

复制代码
# netstat -lx Active UNIX domain sockets (only servers) Proto RefCnt Flags       Type       State         I-Node   Path unix  2      [ ACC ]     STREAM     LISTENING     6294     private/maildrop unix  2      [ ACC ]     STREAM     LISTENING     6203     public/cleanup unix  2      [ ACC ]     STREAM     LISTENING     6302     private/ifmail unix  2      [ ACC ]     STREAM     LISTENING     6306     private/bsmtp
复制代码

3. 显示每个协议的统计信息

  显示所有端口的统计信息 netstat -s

复制代码
# netstat -s Ip: 11150 total packets received 1 with invalid addresses 0 forwarded 0 incoming packets discarded 11149 incoming packets delivered 11635 requests sent out Icmp: 0 ICMP messages received 0 input ICMP message failed. Tcp: 582 active connections openings 2 failed connection attempts 25 connection resets received Udp: 1183 packets received 4 packets to unknown port received. .....
复制代码

  显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su

# netstat -st # netstat -su

 

4. 在 netstat 输出中显示 PID 和进程名称 netstat -p

netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。

# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name tcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefox tcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox

5. 在 netstat 输出中不显示主机,端口和用户名 (host, port or user)

当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。

同样可以加速输出,因为不用进行比对查询。

# netstat -an

如果只是不想让这三个名称中的一个被显示,使用以下命令

# netsat -a --numeric-ports# netsat -a --numeric-hosts# netsat -a --numeric-users

 

6. 持续输出 netstat 信息

netstat 将每隔一秒输出网络信息。

复制代码
# netstat -c Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State tcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED tcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSING tcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED tcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING ^C
复制代码

 

7. 显示系统不支持的地址族 (Address Families)

netstat --verbose

在输出的末尾,会有如下的信息

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.

 

8. 显示核心路由信息 netstat -r

# netstat -r Kernel IP routing table Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface 192.168.1.0     *               255.255.255.0   U         0 0          0 eth2 link-local      *               255.255.0.0     U         0 0          0 eth2 default         192.168.1.1     0.0.0.0         UG        0 0          0 eth2

注意: 使用 netstat -rn 显示数字格式,不查询主机名称。

 

9. 找出程序运行的端口

并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

# netstat -ap | grep ssh tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  - tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -

  找出运行在指定端口的进程

# netstat -an | grep ':80'

 

10. 显示网络接口列表

# 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         0      0      0 0             0      0      0      0 BMU eth2       1500 0     26196      0      0 0         26883      6      0      0 BMRU lo        16436 0         4      0      0 0             4      0      0      0 LRU

显示详细信息,像是 ifconfig 使用 netstat -ie:

复制代码
# netstat -ie Kernel Interface table eth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11 UP BROADCAST MULTICAST  MTU:1500  Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B) Memory:f6ae0000-f6b00000
复制代码

 

11. IP和TCP分析

  查看连接某服务端口最多的的IP地址

复制代码
wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -2018 221.136.168.363 154.74.45.2422 78.173.31.2362 62.183.207.982 192.168.1.142 182.48.111.2152 124.193.219.342 119.145.41.22 114.255.41.301 75.102.11.99
复制代码

  TCP各种状态列表

复制代码
wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'established)ForeignLISTENTIME_WAITESTABLISHEDTIME_WAITSYN_SENT
复制代码
  先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。
复制代码
wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c143 ESTABLISHED1 FIN_WAIT11 Foreign1 LAST_ACK36 LISTEN6 SYN_SENT113 TIME_WAIT1 established)
复制代码
  最后的命令如下:
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
分析access.log获得访问前10位的ip地址
awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

参考资料:http://blog.maxiang.net/10-netstat-command-examples/139/

            http://www.ipcpu.com/2011/07/netstat-linux/


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 给民俗差评老板骂你怎么办 华为p10后置摄像头调黑了怎么办 美图m6手机相机拍照模糊该怎么办 美图t8用久了卡怎么办 美图m4手机开不开机怎么办 比亚迪m6冷凝器散热不好怎么办 深圳市小汽车摇号审核没通过怎么办 扫码开门售货机拿了不给钱怎么办 预付卡办完后对方不愿退款怎么办 海尔88u52显示內存不足怎么办 京东账号绑定的手机好不用了怎么办 京东账号换手机了手机号没变怎么办 京东发票的号和手机对不起来怎么办 京东账号忘记了只有身份证怎么办啊 京东账号手机号换了忘记账号怎么办 新换的卡被注册过京东号怎么办 以旧换新旧的没给商家报案怎么办 宜家家居家居指南地址写错怎么办 苏宁任性付没还遭到恐吓心意怎么办 大王卡激活后一直是E网怎么办 京东退货已取走后悔了怎么办 退差价把下单立返红包退还了怎么办 苏宁电器发票丢了换电器怎么办 苹果5s访问限制密码忘了怎么办 京东买的暴风电视出现问题了怎么办 控水一个月的三角梅还没开花怎么办 帮别人办手机分期不还怎么办 国美在线没有信用卡分期不了怎么办 手机店办理分期被老板套现了怎么办 美的空调保修卡丢了怎么办 格力空调保修卡丢了怎么办 荣耀9i手机总是滑手怎么办? 春兰空调没发票不给修怎么办 洗衣机顶盖的安全开关坏了怎么办 苹果手机的开关健坏了怎么办 淘宝买的东西快递弄破损了怎么办 京东购买邮来手机里面没有怎么办 孕期建卡病历本丢了怎么办 四维检查胎儿心脏有缺陷怎么办 七个月的宝宝俩个蛋蛋都疝气怎么办 电脑有些网站看视频不能全屏怎么办