• Linux常用网络命令整理


    Linux上有一些非常常用的命令,来帮助我们监控网络状况。

    1.Tcpdump命令

    tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,
    并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

    1)所有参数及含义:
    -A 以ASCII格式打印出所有分组,并将链路层的头最小化。
    -c 在收到指定的数量的分组后,tcpdump就会停止。
    -C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。
    -d 将匹配信息包的代码以人们能够理解的汇编格式给出。
    -dd 将匹配信息包的代码以c语言程序段的格式给出。
    -ddd 将匹配信息包的代码以十进制的形式给出。
    -D 打印出系统中所有可以用tcpdump截包的网络接口。
    -e 在输出行打印出数据链路层的头部信息。
    -E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。
    -f 将外部的Internet地址以数字的形式打印出来。
    -F 从指定的文件中读取表达式,忽略命令行中给出的表达式。
    -i 指定监听的网络接口,多网卡时很有用。
    -l 使标准输出变为缓冲行形式,可以把数据导出到文件。
    -L 列出网络接口的已知数据链路。
    -m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。
    -M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。
    -b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。
    -n 不把网络地址转换成名字。
    -nn 不进行端口名称的转换,即不进行域名解析。
    -N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。
    -t 在输出的每一行不打印时间戳。
    -O 不运行分组分组匹配(packet-matching)代码优化程序。
    -P 不将网络接口设置成混杂模式。
    -q 快速输出。只输出较少的协议信息。
    -r 从指定的文件中读取包(这些包一般通过-w选项产生)。
    -S 将tcp的序列号以绝对值形式输出,而不是相对值。
    -s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。
    -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。
    -t 不在每一行中输出时间戳。
    -tt 在每一行中输出非格式化的时间戳。
    -ttt 输出本行和前面一行之间的时间差。
    -tttt 在每一行中输出由date处理的默认格式的时间戳。
    -u 输出未解码的NFS句柄。
    -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。
    -vv 输出详细的报文信息。
    -w 直接将分组写入文件中,而不是不分析并打印出来,保存到文件时很有用。     
    -X 显示数据包内容,格式为十六进制。

    2)Tcpdump表达式
    表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。
    如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字: 

    第一种是关于类型的关键字,主要包括host,net,port。
    例如host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0指明202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host。 

    第二种是确定传输方向的关键字,主要包括src,dst,dst or src,dst and src。
    这些关键字指明了传输的方向。举例说明,src 210.27.48.2指明ip包中源地址是 210.27.48.2,dst net 202.0.0.0指明目的网络地址是202.0.0.0。
    如果没有指明方向关键字,则缺省是src or dst关键字。

    第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。
    如果没有指定任何协议,则tcpdump 将会监听所有协议的信息包。

    除了这三种类型的关键字之外,其他重要的关键字如下:gateway,broadcast,less,greater。
    还有三种逻辑运算,取非运算是 ‘not ' '! ‘,与运算是’and’,’&&',或运算是’or’。

    3)例如,监控8012端口上的TCP包:
    [root@bogon ~]# tcpdump -nn -n dst port 8012 and tcp
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    13:17:19.728118 IP 10.25.1.41.58755 > 192.168.195.146.8012: Flags [.], ack 4530972, win 255, length 0
    13:17:20.086680 IP 10.25.1.41.58757 > 192.168.195.146.8012: Flags [S], seq 2652586086, win 8192, options [mss 1367,nop,wscale 8,nop,nop,sackOK], length 0
    13:17:20.095037 IP 10.25.1.41.58755 > 192.168.195.146.8012: Flags [F.], seq 0, ack 1, win 255, length 0
    13:17:20.122483 IP 10.25.1.41.58757 > 192.168.195.146.8012: Flags [.], ack 56813455, win 259, length 0
    13:17:20.123865 IP 10.25.1.41.58757 > 192.168.195.146.8012: Flags [P.], seq 0:394, ack 1, win 259, length 394
    13:17:20.244773 IP 10.25.1.41.58757 > 192.168.195.146.8012: Flags [P.], seq 394:679, ack 727, win 256, length 285
    13:17:20.284014 IP 10.25.1.41.58757 > 192.168.195.146.8012: Flags [.], ack 850, win 255, length 0
    ^C
    7 packets captured
    7 packets received by filter
    0 packets dropped by kernel

    其他常用参数组合如下:
    1. 下面的例子全是以抓取eth0接口为例,如果不加”-i eth0”是表示抓取所有的接口包括lo。  
    2. 首先安装tcpdump包:yum install -y tcpdump  
    3.   
    4.  1、抓取包含172.16.1.122的数据包  
    5. # tcpdump -i eth0 -vnn host 172.16.1.122  
    6.    
    7. 2、抓取包含172.16.1.0/24网段的数据包  
    8. # tcpdump -i eth0 -vnn net 172.16.1.0/24  
    9.    
    10. 3、抓取包含端口22的数据包  
    11. # tcpdump -i eth0 -vnn port 22  
    12.    
    13. 4、抓取udp协议的数据包  
    14. # tcpdump -i eth0 -vnn  udp  
    15.    
    16. 5、抓取icmp协议的数据包  
    17. # tcpdump -i eth0 -vnn icmp  
    18.   
    19. 6、抓取arp协议的数据包  
    20. # tcpdump -i eth0 -vnn arp  
    21.    
    22. 7、抓取ip协议的数据包  
    23. # tcpdump -i eth0 -vnn ip  
    24.    
    25. 8、抓取源ip是172.16.1.122数据包。  
    26. # tcpdump -i eth0 -vnn src host 172.16.1.122  
    27.    
    28. 9、抓取目的ip是172.16.1.122数据包  
    29. # tcpdump -i eth0 -vnn dst host 172.16.1.122  
    30.    
    31. 10、抓取源端口是22的数据包  
    32. # tcpdump -i eth0 -vnn src port 22  
    33.    
    34. 11、抓取源ip是172.16.1.253且目的ip是22的数据包  
    35. # tcpdump -i eth0 -vnn src host 172.16.1.253 and dst port 22  
    36.                  
    37. 12、抓取源ip是172.16.1.122或者包含端口是22的数据包  
    38. # tcpdump -i eth0 -vnn src host 172.16.1.122 or port 22  
    39.    
    40. 13、抓取源ip是172.16.1.122且端口不是22的数据包  
    41. [root@ ftp]# tcpdump -i eth0 -vnn src host 172.16.1.122 and not port 22  
    42.   
    43. 14、抓取源ip是172.16.1.2且目的端口是22,或源ip是172.16.1.65且目的端口是80的数据包。  
    44. # tcpdump -i eth0 -vnn ( src host 172.16.1.2 and dst port 22 ) or   ( src host 172.16.1.65 and dst port 80 )  
    45.    
    46. 15、抓取源ip是172.16.1.59且目的端口是22,或源ip是172.16.1.68且目的端口是80的数据包。  
    47. # tcpdump -i  eth0 -vnn 'src host 172.16.1.59 and dst port 22' or  ' src host 172.16.1.68 and dst port 80 '  
    48.    
    49. 16、把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。  
    50. # tcpdump –i eth0 -vnn -w  /tmp/fil1 -c 100  
    51.    
    52. 17、从/tmp/fill记录中读取tcp协议的数据包  
    53. # tcpdump –i eth0 -vnn -r  /tmp/fil1 tcp  
    54.    
    55. 18、从/tmp/fill记录中读取包含172.16.1.58的数据包  
    56. # tcpdump –i eth0 -vnn -r  /tmp/fil1 host  172.16.1.58  


    2.Netstat命令

    1)所有参数如下,常用参数用红色标记:
      -a或--all   显示所有连线中的Socket,例如已建立连接(ESTABLISHED),监听连接请求(LISTENING)等
      -A<网络类型>或--<网络类型>   列出该网络类型连线中的相关地址。
      -c或--continuous   持续列出网络状态。
      -C或--cache   显示路由器配置的快取信息。
      -e或--extend   显示网络其他相关信息。
      -F或--fib   显示FIB。
      -g或--groups   显示多重广播功能群组组员名单。
      -h或--help   在线帮助。
      -i或--interfaces   显示网络界面信息表单。
      -l或--listening   显示监控中的服务器的Socket。
      -M或--masquerade   显示伪装的网络连线。
      -n或--numeric   直接使用IP地址,而不通过域名服务器。
      -N或--netlink或--symbolic   显示网络硬件外围设备的符号连接名称。
      -o或--timers   显示计时器。
      -p或--programs   显示正在使用Socket的程序识别码和程序名称。
      -r或--route   显示Routing Table。
      -s或--statistice   显示网络工作信息统计表。
      -t或--tcp   显示TCP传输协议的连线状况。
      -u或--udp   显示UDP传输协议的连线状况。
      -v或--verbose   显示指令执行过程。
      -V或--version   显示版本信息。
      -w或--raw   显示RAW传输协议的连线状况。
      -x或--unix   此参数的效果和指定"-A unix"参数相同。
      --ip或--inet   此参数的效果和指定"-A inet"参数相同。

    2)执行:netstat -anltpu
    输出结果:
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name 
    tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      3226/hpiod        
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3411/mysqld       
    tcp        0      0 0.0.0.0:1002                0.0.0.0:*                   LISTEN      2940/rpc.statd    
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2883/portmap      
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3259/cupsd        
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3453/sendmail: acce
    tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      3231/python       
    tcp        0      0 202.102.240.93:3306         122.207.210.12:1750         ESTABLISHED 3411/mysqld       
    tcp        0      0 202.102.240.93:3306         122.207.210.12:1748         ESTABLISHED 3411/mysqld       
    tcp        0      0 202.102.240.93:3306         202.102.240.93:59141        ESTABLISHED 3411/mysqld       
    tcp        0      0 202.102.240.93:59141        202.102.240.93:3306         ESTABLISHED 7059/httpd 

    其他常用组合有:-nltp只查看LISTEN状态的TCP连接的程序。

    3)可以借助watch命令或netstat的-c参数,帮助我们实时监控某个进程的网络状况:
         watch -n 1 -d "netstat -anpo | grep "php-fpm""
    输出结果:
    tcp        0      0 192.168.195.145:48467       192.168.198.52:6379         ESTABLISHED 27908/php-fpm       off (0.00/0/0)
    tcp        0      0 192.168.195.145:39178       192.168.195.145:3306        ESTABLISHED 27908/php-fpm       keepalive (7197.09/0/0)
    unix  2      [ ACC ]     STREAM     LISTENING     2449287 27901/php-fpm       /dev/shm/php-fcgi.sock
    unix  3      [ ]         STREAM     CONNECTED     2450180 27908/php-fpm       /dev/shm/php-fcgi.sock
    unix  3      [ ]         STREAM     CONNECTED     2449286 27901/php-fpm
    unix  3      [ ]         STREAM     CONNECTED     2449285 27901/php-fpm


  • 相关阅读:
    测试工具文件4. 数据分析——定义analyseXML
    关于sprintf的"_CRT_SECURE_NO_WWARNINGS"问题的解决
    测试工具文件3. 输出文件——定义TestLog
    测试工具文件2. 支持代码——定义TestUtility
    测试工具文件1. 平台问题——定义Platform.h
    python之正则表达式
    python之字典总结
    python之global关键字的用法
    python + selenium 常用方法验证页面上的UI元素
    python + selenium 元素定位方法 (索引)By属性
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157715.html
Copyright © 2020-2023  润新知