Linux 系统 在使用过程中,可能会遇到各种网络问题。例如不能通过 SSH 连接到其他计算机、 IP 表出现问题或无法访问网站。
遇到这种情况,我们可以尝试通过应用 OSI 模型来排除网络故障。通过使用基于开放系统互连 (OSI) 架构的自下而上的方法,我们将揭示网络故障排查的方法,为大家提供有效解决各种网络困难所必需的知识和工具。
1] 什么是 OSI 模型(Open Systems Interconnection)
开放系统互连 (OSI) 模型是一个概念框架,将网络通信的功能分为七个不同的级别。简而言之,OSI 标准化了各种计算机系统如何相互通信。
OSI 层级 | 典型功能应用 |
---|---|
7.应用层 |
|
6.表示层 |
|
5.会话层 |
|
4.传输层 |
|
3.网络层 |
|
2.数据链路层 |
|
1.物理层 |
|
表.1 OSI 七层模型
2] 应用 OSI 模型进行故障排查
假设以下情况,现有一台托管的网站不能正常工作,服务器使用 Linux 作为操作系统。很显然,为分而治之是一种更为有效的故障排查方法。
OSI 模型恰好是一种有效分解问题的方法,这样我们就可以有条不紊地简化环境,以达到最终解决问题的目的。
物理层
在排查问题时,通常最好从底层开始,因为 OSI 模型的规则是下层为上层应用提供服务。物理层是 OSI 模型中的最底层,此层中的关键组件包括以太网电缆、集线器和交换机。在此级别,我们应该检查电源和设备状态,以及检查接口统计信息。
- “ifconfig”工具提供了系统中所有以太网卡的详细信息
- 使用”ip link show “命令可以显示物理接口的状态,如果结果显示”down”,则表示物理接口未运行
- 如果网络接口默认情况下未激活,需要手动启用,则使用”ip link set eth0 up”将接口启用
- 如果想要获得更为详细的信息,可以安装使用”ethtool”工具
数据链路层
数据链路层支持连接到同一网络的两个设备之间的数据传输。此层有两个组件,第一个组件是介质访问控制 (MAC) 层,包括硬件寻址和访问控制操作。第二个组件是逻辑链路层,支持在不同介质之间创建逻辑连接。
此层的一个常见问题是两个服务器无法建立连接。可以使用 ping、traceroute、arp、macof 和 Wireshark 等工具来测试数据链路层。这有助于验证同一网络组内设备之间数据帧的正确传输和接收。
网络层
网络层的作用是使数据在两个网络之间轻松传输。在 OSI 模型第 3 层工作的网络设备是路由器。路由器的主要工作是使网络更容易相互通信,使用 IP 地址是此层的一部分。
如果此阶段出现问题,我们主要应该查找 IP 地址问题。可以通过命令”ip -br address show”来查看网络接口是否已分配 IP 地址。如果主机是使用 DHCP 获取动态 IP 地址,则可能无法从 DHCP 服务器获取 IP 地址。
还经常出现的一个问题是缺少上游网关或缺少默认路由。当 IP 数据包传输到不同的网络时,需要将数据发送至网关进行转发处理。
了解数据包到其最终目的地的路由对于网关至关重要,路由表包含各种路由的网关列表,可以使用”ip route”命令进行网络路由管理。我们还可以通过向网关或网关之外的其它网关发送 ping 来检查其连通性。
传输层
传输层使用传输控制协议 (TCP) 和用户数据报协议 (UDP) 等协议来控制系统之间的网络流量并确保数据有效流动。
传输层负责发送数据包、查找错误、控制数据流并按正确顺序排列它们。如果这一层遇到问题,例如端口未侦听,就不无建立连接。假如服务端口已被使用,我们的服务就可能无法启动。可以通过运行”netstat -antlp | grep LISTEN”来查看哪些端口已打开。
如果我们的本地系统无法与远程端口建立连接,特别是端口 80 上的 HTTP。则可以使用 telnet 命令尝试与指定的主机和端口创建 TCP 连接,此功能非常适合进行远程 TCP 连接测试。
如果要检查远程 UDP 端口,则可以使用”netcat”实用程序。
会话层
这一层负责促进两个设备之间通信的启动和终止(例如:身份验证)。启动和终止通信的时间段称为会话。
在这一层出现故障,应该检查服务器的凭据、证书、会话 ID 和客户端的 cookie 等。
表示层
OSI 模型的表示层负责格式化和转换数据,以便将其呈现给用户。
SSL 或 TLS 加密方法是此层的关键部分。出现问题时,我们可以考虑数据的加密和解密问题。
应用层
系统从用户那里获取输入并将输出传回给用户,各种应用协议的使用让故障需要定位到应用本身。
我们应该验证服务器上的配置文件是否存在任何错误设置。此外,查看服务器上的日志文件以获取有关问题的更多详细信息也很重要。
常用的应用层协议包括:
- File Transfer Protocol (FTP)
- Simple Mail Transfer Protocol (SMTP)
- Secure Shell (SSH)
- Internet Message Access Protocol (IMAP)
- Domain Name Service (DNS)
- Hypertext Transfer Protocol (HTTP)
在 Linux 中排除网络问题可能是一项艰巨的任务,但通过应用 OSI 模型的原理,我们可以更高效、系统地诊断和解决问题。
从物理层开始,我们首先检查硬件组件,使用 ifconfig 和 ip link show 等工具来验证连接性。在数据链路层,我们专注于 MAC 地址,并使用 ping 和 Wireshark 等实用程序进行测试。在网络层,我们深入研究了 IP 寻址和路由,使用 ip route 和 ping 等命令来诊断问题。过渡到传输层,我们解决了 TCP 和 UDP 相关问题,利用 netstat 和 telnet 等命令来检查开放端口并建立连接。同时,我们需要关注会话管理和加密在会话层和表示层的重要性。最后,在应用层,我们研究了 FTP、SMTP、SSH 和 HTTP 等特定协议,强调了配置文件和日志分析在解决问题中的重要性。