Linux網絡路由簡介-查看網絡路由

本文對用於理解簡單環境的Linux計算機的路由進行了非常簡短的介紹。

Linux網絡路由簡介-查看網絡路由Linux網絡路由簡介-查看網絡路由

linux 查看網絡路由

連接到網絡的每臺計算機在離開本地主機時都需要針對網絡TCP / IP數據包的某種路由說明。 這通常非常簡單,因爲大多數網絡環境都非常簡單,並且離開數據包只有兩種選擇。 所有數據包都發送到本地網絡上的設備或其他遠程網絡上。

確保將“本地”網絡定義爲本地主機所在的邏輯網絡,通常也定義爲物理網絡。 從邏輯上講,這是指在其中爲主機分配了本地子網IP地址範圍之一的本地子網。 從物理上講,這意味着主機已連接到一臺或多臺交換機,這些交換機也已連接到本地網絡的其餘部分。

TCP / IP網絡模型

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

5.應用程序層:消息該層包括各種網絡應用程序進行通信所需的連接協議,例如HTTP,DHCP,SSH,FTP,SMTP,IMAP等。 當您從遠程網站請求網頁時,連接請求將發送到Web服務器,響應會發送回該層的主機,然後瀏覽器將在其窗口中顯示該網頁。

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中未使用。

結論

除了這些非常簡單的示例(非常常見)中顯示的路由之外,路由還有很多其他內容。 這裏的信息應該使您入門。 對於更復雜的環境,您可能希望參考Craig Hunt的《 Inside TCP / IP,第二版》或《 TCP / IP網絡管理》 。 您可能還需要參考發行版的文檔以獲取更多信息。 對於基於rpm的發行版(例如Fedora和CentOS),一個很好的參考是《 Red Hat Enterprise Linux 7部署指南》 。

本文地址:https://www.linuxprobe.com/linux-route-check.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章