1.1 查看及测试网络
查看及测试网络配置是管理Linux网络服务的第一步,本节将学习Linux操作系统中的
网络查看及测试命令。其中讲解的大多数命令以普通用户权限就可以完成操作,但普通用户
在执行/sbin/目录中的命令时需要指定命令文件的绝对路径。
1.1.1 查看网络配置
1. 查看网络接口地址
主机的网络接口卡(网卡)通常称为网络接口。在Linux操作系统中,使用ifconfig 命令可以查看网络接口的地址配置信息(Interface Configuration)。
(1)查看活动的网络接口设备
若采用mini版CentOS 7安装的系统,默认是没有ifconfig命令的,需要先通过yum
方式安装net-tools软件包,才有ifconfig命令。在不带任何选项和参数执行ifconfig命令时,
将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行ifconfig命令后可以看
到ens33、lo这两个网络接口的信息,具体操作如下:
在上述输出结果中,ens33对应为第一块物理网卡,lo对应为虚拟的回环接口。
> ens33:第一块以太网卡的名称。“ens33”中的“en”是“EtherNet”的缩写,表示网卡类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号。由此可以得知,从CentOS 7开始,使用基于固件、硬件拓扑和设备位置信息分配的一致网络设备命名(Consistent Network Naming)。因为一致的网络设备名是基于系统硬件的,所以在不同的操作系统上,网络接口名称可能不同。
>lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一
个虚拟的网络接口,其IP地址默认是“127.0.0.1”。回环地址通常仅用于对本
机的网络测试。
(2)查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为ifconfig 命
令的参数(不论该网络接口是否处于激活状态)。例如,执行“ifconfig ens33”命令后可以
只查看网卡ens33的配置信息,具体操作如下:
inet | 表示网络接口的IP地址,如“192.168.4.11”。 |
netmask | 表示网络接口的子网掩码,如“255.255.255.0”。 |
broadcast | 表示网络接口所在网络的广播地址,如“192.168.4.255”。 |
ether | 表示网络接口的物理地址(MAC地址),如“00:0c:29:3a:81:cc”。网络接口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。 |
2. 查看主机名称
3. 查看路由条目
Linux系统中的路由表决定着从本机向其它主机,其他网络发送数据的去向是排除网络故障的关键信息。直接执行“route”命令可以查看当前主机中的路由表信息,在输出结果中Destination列对应目标网段的地址,Gateway列对应下一跳路由器的地址,Iface列对应的是发送数据的网络接口。
当目标网段为“default”时,表示此行是默认网关记录;当下一跳为“gateway”时,表示目标网段是与本机直接相连的。但是,直接执行“route”命令无法直接看出默认网关地址。若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度。例如,执行“route-n”命令后,输出信息中的“gateway”地址将显示为“192.168.4.1”,默认网关记录中的“default”也将显示为“0.0.0.0”,具体操作如下:
4. 查看网络连接情况
通过netstat命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息,
它是了解网络状态及排除网络服务故障的有效工具。以下是netstat命令常用的几个选项。
> -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
> -n:以数字的形式显示相关的主机地址、端口等信息。
> -r:显示路由表信息。
> -l:显示处于监听(Listening)状态的网络连接及端口信息。
> -t:查看TCP(Transmission Control Protocol,传输控制协议)相关的信息。
> -u:显示UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。
> -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)。
通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的TCP连接信息,同时显
示对应的进程信息。结合管道命令使用“grep”命令,还可以在结果中过滤出所需要的特定记录。例如,执行以下操作可以查看本机中是否有监听“TCP 80”端口(即标准Web服务)的服务程序,输出信息中包括PID号和进程名称。
除了netstat,ss命令也可以查看网络连接情况,它是Socket Statistics的缩写,主要
用于获取socket统计信息,它可以显示和netstat命令类似的输出内容。但ss的优势在于
它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。要想
使用ss命令,首先确保iproute程序包已被安装,可以通过yum方式进行安装。
以下是ss命令常用的几个选项。
>-h :-- help 通过该选项获取更多的使用帮助。
>-V :-- version 显示软件的版本号。
>-t :-- tcp 显示TCP协议的sockets。
>-u :-- udp 显示UDP协议的sockets。
> -n :-- numeric 不解析服务的名称,如“22”端口不会显示成"ssh"。
>-l :-- listening 只显示处于监听状态的端口。
> -p :-- processes 显示监听端口的进程。
>-a :-- all 对TCP协议来说,既包含监听的端口,也包含建立的连接。
>-r :-- resolve 把IP解释为域名,把端口号解释为协议名称。
Ss命令的输出结果,可以提供TCP和UDP的socket信息,以及各种服务建立的持久连结,熟悉这个命令有助于更好的发现与解决系统性能问题。例如,执行以下操作可以显示TCP协议下已经建立的连接,“Local Address:Port”表示本地监听的IP和端口,“PeerAddress:Port”表示远端连接的IP和端口,具体ss的操作命令如下。