当系统遇到问题时,有时候会发生,你需要知道如何解决问题并将它们恢复到正常和正常运行状态。在这一部分中,我们着重介绍了任何Linux系统管理员都应具备的基本网络故障排除技能。
网络故障排除的基本理解
在大多数情况下,网络管理员和系统管理员之间存在着很大的鸿沟。缺乏网络可见性的系统管理员通常会责怪网络管理员造成的停机和停机时间,而缺乏足够服务器知识的网络管理员则经常会将端点设备故障归咎于系统管理员。然而,责怪游戏并不能解决问题,在工作环境中,这可能会激化同事之间的关系。
作为系统管理员,具备基本的网络故障排除理解将有助于更快地解决问题,并有助于促进团结的工作环境。正是出于这个原因,我们整理了这一部分,以突出一些在诊断与网络相关的问题时会派上用场的基本网络故障排除提示。
A Recap of the TCP / IP Model
在我们之前关于LFCA系列的话题中,我们看了TCP/IP概念模型,该模型展示了计算机中数据的传输以及每个层中找到的协议。

另一个同样重要的概念模型是OSI模型(开放系统互连)模型。它是一个7层的TCP/IP框架,将网络系统和计算功能分解为每一层。
在OSI模型中,这些功能被分成以下层,从底部开始。物理层、数据链路层、网络层、传输层、会话层、表示层,最后是顶部的应用层。

谈论网络故障排除时不可能不提及OSI模型。因此,我们将带您逐层了解每个层并找出使用的各种网络协议以及如何排除与每个层相关的故障。
第1层:物理层
这可能是最被忽视的层之一,但它是任何通信所需的最重要的层之一。物理层涵盖了计算机的物理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

只需确认您的个人电脑已从路由器或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
默认网关的IP地址,通常是DHCP服务器或路由器,在大多数情况下如下所示。在IP网络中,您应该能够ping通默认网关。

要检查您正在使用的DNS服务器,请在systemd系统上运行以下命令。
$ systemd-resolve --status

A better way to check the DNS servers in use is to run the nmcli command shown
$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

正如您所观察到的,网络故障排除的相当大一部分发生在这里。
第2层:数据链路层
基本上,数据链路层确定网络上的数据格式。这是数据帧在主机之间通信的地方。这一层中的主要协议是ARP(地址解析协议)。
ARP负责发现链路层地址,并执行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
第四层:传输层;
传输层使用TCP和UDP协议处理数据传输。简而言之,TCP是面向连接的协议,而UDP是无连接的。运行应用程序侦听由端口和IP地址组成的套接字。
可能出现的常见问题包括被应用程序所需的TCP端口阻塞。如果您有一个Web服务器,并且想要验证其运行状态,请使用netstat或ss命令检查Web服务是否正在侦听端口80
$ sudo netstat -pnltu | grep 80 OR $ ss -pnltu | grep 80

有时,端口可能被系统中正在运行的服务占用。如果您希望另一个服务使用该端口,可能需要配置它以使用不同的端口。
如果仍然遇到问题,请检查防火墙,并验证您感兴趣的端口是否被阻止。
大多数故障排除将发生在这4个层中。会话、表示和应用层中很少进行故障排除。这是因为它们在网络功能中发挥的作用较少。然而,让我们快速概述一下这些层中发生的情况。
第5层:会话层
会话层打开被称为会话的通信通道,并确保它们在数据传输期间保持打开状态。它还在通信终止后关闭它们。
第6层:表示层
也被称为语法层,表示层合成数据供应用层使用。它详细说明设备应如何加密、编码和压缩数据,以确保数据在另一端被良好接收。
第7层:应用层
最后,我们有应用层,它是最接近最终用户的层,允许他们与应用软件进行交互。应用层富含诸如HTTP、HTTPS、POP3、IMAP、DNS、RDP、SSH、SNMP和NTP等协议。
结论
在排除Linux系统故障时,使用OSI模型的分层方法是极力推荐的,从底层开始。这让您了解出了什么问题,并帮助您缩小问题范围。
Source:
https://www.tecmint.com/basic-network-troubleshooting-tips/