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編輯器功能,我們增加了如下幾點新功能,幫助你用它寫部落格:
- 全新的介面設計 ,將會帶來全新的寫作體驗;
- 在創作中心設定你喜愛的程式碼高亮樣式,Markdown 將程式碼片顯示選擇的高亮樣式
- 增加了 圖片拖拽 功能,你可以將本地的圖片直接拖拽到編輯區域直接展示;
- 全新的 KaTeX數學公式 語法;
- 增加了支援甘特圖的mermaid語法1 功能;
- 增加了 多螢幕編輯 Markdown文章功能;
- 增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區域同步滾輪設定 等功能,功能按鈕位於編輯區域與預覽區域中間;
- 增加了 檢查列表 功能。
功能快捷鍵
撤銷:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜體:Ctrl/Command + I
標題:Ctrl/Command
無序列表: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.
圖片:
帶尺寸的圖片:
當然,我們為了讓使用者更加便捷,我們增加了圖片拖拽功能。
如何插入一段漂亮的程式碼片
去部落格設定頁面,選擇一款你喜歡的程式碼片高亮樣式,下面展示同樣高亮的 程式碼片
.
// An highlighted block var foo = 'bar';
生成一個適合你的列表
- 專案
- 專案
- 專案
- 專案
- 專案1
- 專案2
- 專案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公式展示 是通過尤拉積分
你可以找到更多關於的資訊 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檔案,在上方工具欄可以選擇匯入功能進行對應副檔名的檔案匯入,
繼續你的創作。
註腳的解釋 ↩︎