首頁 > 系統教程 > Linux > 主體

追蹤網路路由的奧秘,Linux路由偵測技巧大揭秘!

王林
發布: 2024-02-13 22:27:18
轉載
424 人瀏覽過

身為Linux管理員,你是否曾經遇到過網路連線不良、延遲高等問題?你是否曾經想要深入了解網路路由追蹤和偵測技巧,以更好地排除問題?如果是,那你一定需要學習Linux下的路由偵測技巧!在本文中,我們將會詳細介紹如何使用Linux命令列工具快速便捷地進行路由追蹤與偵測。

追蹤網路路由的奧秘,Linux路由偵測技巧大揭秘!

linux 查看網路路由

連接到網路的每台電腦在離開本機時都需要針對網路TCP / IP封包的某種路由說明。這通常非常簡單,因為大多數網路環境都非常簡單,而且離開資料包只有兩種選擇。所有資料包都會傳送到本地網路上的裝置或其他遠端網路。

確保將「本地」網路定義為本地主機所在的邏輯網絡,通常也定義為實體網路。從邏輯上講,這是指在其中為主機分配了本地子網路IP位址範圍之一的本機子網路。從實體上講,這意味著主機已連接到一台或多台交換機,這些交換機也已連接到本地網路的其餘部分。

TCP / IP網路模型

在進行路由選擇之前,先了解一些關於資料包如何找到通往網路上正確主機的方式的協助。 TCP / IP 網路模型定義了一個五層堆疊,該堆疊描述了將封包從一台主機移動到另一台主機所必需的機制,無論該主機是在本地網路上還是在世界範圍內。在此模型的以下描述中,每個層都有編號,並且還包含該層處理的資料單元的名稱。

5.應用程式層:訊息該層包括各種網路應用程式進行通訊所需的連接協議,例如HTTP,DHCP,SSH,FTP,SMTP,IMAP等。當您從遠端網站請求網頁時,連線請求將會傳送到網路伺服器,回應會傳送回該圖層的主機,然後瀏覽器會在其視窗中顯示該網頁。

4.傳輸層:TCP段。傳輸層提供端對端資料傳輸和串流管理服務,這些服務與資料和所傳輸協定的類型無關。它使用連接埠80(例如HTTP)和25(SMTP)在發送主機和遠端主機之間建立連線。

\3. Internet層:封包。資料包路由在Internet層上執行。此層負責在兩個或多個不同的網路上路由資料包,以到達其最終目的地。此層使用IP位址和路由表來確定將封包傳送到下一個設備。如果傳送到路由器,則每個路由器僅負責將封包傳送到該系列中的下一個路由器,而不負責對應從本機主機到目標主機的整個路由。 Internet層主要是關於路由器與路由器進行對話,以確定連結中的下一個路由器。

2.資料鏈結層:框架。鏈路層管理單一本地邏輯邏輯網路上硬體主機之間的直接連接。此層使用嵌入在網路介面卡(NIC)中的媒體存取控制(M AC ) 位址來識別連接到本機網路的實體設備。此層無法存取不在本機網路上的主機。

1.物理層:位。這是硬體層,由NIC和實體乙太網路電纜以及用於在構成任何兩個主機或本地連接的其他網路節點之間傳輸構成資料幀的各個位元的硬體層級協定組成。

一個簡單的例子

#那麼,當主機實際上使用TCP / IP網路模型在網路上發送資料時,會是什麼樣子?這是我對資料如何從一個網路移動到另一個網路的完整描述。在此範例中,我的電腦正在向遠端伺服器發送網頁請求。

在應用程式層上,瀏覽器會向遠端主機www.example.com發起HTTP連線請求訊息,以傳送回包含網頁內容的資料。這是訊息,它僅包含遠端Web伺服器的IP位址。

傳輸層將包含網頁要求的訊息封裝在以遠端Web伺服器的IP位址作為目標的TCP資料封包中。現在,該資料包與原始請求資料包一起包括發出請求的來源端口,通常是一個非常大的隨機端口,以便返回資料知道瀏覽器正在偵聽哪個端口。以及遠端主機上的目標連接埠(在這種情況下為連接埠80)。

Internet層將TCP資料封包封裝在一個套件中,該套件還包含來源IP位址和目標IP位址。

資料鏈結層使用位址解析協定(ARP)來標識預設路由器的實體MAC位址,並將Internet封包封裝在包含來源MAC位址和目標MAC位址的訊框中。

幀透過電線(通常是CAT5或CAT6)從本機上的NIC傳送到預設路由器上的NIC。

預設路由器開啟資料封包並確定目標IP位址。路由器使用自己的路由表來標識將把該訊框帶入下一步的下一台路由器的IP位址。然後,路由器將訊框重新封裝到新的資料封包中,該封包包含其自己的MAC作為來源以及下一個路由器的MAC位址,然後透過適當的介面將其傳送。路由器在第3層(Internet層)執行其路由任務。

請注意,對於第二層及第二層以上的所有協定而言,開關是不可見的,因此它們不會以任何邏輯方式影響資料的傳輸。交換器的功能只是提供一種簡單的方法,即透過乙太網路電纜的長度將多個主機連接到單一實體網路。

您可以使用arp [-n]指令查看主機已在其arp表中儲存的所有MAC位址。這些始終是本機網路上的主機。

路由表

所有網路設備,無論它們是主機,路由器還是其他類型的網路節點,例如網路連接的印表機,都需要決定將TCP / IP封包路由到何處。路由表提供了做出這些決定所需的設定資訊。與圖1中非常簡單的路由表類似,此路由表用於定義典型本地主機可用的單一路由,並確定是否將封包傳送到預設閘道路由器。 。 route -n指令列出了路由表; -n選項僅將結果顯示為IP位址,並且不嘗試執行DNS查找,該DNS查找將使用主機名稱取代IP位址(如果可用)。使用netstat – R N指令產生的結果非常相似。

[root@host1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 eno1
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1
登入後複製

圖1:一個簡單的路由表。

使用-n選項時,預設閘道始終與目標0.0.0.0一起顯示。如果未使用-n,則單字「 Default」出現在輸出的Destination列中。網關列中的IP位址是出站閘道路由器的IP位址。預設閘道的網路遮罩為0.0.0.0表示,無論網路類別為何,路由表中未透過附加條目尋址至本機網路或另一個出站路由器的任何資料包都會傳送至預設閘道。

圖1中的Iface(介面)欄位是出站NIC的名稱,在本例中為eno1。對於充當路由器的主機,可能至少會使用兩個,有時還會使用更多的NIC。每個用作路由的NIC將連接到不同的實體和邏輯網路。 「標誌」欄位中的標誌指示該路由為Up(U),這是預設閘道(G)。其他標誌也可能出現。

對於大多數主機而言,路由決策非常簡單:

如果目標主機在本機網路上,則將資料直接傳送到目標主機。
如果目標主機位於透過路由表中列出的本機閘道可存取的遠端網路上,請將其傳送至明確定義的閘道。
如果目標主機位於遠端網路上,且沒有其他條目定義到該主機的路由,則將資料傳送至預設閘道。
這些規則只是意味著,如果由於不匹配而導致所有其他操作失敗,則將資料包發送到預設網關。

下面的圖2中的路由表稍微複雜一點,因為它屬於Linux主機,充當連接到三個網路的路由器,其中一個網路通往Internet。本地C類網路(介面eth1上的192.168.0.0/24、eth2上的192.168.25.0/24)在表中都有條目,以及在eth0上通往世界其他地區的預設路由。

[root@host2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.24    0.0.0.0         255.255.255.252 U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.25.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         192.168.1.25    0.0.0.0         UG    0      0        0 eth0
登入後複製

圖2:具有多個網路的更複雜的路由表。

請注意,仍然只有一個預設網關,它位於介面eth0上。但是,除了直接指向路由器的LAN端IP位址的預設路由條目外,整個192.168.1.24/30網路也存在一個條目。此網路僅包含兩個可用的IP位址,一個用於路由器LAN端,一個192.168.1.25/30,一個用於主機本身,一個192.168.1.26/30。

路由設定

那麼如何設定路由表?對於使用DHCP連接到網路的主機,DHCP伺服器提供此預設路由的設定資訊以及DNS,主機IP位址以及可能的其他資訊(例如NTP伺服器的IP位址)。對於靜態配置,它通常很簡單,但有時可能會有些複雜。

在大多數情況下,將預設路由新增至/ etc / sysconfig / network檔案會導致網路在路由表中設定預設路由。該條目類似於圖3中的範例。

GATEWAY=192.168.0.1
登入後複製

圖3:網路檔案中的網關條目。

使用網路檔案只能設定預設閘道。

在靜態設定的環境中設定預設閘道的另一種方法是將其新增至/ etc / sysconfig / network-scripts目錄中的對應介面設定檔中。若要將網關新增至介面eth0的介面設定檔中,請將與上面圖3相同的行新增至ifcfg-eth0檔案中。如果這樣做,則應從網路檔案中刪除該條目。

在更复杂的环境中,例如当主机使用多个NIC连接到多个网络时,以及至少需要在路由表中输入两条或更多条路由时,您应该考虑在其中使用路由文件。 / etc / sysconfig / network-scripts。 对于NIC enp7s1,该文件将是route-enp7s1,它将包含图4所示的条目。

default via 192.168.0.1 dev enp7s1
登入後複製

图4:enp7s1的默认路由条目。

路由接口文件中的默认网关设置将覆盖网络文件中可能列出的所有网关。

当然,您始终可以使用route命令从命令行添加路由。 如果您需要在每次系统引导时都执行此操作,则可能会花费一些时间,因此您可能要考虑使用上述方法,或创建在启动时运行的脚本。 我为我的系统之一编写了一个脚本,其中包含以下两行,如图5所示。

route del default
route add default gw 192.168.0.1
登入後複製

图5:从命令行设置默认路由的命令。

请注意,设备名称在所有这些命令中都是可选的,在图5中未使用。

通过阅读本文,我们已经了解了如何使用常见的Linux路由检测命令,例如traceroute和mtr,以及如何利用tcpdump和wireshark来分析网络数据包。通过这些技巧,我们能够有效定位网络连接问题,并快速排除故障。相信这些知识对于广大Linux管理员和网络工程师都将有所帮助,让你们能够更加从容应对复杂的网络环境,提升自己的技术水平。

以上是追蹤網路路由的奧秘,Linux路由偵測技巧大揭秘!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!