1. 程式人生 > >linux命令解析--理解ip路由和操作linux路由表

linux命令解析--理解ip路由和操作linux路由表

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                路由是選擇一條資料包傳輸路徑的過程,也就是說主機怎麼向目的地傳送資料的過程。當TCP/IP主機發送IP資料包時,便出現了路由,且當到達IP路由器時還會再次出現。路由器是從一個物理網向另一個物理網傳送資料包的裝置,路由器通常被稱為閘道器,它承但著分發資料包的任務。對於傳送的主機和路由器而言,必須決定向哪裡轉發資料包。在決定路由時,IP層查詢位於記憶體中的路由表,然後根據查詢規則,進行ip路由。是不是很抽象?先說如何選路:
  (1)當一個主機試圖與另一個主機通訊時,IP首先決定目的主機是一個內網還是外網,怎麼確定?當然使用網路號。
  (2)如果是是同一內網,那就就是直接傳送了,這個最簡答不過了。
  (3)如果目的主機是和傳送主機不在同一個內網,也就是在外網了,^_^很囉嗦,IP將查詢路由表來為外網主機或外網選擇一個路由,所以一般情況下有可能為某個外網指定特定的路由,具體問題稍後分析。
  (4)若未找到明確的路由,此時在路由表中還會有預設閘道器,也可稱為預設閘道器,IP用預設的閘道器地址將一個數據傳送給下一個指定的路由器,所以閘道器也可能是路由器,也可能只是內網向特定路由器傳輸資料的閘道器。
  (4)在該路由器收到資料後,它再次為遠端主機或網路查詢路由,若還未找到路由,該資料包將傳送到該路由器的預設閘道器地址。   每發現一條路由,資料包被轉送下一級路由器,稱為一次“跳步”,按照同樣的方式進行轉發,並最終傳送至目的主機。若未發現任何一個路由可以接受此次ip包的地址,傳送主機將收到一個出錯資訊,也就是說其中任何一跳出現了不可到達,最後的結果也就是報錯了。   上面只是個人的一些理解,事實上當時我們做的實驗不少,但是看看tcp/ip詳解後,就可以一目瞭然了,現在以linux下的路由表為例說明一下:
  $ sudo route
  Kernel IP routing table
  Destination Gateway Genmask Flags Metric Ref Use Iface
  192.168.100.0 * 255.255.255.0 U 0 0 0 eth1
  192.168.10.0 * 255.255.254.0 U 0 0 0 eth0
  default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
  --------------------------------------------------------------------------------------   IP路由選擇是逐跳地(hop-by-hop)進行的。從這個路由表資訊可以看出,IP並不知道到達任何目的的完整路徑(當然,除了那些與主機直接相連的目的)。所有的IP路由選擇只為資料報傳輸提供下一站路由器的IP地址。它假定下一站路由器比傳送資料報的主機更接近目的,而且下一站路由器與該主機是直接相連的。
  IP路由選擇主要完成以下這些功能:
  1)搜尋路由表,尋找能與目的IP地址完全匹配的表目(網路號和主機號都要匹配)。如果找到,則把報文傳送給該表目指定的下一站路由器或直接連線的網路介面(取決於標誌欄位的值)。
  2) 搜尋路由表,尋找能與目的網路號相匹配的表目。如果找到,則把報文傳送給該表目指定的下一站路由器或直接連線的網路介面(取決於標誌欄位的值)。目的網路上的所有主機都可以通過這個表目來處置。例如,一個乙太網上的所有主機都是通過這種表目進行尋徑的。這種搜尋網路的匹配方法必須考慮可能的子網掩碼。關於這一點我們在下一節中進行討論。
  3)搜尋路由表,尋找標為“預設(default)”的表目。如果找到,則把報文傳送給該表目指定的下一站路由器。如果上面這些步驟都沒有成功,那麼該資料報就不能被傳送。如果不能傳送的資料報來自本機,那麼一般會向生成資料報的應用程式返回一個“主機不可達”或 “網路不可達”的錯誤。
  完整主機地址匹配在網路號匹配之前執行。只有當它們都失敗後才選擇預設路由。預設路由,以及下一站路由器傳送的ICMP間接報文(如果我們為資料報選擇了錯誤的預設路由),是IP路由選擇機制中功能強大的特性。
     freebsd上使用netstat -nr列印路由表   現在問題在如何操作路由表,因為ip的選路全靠它吃飯了,怎麼為一個特定的網路或者主機選擇一條特定的路由?如何刪除路由?這些問題對於網路維護和系統管理也尤為重要:   還是以上面的路由表為例,建議使用前先man route檢視方法,或許各個系統略有差異,下面是以debian為例,由於是測試,所以使用sudo,而不是root許可權:   1、為某主機新增路由
  $ sudo route add –host 192.168.10.58 dev eth1
  //所有通向192.168.10.58的資料都是用eth1網絡卡
  $ sudo route add –host 192.168.11.58 gw 192.168.10.1
  //通向192.168.11.58的資料使用閘道器192.168.10.1   不經意間做了一個驗證實驗:由於eth1是沒有啟動的,所以新增這個路由後,192.168.10.58不可ping通
  初始路由表
  sudo route
  Kernel IP routing table
  Destination Gateway Genmask Flags Metric Ref Use Iface
  192.168.100.0 * 255.255.255.0 U 0 0 0 eth1
  192.168.10.0 * 255.255.254.0 U 0 0 0 eth0
  default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
  ---------------------------------------------------------   可以ping通192.168.10.58
  $ ping 192.168.10.58
  PING 192.168.10.58 (192.168.10.58) 56(84) bytes of data.
  64 bytes from 192.168.10.58: icmp_seq=1 ttl=64 time=0.188 ms
  ----------------------------------------------------------------   新增192.168.10.58的路由
  $ sudo route add -host 192.168.10.58 dev eth1
  $ sudo route
  Kernel IP routing table
  Destination Gateway Genmask Flags Metric Ref Use Iface
  192.168.10.58 * 255.255.255.255 UH 0 0 0 eth1
  192.168.100.0 * 255.255.255.0 U 0 0 0 eth1
  192.168.10.0 * 255.255.254.0 U 0 0 0 eth0
  default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
  -----------------------------------------------------------------   由於eth0無法使用了,所以發給eth1,就等於丟入黑洞之中
  $ ping 192.168.10.58
  PING 192.168.10.58 (192.168.10.58) 56(84) bytes of data.
  --- 192.168.10.58 ping statistics ---
  2 packets transmitted, 0 received, 100% packet loss, time 1010ms 指定給閘道器處理
  $ sudo route add -host 192.168.10.58 gw 192.168.10.1
  $ sudo route
  Kernel IP routing table
  Destination Gateway Genmask Flags Metric Ref Use Iface
  192.168.10.58 192.168.10.1 255.255.255.255 UGH 0 0 0 eth0
  192.168.10.58 * 255.255.255.255 UH 0 0 0 eth1
  192.168.100.0 * 255.255.255.0 U 0 0 0 eth1
  192.168.10.0 * 255.255.254.0 U 0 0 0 eth0
  default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
  ---------------------------------------------------------   要經過網關了,驗證了路由表的作用
  $ ping 192.168.10.58
  PING 192.168.10.58 (192.168.10.58) 56(84) bytes of data.
  From 192.168.10.1: icmp_seq=1 Redirect Network(New nexthop: 192.168.10.58)
  64 bytes from 192.168.10.58: icmp_seq=1 ttl=64 time=1.02 ms
  ------------------------------------------------------   廢話少說了,同理為某網路新增路由和刪除路由如下所示:經過測試有效:   2、為某網路的新增路由
  $ sudo route add –net 220.181.8.0/24 dev eth0
  $ sudo route add –net 220.181.8.0/24 gw 192.168.10.1   3、新增預設閘道器
  $ sudo route add default gw 192.168.10.1
  4、刪除路由,
  $ sudo route del –host 192.168.168.110 dev eth0   可能你會遇到刪除時候語法錯誤,請參看路由表的Flags,路由上面的第一條,G表示設定了閘道器,H表示操作了主機,所以就用$ sudo route del -host 192.168.10.58 gw 192.168.10.1刪除,更詳細的請man。   使用route 命令新增的路由,機器重啟或者網絡卡重啟後路由就失效了,和iptables一樣,需要永久新增的話,也是使用開機執行,所以可以用以下方法新增永久路由:   1.在/etc/rc.local裡新增執行命令,進行開機執行,因為是root許可權,所以不用sudo了:
  route add –net 220.181.8.0/24 dev eth0
  route add –net 220.181.9.0/24 gw 192.168.10.1   2.在/etc/sysconfig/network裡新增到末尾
  方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev   3./etc/sysconfig/static-router :
  any net x.x.x.x/24 gw y.y.y.y            

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述 你好! 這是你第一次使用 **Markdown編輯器** 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。

新的改變

我們對Markdown編輯器進行了一些功能拓展與語法支援,除了標準的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你用它寫部落格:

  1. 全新的介面設計 ,將會帶來全新的寫作體驗;
  2. 在創作中心設定你喜愛的程式碼高亮樣式,Markdown 將程式碼片顯示選擇的高亮樣式
    進行展示;
  3. 增加了 圖片拖拽 功能,你可以將本地的圖片直接拖拽到編輯區域直接展示;
  4. 全新的 KaTeX數學公式 語法;
  5. 增加了支援甘特圖的mermaid語法1 功能;
  6. 增加了 多螢幕編輯 Markdown文章功能;
  7. 增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區域同步滾輪設定 等功能,功能按鈕位於編輯區域與預覽區域中間;
  8. 增加了 檢查列表 功能。

功能快捷鍵

撤銷:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜體:Ctrl/Command + I
標題:Ctrl/Command

+ Shift + H
無序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
檢查列表:Ctrl/Command + Shift + C
插入程式碼:Ctrl/Command + Shift + K
插入連結:Ctrl/Command + Shift + L
插入圖片:Ctrl/Command + Shift + G

合理的建立標題,有助於目錄的生成

直接輸入1次#,並按下space後,將生成1級標題。
輸入2次#,並按下space後,將生成2級標題。
以此類推,我們支援6級標題。有助於使用TOC語法後生成一個完美的目錄。

如何改變文字的樣式

強調文字 強調文字

加粗文字 加粗文字

標記文字

刪除文字

引用文字

H2O is是液體。

210 運算結果是 1024.

插入連結與圖片

連結: link.

圖片: Alt

帶尺寸的圖片: Alt

當然,我們為了讓使用者更加便捷,我們增加了圖片拖拽功能。

如何插入一段漂亮的程式碼片

部落格設定頁面,選擇一款你喜歡的程式碼片高亮樣式,下面展示同樣高亮的 程式碼片.

// An highlighted block var foo = 'bar'; 

生成一個適合你的列表

  • 專案
    • 專案
      • 專案
  1. 專案1
  2. 專案2
  3. 專案3
  • 計劃任務
  • 完成任務

建立一個表格

一個簡單的表格是這麼建立的:

專案 Value
電腦 $1600
手機 $12
導管 $1

設定內容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文字居中 第二列文字居右 第三列文字居左

SmartyPants

SmartyPants將ASCII標點字元轉換為“智慧”印刷標點HTML實體。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

建立一個自定義列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何建立一個註腳

一個具有註腳的文字。2

註釋也是必不可少的

Markdown將文字轉換為 HTML

KaTeX數學公式

您可以使用渲染LaTeX數學表示式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n 1 ) ! n N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通過尤拉積分

Γ ( z ) = 0 t z 1 e t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多關於的資訊 LaTeX 數學表示式here.

新的甘特圖功能,豐富你的文章

gantt
        dateFormat  YYYY-MM-DD
        title Adding GANTT diagram functionality to mermaid
        section 現有任務
        已完成               :done,    des1, 2014-01-06,2014-01-08
        進行中               :active,  des2, 2014-01-09, 3d
        計劃一               :         des3, after des2, 5d
        計劃二               :         des4, after des3, 5d
  • 關於 甘特圖 語法,參考 這兒,

UML 圖表

可以使用UML圖表進行渲染。 Mermaid. 例如下面產生的一個序列圖::

這將產生一個流程圖。:

  • 關於 Mermaid 語法,參考 這兒,

FLowchart流程圖

我們依舊會支援flowchart的流程圖:

  • 關於 Flowchart流程圖 語法,參考 這兒.

匯出與匯入

匯出

如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到 文章匯出 ,生成一個.md檔案或者.html檔案進行本地儲存。

匯入

如果你想載入一篇你寫過的.md檔案或者.html檔案,在上方工具欄可以選擇匯入功能進行對應副檔名的檔案匯入,
繼續你的創作。


  1. mermaid語法說明 ↩︎

  2. 註腳的解釋 ↩︎