CentOS 7.5系统管理与运维实战
上QQ阅读APP看书,第一时间看更新

3.6 Linux高级网络配置工具

目前很多Linux在使用之前的arp、ifconfig和route命令。虽然这些工具能够工作,但它们在Linux 2.2和更高版本的内核上显得有一些落伍。无论对于Linux开发者还是Linux系统管理员,网络程序调试时数据包的采集和分析是不可少的。tcpdump是Linux中强大的数据包采集分析工具之一。本节主要介绍iproute2和tcpdump的相关知识。

3.6.1 高级网络管理工具iproute2

相对于系统提供的arp、ifconfig和route等旧版本的命令,iproute2工具包提供了更丰富的功能,除了提供网络参数设置、路由设置、带宽控制等功能,最新的GRE隧道也可以通过此工具进行配置。

现在大多数Linux发行版本都安装了iproute2软件包,如没有安装可以使用yum工具进行安装。应该注意的是,yum工具需要联网才能使用。iproute2工具包中的主要管理工具为ip命令。下面将介绍iproute2工具包的安装与使用。安装过程如【示例3-21】所示。

【示例3-21】

     [root@CentOS Packages]# yum install -y iproute
     #安装过程省略
     [root@CentOS Packages]# rpm -qa|grep iproute
     iproute-3.10.0-13.el7.x86_64
     #检查安装情况
     [root@CentOS Packages]# ip -V
     ip utility, iproute2-ss130716

ip命令的语法如【示例3-22】所示。

【示例3-22】

1.使用ip命令来查看网络配置

ip命令是iproute2软件的命令工具,可以替代ifconfig、route等命令,查看网络配置的用法如【示例3-23】所示。

【示例3-23】

上面的命令显示了机器上所有的地址,以及这些地址属于哪些网络接口。“inet”表示Internet (IPv4)。eth0的IP地址与192.168.3.88/24相关联,“/24”指IP地址表示网络地址的位数,“lo”则为本地回路信息。

2.显示路由信息

如需查看路由信息,可以使用“ip route list”命令,如【示例3-24】所示。

【示例3-24】

上述示例首先查看系统中当前的路由情况,其功能和route命令类似。

以上只是初步介绍了iproute2的用法,更多信息请查看系统帮助。

3.6.2 网络数据采集与分析工具tcpdump

tcpdump即dump traffic on a network,是根据使用者的定义对网络上的数据包进行截获的包分析工具。无论对于网络开发者还是系统管理员,数据包的获取与分析都是最重要的技术之一。对于系统管理员来说,在网络性能急剧下降的时候,可以通过tcpdump工具分析原因,找出造成网络阻塞的来源。对于程序开发者来说,可以通过tcpdump工具来调试程序。tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句过滤不必要的信息。

提示

Linux系统下tcpdump普通用户是不能正常执行的,一般通过root用户执行。

tcpdump采用命令行方式,命令格式如下,参数说明如表3.12所示。

表3.12 tcpdump命令参数含义说明

首先确认本机tcpdump是否安装,如果没有安装,可以使用【示例3-25】中的方法安装。

【示例3-25】

     #安装tcpdump
     [root@CentOS Packages]# yum install -y tcpdump
     #安装过程省略

tcpdump最简单的使用方法如【示例3-26】所示。

【示例3-26】

以上示例演示了tcpdump最简单的使用方式,如不跟任何参数,tcpdump会从系统接口列表中搜寻编号最小的已配置好的接口,不包括loopback接口,一旦找到第1个符合条件的接口,搜寻马上结束,并将获取的数据包打印出来。

tcpdump利用表达式作为过滤数据包的条件,表达式可以是正则表达式。如果数据包符合表达式,则数据包被截获;如果没有给出任何条件,则接口上所有的信息包将会被截获。

表达式中一般有如下几种关键字:

(1)第1种是关于类型的关键字,如host、net和port。例如host 192.168.16.150指明192.168.16.150为一台主机,而net 192.168.16.150则表示192.168.16.150为一个网络地址。如果没有指定类型,默认的类型是host。

(2)第2种是确定数据包传输方向的关键字,包含src、dst、dst or src和dst and src,这些关键字指明了数据包的传输方向。例如src 192.168.16.150指明数据包中的源地址是192.168.16.150,而dst 192.168.16.150则指明数据包中的目的地址是192.168.16.150。如果没有指明方向关键字,则默认是src or dst关键字。

(3)第3种是协议的关键字,如指明是TCP还是UDP协议。

除了这3种类型的关键字之外,还有3种逻辑运算,非运算是“not”或“!”,与运算是“and”或“&&”,或运算是“or”或“||”。通过这些关键字的组合可以实现复杂强大的条件。接下来看一个组合,如【示例3-27】所示。

【示例3-27】

以上tcpdump表示抓取发往本机3306端口的请求。“-i any”表示截获本机所有网络接口的数据报,“tcp”表示TCP协议,“dst host”表示数据包地址为192.168.19.101,“dst port”表示目的地址为3306,“-XX”表示同时会以十六进制和ASCII码形式打印出每个包的数据,“-s100”表示设置tcpdump的数据包抓取长度为100个字节,如果不设置默认为68字节,“-n”表示不对地址(如主机地址或端口号)进行数字表示到名字表示的转换。输出部分“16:08:05”表示时间,然后是发起请求的源IP端口、目的IP和端口,“Flags[P.]”是TCP包中的标志信息(S是SYN标志,F表示FIN,P表示PUSH,R表示RST,“.”表示没有标记,详细说明可进一步参考TCP各种状态之间的转换规则)。