1. 程式人生 > >route指令使用詳解

route指令使用詳解

linux 運維 route

觀察路由表信息:
route [-nee]
觀察用的參數:
-n :不要使用通訊協定或主機名稱,直接使用 IP 或 port number;
-ee :使用更詳細的資訊來顯示
技術分享圖片
輸出詳解
route命令輸出的路由表字段含義如下:
Destination 目標網絡或目標主機(本機的數據要發送的目的地:子網或主機),與Genmask組成一個網段。
Gateway 網關(如果是默認網關,網關的地址必須和自己的主機上的其中一塊網卡在同一子網)即網關地址。如果沒有就顯示星號。
Genmask 網絡掩碼,如果目標網絡的的子網掩碼為255.255.255.255,說明目標是一臺主機;如果子網掩碼為‘0.0.0.0‘ 說明該路由是默認路由。
Flags(旗標)
代表的意義如下:
U (route is up):該路由是啟動的;
H (target is a host):目標是一部主機 (IP) 而非網段;
G (use gateway):需要透過外部的主機 (gateway) 來轉遞封包(該行有gw);
R (reinstate route for dynamic routing):使用動態路由時,恢復路由資訊的旗標;
D (dynamically installed by daemon or redirect):已經由服務或轉 port 功能設定為動態路由
M (modified from routing daemon or redirect):路由已經被修改;
! (reject route):這個路由將不會被接受(用來抵擋不安全的網域!)
A (installed by addrconf)
C (cache entry)
Metric 距離、跳數。暫無用。與目標的“距離”(通常以跳數計算)。它不被最近的內核使用,但可能需要路由守護進程。
Ref 不用管,恒為0, 對這條路線的引用次數(Linux內核已不再使用)。
Use 該路由被使用的次數,可以粗略估計通向指定網絡地址的網絡流量。 路線查詢次數。根據-F和-C的使用,這將是路由高速緩存丟失(-F)或命中(-C)。
Iface 接口,即eth0,eth1等網絡接口名,為此路由發送數據包的接口。
技術分享圖片
由上面的路由排列順序,依序是由小網域——逐漸到大網域——最後則是預設路由 (0.0.0.0/0.0.0.0)。然後當我們要判斷某個網路封包應該如何傳送的時候,該封包會經由這個路由的過程來判斷喔!

為網域或主機添加路由:
route add [-net|-host] [網域或主機] netmask [mask] [gw|dev]
route del [-net|-host] [網域或主機] netmask [mask] [gw|dev]
註意:使用route添加的路由在機器重啟後就不存在了,若想添加的路由一直可用,寫入到配置文件中/etc/sysconfig/network-scripts/route-ethN
增加 (add) 與刪除 (del) 路由的相關參數:
-net :表示後面接的路由為一個網域(網段)的路由;
-host :表示後面接的為連接到單部主機的路由;
netmask :與網域有關,可以設定netmask決定網域的大小(通常配合-net使用);
gw :gateway 的簡寫,後續接的是 IP (必須個本機的其中一塊網卡處於同一網段),與 dev 不同;
dev :如果只是要指定由那一塊網路卡連線出去,則使用這個設定,後面接 eth0 等

設置默認路由:
格式:
route add default gw {IP-ADDRESS} | dev {INTERFACE-NAME}
參數{IP-ADDRESS): 用於指定網關的IP地址;
參數{INTERFACE-NAME}: 用於指定接口名稱,如eth0。使用/sbin/ifconfig可以顯示所有接口信息。
IP-ADDRESS 和 INTERFACE-NAME只能指定其中一個
例:route add default gw 10.0.0.2
上例實際上等同於:
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.2

默認路由可以在網卡配置裏進行配置:
grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.2

添加到指定網段的路由:
格式:
route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
添加到指定網絡的路由規則,其中
參數{NETWORK-ADDRESS}: 用於指定網絡地址
參數{NETMASK}: 用於指定子網掩碼
參數{INTERFACE-NAME}: 用於指定接口名稱,如eth0。
例: route add -net 10.0.0.0 netmask 255.255.255.0 dev eth0
刪除:
格式:
route del -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
例: route del -net 10.0.0.0 netmask 255.255.255.0 dev eth0

設定指定的網段不可到達:
格式:
route add -net {NETWORK-ADDRESS} netmask {NETMASK} reject
設置到指定網絡為不可達,避免在連接到這個網絡的地址時程序過長時間的等待,直接就知道該網絡不可達。
例: route add -net 10.0.0.0 netmask 255.0.0.0 reject
刪除:
格式:
route del -net {NETWORK-ADDRESS} netmask {NETMASK} reject

192.168.1.0網段(源頭),192.168.1.1網關(途徑)的某一服務器想連入172.16.1.0/24段(目的地),該如何添加路由???
route add -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.1.1
源頭主機上執行上述命令設定,數據途徑哪臺主機,到達目的地網段
gw(途徑主機的IP)的設定必須和源頭主機IP必須在同一網段,而不需要和目的地處於同一網段(由其他gw完成)

上述的配置只是臨時生效,如果要永久生效必須寫入到配置文件中:有3種方式
法一:
vim /etc/sysconfig/static-routes #默認不存在此文件
加入如下內容:
any net 192.168.1.0/24 gw 192.168.1.1
法二:
vim /etc/sysconfig/network-scripts/route-eth0 #默認不存在此文件
加入如下內容:
192.168.1.0/24 via 192.168.1.1
以上兩種方式,重啟網絡服務和重啟系統都會生效!

法三:
vim /etc/rc.local
加入如下內容:
route add -net 192.168.1.0/24 gw 192.168.1.1
這種方式重啟網絡服務將會失效,但重啟機器生效

設置包轉發
在 CentOS中默認的內核配置已經包含了路由功能,但默認並沒有在系統啟動時啟用此功能。開啟Linux的路由功能可以通過調整內核的網絡參數來實現。
#sysctl -w net.ipv4.ip_forward=1 #命令行執行
這樣設置之後,當前系統就能實現包轉發,但下次啟動計算機時將失效。為了使在下次啟動計算機時仍然有效,需要上述配置寫入配置文件/etc/sysctl.conf。
echo “net.ipv4.ip_forward=1” /etc/sysctl.conf
sysctl -p #使配置立即生效

route指令使用詳解