Linux 命令(120)—— route 命令
- 2020 年 2 月 20 日
- 筆記
1.命令簡介
route 命令用於顯示和操作 IP 路由表。
要實現兩個不同的子網之間的通訊,需要一台連接兩個網路的路由器,或者同時位於兩個網路的網關來實現。在 Linux 系統中,設置路由通常是為了解決以下問題:該 Linux 系統在一個區域網中,區域網中有一個網關,能夠讓機器訪問 Internet,那麼就需要將這台機器的 IP 地址設置為 Linux 機器的默認路由。
要注意的是,直接在命令行下執行 route 命令來添加路由,不會永久保存,當網卡重啟或者機器重啟之後,該路由就失效了;可以在 /etc/rc.d/rc.local 中添加 route 命令,作為開機啟動命令來保證該路由設置永久有效。
2.命令格式
route [-CFvnNee] [-A FAMILY |-4|-6] route [-v] [-A FAMILY | -4 | -6] add [-net|-host] TARGET [netmask NM] [gw GW] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] IF] route [-v] [-A FAMILY | -4 | -6] del [-net|-host] TARGET [gw GW] [netmask NM] [metric N] [[dev] IF] route [-V] [--version] [-h] [--help]
第一行格式用於查看路由表; 第二行格式用於添加一條路由; 第三行格式用於刪除一條路由; 第四行格式用於查看版本與幫助資訊。
3.選項說明
-A FAMILY 指定的地址族。FAMILY 可取值 inet、inet6 等。-4 等同於 -A inet,-6 等同於 -A inet6 -C 操作內核的路由快取 -F 操作內核的 FIB(Forwarding Information Base) 路由表。默認選項 -e 用 netstat(8) 的格式來顯示路由表。-ee 將用路由表中的所有參數生成一個很長的行 -host 路由目標為主機 -n 以數字地址代替主機或網路名。此項對試圖檢測對域名伺服器進行路由發生故障的原因非常有用 -net 路由目標為網路 -v 開啟冗餘模式 del 刪除一條路由 add 添加一條路由 TARGET 指定目標網路或主機。可以用點分十進位形式的 IP 地址或主機/網路名 netmask NM 為添加的路由指定網路掩碼 gw GW 為發往目標網路/主機的任何分組指定網關。注意:指定的網關首先必須是可達的,也就是說必須為該網關預先指定一條靜態路由。如果你為本地介面之一指定這個網關地址的話,那麼此網關地址將用於決定此介面上的分組將如何進行路由。這是 BSD 風格所兼容的 metric M 把選路表中的 metric 欄位值設為 M。metric 表示路由跳數 mss M 設置最大傳輸單元 MTU window W 把基於此路由之上的連接的 TCP 窗口長度設為 W 位元組。這通常只用於 AX.25 網路和不能處理背靠背幀的設備 irtt I 把基於此路由之上的 TCP 連接的初始往返時間設為 I 毫秒(1-12000)。這通常也只用於 AX.25 網路。如果省略此選項,則使用 RFC1122 的預設值 300ms reject 設置一條阻塞路由以使一條路由查找失敗。這用於在使用預設路由前先屏蔽掉一些網路。但這並不起到防火牆的作用 mod, dyn, reinstate 設置一條動態或更改過的路由。這些標誌通常只由路由進程來設置。這只用於診斷目的 dev IF 強制使路由與指定的設備關聯,否則內核會自己決定使用相應的設備(通常檢查已存在的路由、設備說明和已加入路由的設備)。在多數正常的網路上無需使用該選項。如果 dev IF 是命令行上最後一個選項,那麼可以省略關鍵字 dev
4.常用示例
(1)顯示當前路由表。
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 9.134.112.1 0.0.0.0 UG 0 0 0 eth1 9.0.0.0 9.134.112.1 255.0.0.0 UG 0 0 0 eth1 9.134.112.0 0.0.0.0 255.255.240.0 U 0 0 0 eth1 10.0.0.0 9.134.112.1 255.0.0.0 UG 0 0 0 eth1 100.64.0.0 9.134.112.1 255.192.0.0 UG 0 0 0 eth1 link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth1 172.16.0.0 9.134.112.1 255.240.0.0 UG 0 0 0 eth1 192.168.0.0 9.134.112.1 255.255.0.0 UG 0 0 0 eth1 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
上面的輸出中,有兩行值得注意:
default 9.134.112.1 0.0.0.0 UG 0 0 0 eth1 表示數據傳送目的是訪問 Internet,則由介面 eth1 將數據包發送到網關 9.134.112.1 9.134.112.0 0.0.0.0 255.255.240.0 U 0 0 0 eth1 表示主機所在網路的地址為 9.134.112.0,若數據傳送目標是在本區域網內通訊,則可直接通過 eth1 轉發數據包
Destination 表示目標網路或主機地址; Gateway 表示網關地址,如果是 * 表示未設置; Genmask 表示目標網路的網路掩碼;目標是主機對應 255.255.255.255,默認路由對應 0.0.0.0; Flags 為路由狀態標誌,含義如下:
U 路由當前為啟動狀態(Up ) H 目標為主機(Host) G 使用網關(Gateway)路由 R 恢復(Reinstate )動態路由的路由 D 由守護進程或導向器動態(Dynamically)安裝 M 由路由守護程式或導向器動態修改(Modified) A 由 addrconf 安裝 C 快取(Cache)項 ! 路由當前為關閉狀態
Metric 表示與目標的距離,通常以跳數計算; Ref 表示此路由的引用數(Linux 內核中不使用); Use 表示查找路由的計數。根據 -F 和 -C 的使用,這將是路由快取未命中(-F)或命中(-C); Iface 表示將此路由的數據包發送到的介面。
(2)以數字地址代替主機或網路名。
route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 9.134.112.1 0.0.0.0 UG 0 0 0 eth1 9.0.0.0 9.134.112.1 255.0.0.0 UG 0 0 0 eth1 9.134.112.0 0.0.0.0 255.255.240.0 U 0 0 0 eth1 10.0.0.0 9.134.112.1 255.0.0.0 UG 0 0 0 eth1 100.64.0.0 9.134.112.1 255.192.0.0 UG 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth1 172.16.0.0 9.134.112.1 255.240.0.0 UG 0 0 0 eth1 192.168.0.0 9.134.112.1 255.255.0.0 UG 0 0 0 eth1 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
(3)添加一條路由。
route add -net 127.0.0.0 netmask 255.0.0.0 dev lo # 查看設置後的結果 route -n | grep lo 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
使用 netmask 255.0.0.0 添加與 lo 設備相關聯的迴環路由項。
(4)屏蔽一條路由。
route add -net 224.0.0.0 netmask 240.0.0.0 reject # 查看設置後的結果 route | grep 224.0.0.0 224.0.0.0 - 240.0.0.0 ! 0 - 0 -
(5)刪除一條路由。
route del -net 224.0.0.0 netmask 240.0.0.0 reject
(6)添加默認網關。
route add default gw 9.134.112.2 # 查看設置後的結果 route | grep 9.134.112.2 default 9.134.112.2 0.0.0.0 UG 0 0 0 eth1
(7)刪除默認網關。
route del default gw 9.134.112.2
5.拓展知識
5.1 路由類型
5.1.1 主機路由
主機路由是路由選擇表中指向單個 IP 地址或主機名的路由記錄。主機路由的 Flags 欄位為 H。例如,在下面的示例中,本地主機通過 IP 地址 192.168.1.1 的網關到達 IP地址為 10.0.0.10 的主機。
Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0
5.1.2 網路路由
網路路由是代表主機可以到達的網路。網路路由的 Flags 欄位為 N。例如,在下面的示例中,本地主機將發送到網路 192.19.12.0 的數據包轉發到 IP 地址為 192.168.1.1 的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface 192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0
5.1.3 默認路由
當主機不能在路由表中查找到目標主機的 IP 地址或網路路由時,數據包就被發送到默認路由(默認網關)上。默認路由的 Flags 欄位為 G。例如,在下面的示例中,默認路由是 IP 地址為 192.168.1.1 的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
參考文獻
[1] route(1) manual [2] 部落格園.每天一個linux命令(53):route命令 [3] CSDN.【Linux】一步一步學Linux——route命令(169) [4] CSDN.linux 路由表設置 之 route 指令詳解