route
指令用來顯示并設定Linux核心中的網絡路由表,
route
指令設定的路由主要是靜态路由。要實作兩個不同的子網之間的通信,需要一台連接配接兩個網絡的路由器,或者同時位于兩個網絡的網關來實作。
在Linux系統中設定路由通常是為了解決以下問題:該Linux系統在一個區域網路中,區域網路中有一個網關,能夠讓機器通路Internet,那麼就需要将這台機器的ip位址設定為Linux機器的預設路由。要注意的是,直接在指令行下執行route指令來添加路由,不會永久儲存,當網卡重新開機或者機器重新開機之後,該路由就失效了;可以在/etc/rc.local中添加route指令來保證該路由設定永久有效。
route的文法
route [opt]
- route的選項
選項 | 含義 |
---|---|
-A | 設定位址類型 |
-C | 列印将Linux核心的路由緩存 |
-v | 詳細資訊模式 |
-n | 不執行DNS反向查找,直接顯示數字形式的IP位址 |
-e | netstat格式顯示路由表 |
-net | 到一個網絡的路由表 |
-host | 到一個主機的路由表 |
- route的參數
參數 | 含義 |
---|---|
Add | 增加指定的路由記錄 |
Del | 删除指定的路由記錄 |
Target | 目的網絡或目的主機 |
gw | 設定預設網關 |
mss | 設定TCP的最大區塊長度(MSS),機關MB |
window | 指定通過路由表的TCP連接配接的TCP視窗大小 |
dev | 路由記錄所表示的網絡接口 |
route的執行個體
-
顯示目前路由
使用指令:
顯示目前的路由資訊。 上述資料中表頭的含義說明:route
字段名 | 含義 |
---|---|
Destination | 目标網絡或目标主機 |
Gateway | 網關位址,如果沒有就顯示星号 |
Genmask | 網絡掩碼 |
Flags | 總共有多個旗标 |
Metric | 距離、跳數。暫無用 |
Ref | 不用管,恒為0 |
Use | 該路由被使用的次數,可以粗略估計通向指定網絡位址的網絡流量 |
Iface | 接口,即eth0,eth0等網絡接口名 |
其中Flags為路由标志,标記目前網絡節點的狀态,Flags标志說明:
辨別 | 含義 |
---|---|
U | Up表示此路由目前為啟動狀态。 |
H | Host,表示此網關為一主機。 |
G | Gateway,表示此網關為一路由器。 |
R | Reinstate Route,使用動态路由重新初始化的路由。 |
D | Dynamically,此路由是動态性地寫入。 |
M | Modified,此路由是由路由守護程式或導向器動态修改。 |
! | 表示此路由目前為關閉狀态。 |
上圖中,從上到下依次是路由排列順序(忽略中間的docker路由),依次是大域網到小域網。資料的傳遞根據這個路由表來判斷傳遞到哪邊。
例如:
若有一個資料包需要傳遞到
172.20.x.x
的包,找到
172.20.0.0
這個路由的時候就會直接從網口
ens33
傳遞出去。
若有一個網際網路上的包
14.215.177.38
,找到第2,3個
172.17.0.0
和
172.20.0.0
時,均沒有路由能夠比對,就傳遞到了
0.0.0.0
上的路由表上,然後傳遞出去。
-
添加路由
增加一條到達
這個網段的路由,從網卡13.1.1.0、24
出去eth0
route add -net 13.1.1.0 netmask 255.255.255.0 dev eth0
-
删除路由
删除剛才添加的路由
route del -net 13.1.1.0 netmask 255.255.255.0 dev eth0
-
增加一個預設網關
設定一個預設網關,需要保證gateway(gw)的IP和eth0(本機IP)在同一個網段内。下面的
和網卡對應的位址172.20.36.0
在同一網段,添加成功。172.20.35.40
若網關位址和本機位址不在一個網段則會提示route add default gw 172.20.36.0
,我們嘗試添加一個網段為SIOCADDRT: 網絡不可達
的網關時:12.1.1.13