一、查看以及测试网络

查看及测试网络配置是管理Linux网络服务的第一步,本节将学习Linux系统中的网络查看以及测试命令。其中讲解的大多数命令以普通用户权限就可以完成操作,但是普通用户在执行“/Sbin/”目录下的命令时需要指定命令文件的绝对路径。

(一)查看网络配置

  1. 使用ifconfig命令-查看网络接口地址

    主机的网络接口卡(网卡)通常称为“网络接口”。在Linux系统中,使用ifconfig命令可以查看网络接口的地址配置信息。

  • 查看活动的网络接口设备

    当ifconfig命令不带任何参数和选项时,将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行ifconfig命令后可以看到eth0、lo这两个网络接口信息。(以下截图均在Red hat Enterprise Linux 7上执行,与其他版本略有不同)

Linux 基础网络设置_第1张图片

在上述输出结果中,eno16777736对应为第一块物理网卡,lo对应为虚拟的回环接口。virbro为虚拟网卡。

  • eno16777736:第一块以太网的名称。

  • lo:“回环”网络接口,“lo”是“loopback”的缩写,它并不代表真正的网络接口,而是一个虚拟的网络接口,其IP地址默认是“127.0.0.1”。回环地址通常是仅用于对本机的网络测试。

  • virbr0:“virbr0”为虚拟网卡。

  • 查看指定的网络接口信息

当只需要查看其中的某一个网络接口信息的信息时,可以使用网络接口的名称作为ifconfig命令的参数(不论该网卡是否处于激活状态)。例如,执行“ifconfig eno16777736”命令后可以只查看网卡eno16777736的配置信息。

wKiom1TujviipUgcAAG8fArGU1U899.jpg从上述命令显示的结果中,可以获知eno16777736网卡的一些基本信息,如下所述。

  • ether:表示网络接口的物理地址(MAC地址),如“00:0c:29:11:47:04”。网络接口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。

  • Inet:表示网络接口的IP地址,如“192.168.239.128”。

  • broadcas:表示网络接口所在的广播地址,如“192.168.239.255”。

  • netmask:表示网络接口的子网掩码,如“255.255.255.0”。

除此之外,还能通过“TX”、“RX”等信息了解通过该网络接口发送和接收的数据包个数、流量等更多属性。

2.使用hostname命令-查看主机名称

在Linux系统中,相当一部分网络服务都是通过主机名来识别本机,如果主机名配置不当,可能会导致程序功能出现故障。使用hostname命令可以查看当前主机的主机名,不用添加任何的选项或参数。

wKioL1TulBODQMmeAABIYazPlVM849.jpg3.使用route命令-查看路由条目表

Linux系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。直接执行route命令可以查看当前主机中的路由表信息,在输出的结果中,Destination列对应目标网段的地址,Gateway列对应下一跳路由器的地址,iface列对应发送数据的网络接口。

wKioL1TulSLD5laNAAEBYnBLZOo034.jpg当目标网段为“default”时,表示此行是默认网关记录;当下一跳为*时,表示目标网段与本机是直接相连的。

若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表中条目比较多的情况下能够加快执行速度。例如,执行“route-n”命令后输出信息中的*地址将显示为“0.0.0.0”,默认网关记录中的“default”也将显示为“0.0.0.0”。

wKiom1Tuli7yciVXAAEXNVetlwI278.jpg4.使用netstat命令-查看网络连接情况

通过使用netstat命令可以查看当前系统的网络连接状态、路由表、接口统计等信息,是了解网络状态及排除网络服务故障的有效工具。以下是netstat命令常用的几个选项。

  • -a:显示当前主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)

  • -n:以数字形式显示相关的主机地址、端口等信息。

  • -r:显示路由表信息。

  • -l:显示处于监听(listening)状态的网络连接及端口信息。

  • -t:查看TCP协议相关的信息。

  • -u:显示UDP协议相关的信息。

  • -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)。

    通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的TCP连接信息。同时显示对应的进程信息。结合命令管理管道使用“grep”命令,还可以在结果中过滤所需要的特定记录。例如,执行以下命令操作可以查看本机中是否有监听“TCP 22”端口(即SSH)的服务程序,输出信息中包括PID号和进程名称。

wKioL1TungTSxPgPAACn81Secjg958.jpg(二)测试网络连接

  1. 使用ping命令-测试网络的连通性

使用ping命令可以向目的主机持续的发送测试数据包,并显示反馈结果,知道按Ctrl+C组合键中止测试,并显示最终统计结果。例如,以下操作将测试从本机到另一台主机192.168.195.112的连通性测试,连接正常时会收到返回的数据包。

Linux 基础网络设置_第2张图片执行ping测试命令时,若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在的网络连通性故障。例如,若看到“Destination Host Unreachable”反馈信息,则表示目的主机不可达,可能目标地址不存在或主机已经关闭;若看到“Network is unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法到达目标主机所在的网络。

当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络***等)时,使用ping命令测试时可能会频繁看到“Request timeout”的反馈结果,表示与目标主机间的连接超时(数据包响应缓慢或丢失)。除此之外,当目标主机中有严格的防火墙限制时,可能收到发回“Request timeout”的反馈结果。

2.使用traceroute命令-跟踪数据包的路由途径

使用traceroute命令可以测试从当前主机到目的主机之间经过了哪些网络节点,并显示各中间节点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”。例如,通过以下操作结果可以看出,从本机到目标主机192.168.195.之间,中间需跨越一个路由器


traceroute命令能够比ping命令更加准确的定位网络连接的故障点(中断点),执行速度也因此会比ping命令稍慢。在网络测试与排错过程中,通常会先使用ping命令测试与目的主机的网络连接,如果发现网络连接有故障,在使用traceroute命令跟踪查看是在哪个中间点存在故障的。