LFCA:学习基本的网络故障排除技巧 – 第 12 部分

當系統遇到問題時,有時候會發生,你需要知道如何處理問題並將其恢復到正常運行狀態。在這一部分中,我們專注於任何Linux系統管理員都應該具備的基本網絡故障排除技能。

網絡故障排除的基本理解

在大多數情況下,網絡管理員和系統管理員之間存在著很大的鴻溝。缺乏網絡可見性的系統管理員通常會將網絡管理員歸咎於中斷和停機,而網絡管理員則對於伺服器知識不足的情況下通常會將端點設備故障歸咎於系統管理員。然而,相互推卸責任並不能幫助解決問題,在工作環境中,這可能會損害同事之間的關係。

作為系統管理員,具備基本的網絡故障排除理解將有助於更快地解決問題並促進協調一致的工作環境。正是基於這個原因,我們匯集了這一部分來突出一些在診斷與網絡相關的問題時會派上用場的基本網絡故障排除技巧。

A Recap of the TCP / IP Model

在我們之前的話題中LFCA系列,我們看過TCP/IP概念模型,展示了電腦中數據的傳輸以及每一層中發現的協議。

TCP/IP Layer Model

另一個同樣重要的概念模型是OSI模型開放系統互連)模型。這是一個7層的TCP/IP框架,將網絡系統和計算功能分解為每一層。

OSI模型中,這些功能從底部開始分為以下層。物理層、數據鏈路層、網絡層、傳輸層、會話層。表示層,最後是位於頂部的應用層。

OSI Model

談論網絡故障排除時不可能不提及OSI模型。因此,我們將帶您了解每一層,找出使用的各種網絡協議以及如何排除與每一層相關的故障。

第1層:物理層

這可能是最容易被忽視的層之一,但它是進行任何通信所必需的最重要的層之一。物理層包括PC的物理網絡組件,如網絡卡、乙太網纜、光纖等。大多數問題都始於這裡,並且大多數情況是由以下原因引起的:

  • 未插上網路/乙太網線
  • 損壞的網路/乙太網線
  • 遺失或損壞的網路卡

在這一層,浮現的問題包括:

  • “網路線是否已插好?”
  • “物理網路連線是否正常?”
  • “您是否擁有 IP 位址?”
  • “您能否 ping 通預設閘道 IP?”
  • “您能否 ping 通 DNS 伺服器?”

要檢查您的網路介面狀態,執行ip 指令

$ ip link show
Check Network Interface Status

從上述輸出中,我們有 2 個介面。第一個介面 – lo – 是迴圈地址,通常不會使用。提供網路和網際網路連線的活躍網路介面是 enp0s3 介面。從輸出中我們可以看到介面的狀態是UP

如果一個網路介面是關閉的,您將看到狀態 DOWN的輸出。

Network Interface Down

如果是這種情況,您可以使用以下指令啟動介面:

$ sudo ip link set enp0s3 up
Active Network Interface

或者,您可以執行下面顯示的ifconfig 指令

$ sudo ifconfig enp0s3 up
$ ip link show
Enable Network Interface

确认您的电脑已从路由器或DHCP服务器中获取了IP地址,请运行ifconfig命令

$ ifconfig
Check Server IP Address

IPv4地址以inet参数作为前缀显示。例如,此系统的IP地址为192.168.2.104,子网掩码为255.255.255.0

$ ifconfig
Check Server IP Address

或者,您可以运行以下命令检查系统的IP地址:ip address

$ ip address

要检查默认网关的IP地址,请运行以下命令:

$ ip route | grep default

默认网关的IP地址,在大多数情况下是DHCP服务器或路由器,如下所示。在IP网络中,您应该能够ping通默认网关。

Check Network Gateway

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

$ systemd-resolve --status
Check DNS Servers

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
Check DNS Using nmcli Command

正如您所观察到的,相当大一部分网络故障排除发生在这里。

第2层:数据链路层

基本上,数据链路层确定了网络上的数据格式。这是主机之间数据帧通信发生的地方。在此层中,主要的协议是ARP地址解析协议)。

ARP负责发现链路层地址,并执行将第3层的IPv4地址映射到MAC地址。通常,当主机联系默认网关时,它可能已经拥有主机的IP,但没有MAC地址。

ARP 協議通過將第 3 層的 32 位元 IPv4 位址轉換為第 2 層的 48 位元 MAC 位址,以及反之,來彌合第 3 層和第 2 層之間的差距。

當一台個人電腦加入區域網路時,路由器(預設閘道)會為其分配一個 IP 位址以供識別。當另一台主機發送一個發送到該個人電腦的資料封包給預設閘道時,路由器會請求ARP尋找與該 IP 位址相對應的 MAC 位址。

每個系統都有自己的ARP表。要檢查您的 ARP 表,執行以下命令:

$ ip neighbor show
Check Network ARP Table

正如您所見,路由器的 MAC 位址已填入。如果存在解析問題,該命令將不返回任何輸出。

第 3 層:網路 / 互聯網層

這是您專門使用的層,其中包含系統管理員熟悉的IPv4位址。它提供多個協議,如ICMPARP,我們已經介紹過,以及其他協議,如RIP路由信息協議)。

一些常見問題包括設備配置錯誤或路由器和交換機等網路設備的問題。開始進行故障排除的一個好方法是檢查您的系統是否選擇了一個 IP 位址,如下所示:

$ ifconfig
Check Server IP Address

此外,您可以使用 ping 命令 通过向 Google 的 DNS 发送一个 ICMP 回显数据包来检查互联网连接。 -c 标志表示发送的数据包数量。

$ ping 8.8.8.8 -c 4
Check Network Activity

输出显示从 Google 的 DNS 收到了积极的回复,没有数据包丢失。如果您遇到间歇性连接问题,可以使用 traceroute 命令 来查看数据包在哪个节点被丢弃。

$ traceroute google.com
Trace Network Activity

星号表示数据包被丢弃或丢失的节点。

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
Check Network Ports Status

有時候一個端口可能被系統中運行的服務使用。如果您希望另一個服務使用該端口,您可能需要配置它使用不同的端口。

如果您仍然遇到問題,請檢查防火牆並驗證您感興趣的端口是否被阻止。

大多數故障排除將發生在這4個層級之間。在會話、表示和應用層中很少進行故障排除。這是因為它們在網絡運作中扮演的角色不太活躍。不過,讓我們快速概述一下這些層級中發生的情況。

第5層:會話層

會話層打開被稱為會話的通信通道,並確保它們在數據傳輸期間保持打開。它還在通信終止時關閉它們。

第6層:表示層

也被稱為語法層,表示層將數據合成為應用層使用。它詳細說明設備應如何加密、編碼和壓縮數據,以確保在另一端接收到時能夠正確接收。

第7層:應用層

最後,我們有應用層,它是最接近最終用戶的層,使他們能夠與應用軟件互動。應用層充滿了諸如HTTP、HTTPS、POP3、IMAP、DNS、RDP、SSH、SNMP和NTP等協議。

結論

在排除Linux系統問題時,使用OSI模型的分層方法是非常推薦的,從底層開始。這讓您了解出了什麼問題,並幫助您縮小問題範圍。

Source:
https://www.tecmint.com/basic-network-troubleshooting-tips/