LFCA:学习基本的网络故障排除技巧 - 第 12 部分
当系统遇到问题时(有时会出现),您需要知道如何解决问题并将其恢复到正常和正常运行的状态。在本节中,我们将重点介绍任何 Linux 系统管理员都应具备的基本网络故障排除技能。
对网络故障排除的基本了解
在大多数情况下,网络管理员和系统管理员之间存在很大差距。缺乏网络可见性的系统管理员通常会将中断和停机归咎于网络管理员,而缺乏服务器知识的网络管理员通常会将端点设备故障归咎于系统管理员。然而,这种互相指责无助于解决问题,在工作环境中,这可能会破坏同事之间的关系。
作为系统管理员,对网络故障排除有基本的了解将有助于更快地解决问题并有助于促进有凝聚力的工作环境。正是出于这个原因,我们整理了本节,重点介绍一些基本的网络故障排除技巧,这些技巧在诊断与网络相关的问题时会派上用场。
TCP/IP 模型回顾
在LFCA 系列的先前主题中,我们研究了TCP/IP 概念模型,该模型展示了计算机中的数据传输以及每一层中的协议。
另一个同样重要的概念模型是OSI 模型(开放系统互连)。它是一个 7 层 TCP/IP 框架,将网络系统分解开来,计算功能则作为每一层。
在OSI模型中,这些功能从底层开始分为以下几层:物理层、数据链路层、网络层、传输层、会话层、表示层,最后是最顶层的应用层。
如果不参考 OSI 模型,就无法谈论网络故障排除。因此,我们将带您了解每一层,并找出所使用的各种网络协议以及如何排除与每一层相关的故障。
第 1 层:物理层
这可能是最容易被忽视的层之一,但它是任何通信所需的最基本层之一。物理层包括 PC 的物理 PC 网络组件,如网卡、以太网电缆、光纤等。大多数问题都始于此处,主要由以下原因引起:
- 拔下网络/以太网电缆
- 网络/以太网电缆损坏
- 网卡缺失或损坏
在这一层,我想到的问题是:
- “网线插好了吗?”
- “物理网络连接正常吗?”
- “您有 IP 地址吗?”
- “您能 ping 通您的默认网关 IP 吗?”
- “您能 ping 通您的 DNS 服务器吗?”
要检查网络接口的状态,请运行ip 命令:
$ ip link show
从上面的输出中,我们有 2 个接口。第一个接口 –lo
是环回地址,通常不使用。提供与网络和互联网连接的活动网络接口是接口enp0s3
。从输出中我们可以看到接口的状态为UP。
如果网络接口关闭,您将看到状态 DOWN输出。
如果是这种情况,您可以使用以下命令启动接口:
$ sudo ip link set enp0s3 up
或者,您可以运行下面显示的ifconfig 命令。
$ sudo ifconfig enp0s3 up $ ip link show
为了确认您的 PC 已从路由器或 DHCP 服务器获取 IP 地址,请运行ifconfig 命令。
$ ifconfig
IPv4地址以 inet 参数作为前缀,如下所示。例如,本系统的 IP 地址为192.168.2.104,子网或网络掩码为255.255.255.0。
$ ifconfig
或者,您可以运行如下ip address命令来检查系统的 IP 地址。
$ ip address
要检查默认网关的 IP 地址,请运行以下命令:
$ ip route | grep default
默认网关(大多数情况下是 DHCP 服务器或路由器)的 IP 地址如下所示。在 IP 网络中,您应该能够 ping 通默认网关。
要检查您正在使用的 DNS 服务器,请在 systemd 系统上运行以下命令。
$ systemd-resolve --status
检查正在使用的 DNS 服务器的更好方法是运行nmcli命令
$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
正如您所观察到的,相当大量的网络故障排除都发生在这里。
第 2 层:数据链路层
本质上,数据链路层决定了网络上的数据格式。主机之间的数据帧通信就发生在这里。此层的主要协议是 AR P(地址解析协议)。
ARP负责发现链路层地址,并将第 3 层的 IPv4 地址映射到 MAC 地址。通常,当主机联系默认网关时,很可能已经拥有主机的 IP,但没有 MAC 地址。
ARP协议通过将第3 层的 32 位 IPv4 地址转换为第 2 层的 48 位 MAC 地址(反之亦然)来弥合第 3 层和第 2 层之间的差距。
当 PC 加入 LAN 网络时,路由器(默认网关)会为其分配一个 IP 地址,以便识别。当另一台主机向默认网关发送发往 PC 的数据包时,路由器会请求ARP来查找与 IP 地址对应的 MAC 地址。
每个系统都有自己的ARP表。要检查您的 ARP 表,请运行以下命令:
$ ip neighbor show
您可以注意到,路由器的 MAC 地址已填充。如果存在解析问题,则该命令不会返回任何输出。
第 3 层:网络/互联网层
这是您专门处理系统管理员熟悉的IPv4地址的层。它提供多种协议,例如我们已经介绍过的ICMP和ARP ,以及RIP(路由信息协议)等其他协议。
一些常见问题包括设备配置错误或路由器和交换机等网络设备出现问题。开始故障排除的一个好方法是检查您的系统是否已按如下方式选择 IP 地址:
$ ifconfig
此外,您还可以使用ping 命令通过向 Google 的 DNS发送ICMP回显数据包来检查互联网连接。-c
标志表示发送的数据包数量。
$ ping 8.8.8.8 -c 4
输出显示 Google DNS 的肯定答复,数据包丢失为零。如果您的连接是间歇性的,则可以使用traceroute 命令检查数据包丢失的位置,如下所示。
$ traceroute google.com
星号表示数据包被丢弃或丢失的点。
nslookup命令查询 DNS 以获取与域或主机名关联的 IP 地址。这称为正向 DNS 查找。
例如。
$ nslookup google.com
该命令显示与 google.com 域关联的 IP 地址。
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: google.com Address: 142.250.192.14 Name: google.com Address: 2404:6800:4009:828::200e
dig 命令是另一个用于查询与域名关联的 DNS 服务器的命令。例如,要查询 DNS 名称服务器,请运行:
$ dig google.com
第 4 层:传输层
传输层使用TCP和UDP协议处理数据传输。简单回顾一下,TCP是一种面向连接的协议,而 UDP 是无连接的。正在运行的应用程序监听由端口和 IP 地址组成的套接字。
可能出现的常见问题包括应用程序可能需要的 TCP 端口被阻止。如果您有 Web 服务器并且想要验证其运行状态,请使用 netstat或ss命令检查 Web 服务是否正在监听端口 80
$ sudo netstat -pnltu | grep 80 OR $ ss -pnltu | grep 80
有时系统中正在运行的服务可能会占用某个端口。如果您希望其他服务使用该端口,则可能被迫将其配置为使用其他端口。
如果仍然遇到问题,请检查防火墙并验证您感兴趣的端口是否被阻止。
大多数故障排除将发生在这 4 个层上。会话层、表示层和应用层中很少进行故障排除。这是因为它们在网络运行中的作用不太活跃。但是,让我们快速概述一下这些层中发生的情况。
第 5 层:会话层
会话层打开称为会话的通信通道,并确保它们在数据传输期间保持打开状态。一旦通信终止,它也会关闭。
第六层:表示层
表示层又称为语法层,负责合成数据以供应用层使用。它详细说明了设备应如何加密、编码和压缩数据,以确保另一端能够顺利接收数据。
第 7 层:应用层
最后,我们有应用层,它最接近最终用户,并允许他们与应用软件交互。应用层包含丰富的协议,例如 HTTP、HTTPS、POP3、IMAP、DNS、RDP、SSH、SNMP 和 NTP 等。
结论
在排除 Linux 系统故障时,强烈建议使用 OSI 模型的分层方法,从底层开始。这可以让您了解问题所在,并帮助您缩小问题范围。