Linux路由與traceroute命令

路由

route命令是Linux中用于顯示和操作IP路由表的工具。使用route命令添加的路由是臨時的,即在系統(tǒng)重啟或網(wǎng)絡(luò)接口重啟后路由將失效。
檢查網(wǎng)卡  
ip a     
ifconfig eth0
檢查路由
route -n  
ip route show

1. 添加到主機的路由

route add -host <目標IP> dev <接口名>  
# 例如,將到192.168.1.100的路由添加到eth0接口  
route add -host 192.168.1.100 dev eth0  
# 或者,如果需要通過網(wǎng)關(guān)到達該主機  
route add -host <目標IP> gw <網(wǎng)關(guān)IP>  
# 例如,通過網(wǎng)關(guān)192.168.1.1到達192.168.1.100  
route add -host 192.168.1.100 gw 192.168.1.1

2.添加到網(wǎng)絡(luò)的路由

route add -net <網(wǎng)絡(luò)地址> netmask <子網(wǎng)掩碼> dev <接口名>  
# 例如,將到192.168.1.0/24的路由添加到eth0接口  
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0  
# 或者,如果需要通過網(wǎng)關(guān)到達該網(wǎng)絡(luò)  
route add -net <網(wǎng)絡(luò)地址> netmask <子網(wǎng)掩碼> gw <網(wǎng)關(guān)IP>  
# 例如,通過網(wǎng)關(guān)192.168.1.1到達192.168.1.0/24  
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1  
# 也可以使用CIDR表示法(無需指定子網(wǎng)掩碼)  
route add -net <網(wǎng)絡(luò)/子網(wǎng)位數(shù)> dev <接口名>  
# 或  
route add -net <網(wǎng)絡(luò)/子網(wǎng)位數(shù)> gw <網(wǎng)關(guān)IP>

3.添加默認網(wǎng)關(guān)

route add default gw <網(wǎng)關(guān)IP>  
# 例如,設(shè)置默認網(wǎng)關(guān)為192.168.1.1  
route add default gw 192.168.1.1

設(shè)置永久路由

由于route命令添加的路由是臨時的,因此如果需要設(shè)置永久路由,則需要將路由配置添加到系統(tǒng)啟動時自動執(zhí)行的腳本或配置文件中。具體方法取決于Linux發(fā)行版和網(wǎng)絡(luò)管理工具。

1. 在/etc/rc.local中添加(已不推薦,但在某些舊系統(tǒng)中仍可用)
該文件在系統(tǒng)啟動時會被執(zhí)行,因此可以添加路由配置。但是,請注意,并非所有Linux發(fā)行版都支持或推薦使用/etc/rc.local。
echo "route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1" >> /etc/rc.local  
# 注意:確保/etc/rc.local具有執(zhí)行權(quán)限  
chmod +x /etc/rc.local

2. 在網(wǎng)絡(luò)配置文件中添加
對于使用NetworkManager的系統(tǒng),可以在NetworkManager的連接配置文件中添加路由。
對于使用靜態(tài)網(wǎng)絡(luò)配置的系統(tǒng)(如某些Debian和Red Hat系統(tǒng)),可以在/etc/network/interfaces(Debian)或/etc/sysconfig/network-scripts/ifcfg-<接口名>(Red Hat)等文件中添加路由配置。
例如,在/etc/network/interfaces中添加靜態(tài)路由(Debian/Ubuntu):
auto eth0  
iface eth0 inet static  
    address 192.168.1.10  
    netmask 255.255.255.0  
    gateway 192.168.1.1  
    up ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0

traceroute命令(路由跟蹤)

1. Linux下的traceroute命令
在Linux環(huán)境下,traceroute是一個常用的網(wǎng)絡(luò)診斷工具,用于跟蹤IP數(shù)據(jù)包在網(wǎng)絡(luò)中從本地主機到目標主機所經(jīng)過的路由節(jié)點(路由器或網(wǎng)關(guān))。
它通過逐步增加數(shù)據(jù)包的生存時間(TTL)值,并監(jiān)聽沿途路由器對超時或不可達數(shù)據(jù)包的ICMP響應(yīng),從而獲取整個路徑信息。
traceroute 8.8.8.8

2. Linux下的tracepath命令
tracepath是Linux系統(tǒng)中的另一個路由探測工具,相較于traceroute,它在IPv6環(huán)境下的表現(xiàn)更為出色,并且不依賴于特定類型的ICMP消息,因此在某些網(wǎng)絡(luò)環(huán)境中可能更可靠
tracepath 8.8.8.8

3. Windows下的tracert命令
在Windows操作系統(tǒng)中,對應(yīng)功能的命令名為tracert,其工作原理與Linux下的traceroute類似,都是通過調(diào)整數(shù)據(jù)包的TTL值并分析返回的ICMP錯誤消息來描繪出通往目標主機的完整路徑。
在CMD命令提示符中執(zhí)行:
tracert 8.8.8.8

示例輸出解讀
無論使用traceroute、tracepath還是tracert,命令執(zhí)行后都會顯示出一系列躍點(hop),每行代表一個網(wǎng)絡(luò)設(shè)備,包括:
? 躍點編號(Hop)
? 設(shè)備的IP地址或域名
? 數(shù)據(jù)包往返該躍點所需的時間(通常顯示三次嘗試的平均值)
這些信息可以幫助網(wǎng)絡(luò)管理員識別潛在的問題區(qū)域,如延遲過高、路由錯誤等。

traceroute是用來檢測發(fā)出數(shù)據(jù)包的主機到目標主機之間所經(jīng)過的網(wǎng)關(guān)數(shù)量的工具。

traceroute的原理是試圖以最小的TTL 存活時間 發(fā)出探測包來跟蹤數(shù)據(jù)包到達目標主機所經(jīng)過的網(wǎng)關(guān) 然后監(jiān)聽一個來自網(wǎng)關(guān)ICMP的應(yīng)答。發(fā)送數(shù)據(jù)包的大小默認為38個字節(jié)。

原理 
程序利用增加存活時間 TTL 來實現(xiàn)其功能。每當數(shù)據(jù)包(3個數(shù)據(jù)包包括源地址 目的地址和包發(fā)出的時間標簽)經(jīng)過一個路由器 其存活時間就會減1。
當其存活時間是0時 主機便取消數(shù)據(jù)包 并傳送一個ICMP Internet控制報文協(xié)議。它是TCP/IP協(xié)議族的一個子協(xié)議 用于在IP主機、路由器之間傳遞控制消息。
控制消息是指網(wǎng)絡(luò)通不通、主機是否可達、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù) 但是對于用戶數(shù)據(jù)的傳遞起著重要的作用。 TTL數(shù)據(jù)包給原數(shù)據(jù)包的發(fā)出者。

traceroute程序完整過程 首先它發(fā)送一份TTL字段為1的IP數(shù)據(jù)包給目的主機 處理這個數(shù)據(jù)包的第一個路由器將TTL值減1 然后丟棄該數(shù)據(jù)報 并給源主機發(fā)送一個ICMP報文 “超時”信息 
這個報文包含了路由器的IP地址 這樣就得到了第一個路由器的地址 然后traceroute發(fā)送一個TTL為2的數(shù)據(jù)報來得到第二個路由器的IP地址 繼續(xù)這個過程 直至這個數(shù)據(jù)報到達目的主機。

1.命令格式:
traceroute [參數(shù)] [主機]
2.命令功能
traceroute指令讓你追蹤網(wǎng)絡(luò)數(shù)據(jù)包的路由途徑 預(yù)設(shè)數(shù)據(jù)包大小是40Bytes 用戶可另行設(shè)置。
具體參數(shù)格式 traceroute [-dFlnrvx][-f 存活數(shù)值 ][-g 網(wǎng)關(guān) …][-i 網(wǎng)絡(luò)界面 ][-m 存活數(shù)值 ][-p 通信端口 ][-s 來源地址 ][-t 服務(wù)類型 ][-w 超時秒數(shù) ][主機名稱或IP地址][數(shù)據(jù)包大小]
3.命令參數(shù)
-d 使用Socket層級的排錯功能。
-f 設(shè)置第一個檢測數(shù)據(jù)包的存活數(shù)值TTL的大小。
-F 設(shè)置勿離斷位。
-g 設(shè)置來源路由網(wǎng)關(guān) 最多可設(shè)置8個。
-i 使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。
-I 使用ICMP回應(yīng)取代UDP資料信息。
-m 設(shè)置檢測數(shù)據(jù)包的最大存活數(shù)值TTL的大小。
-n 直接使用IP地址而非主機名稱。
-p 設(shè)置UDP傳輸協(xié)議的通信端口。
-r 忽略普通的Routing Table 直接將數(shù)據(jù)包送到遠端主機上。
-s 設(shè)置本地主機送出數(shù)據(jù)包的IP地址。
-t 設(shè)置檢測數(shù)據(jù)包的TOS數(shù)值。
-v 詳細顯示指令的執(zhí)行過程。
-w 設(shè)置等待遠端主機回報的時間。
-x 開啟或關(guān)閉數(shù)據(jù)包的正確性檢驗。

[root@VM-centos ~]# nslookup www.baidu.com
Server:     183.60.83.19
Address:    183.60.83.19#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 180.101.49.44
Name:   www.a.shifen.com
Address: 180.101.51.73
Name:   www.a.shifen.com
Address: 240e:e9:6002:1ac:0:ff:b07e:36c5
Name:   www.a.shifen.com
Address: 240e:e9:6002:1fd:0:ff:b0e1:fe69


traceroute www.baidu.com
[root@VM-centos ~]# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.51.73), 30 hops max, 60 byte packets
 1  * * *
 2  * * *

說明:
記錄按序列號從1開始 每個紀錄就是一跳 每跳表示一個網(wǎng)關(guān) 我們看到每行有三個時間 單位是 ms 其實就是-q的默認參數(shù)。
探測數(shù)據(jù)包向每個網(wǎng)關(guān)發(fā)送三個數(shù)據(jù)包后 網(wǎng)關(guān)響應(yīng)后返回的時間 如果您用 traceroute -q 4 www.58.com 表示向每個網(wǎng)關(guān)發(fā)送4個數(shù)據(jù)包。

有時我們traceroute 一臺主機時 會看到有一些行是以星號表示的。出現(xiàn)這樣的情況 可能是防火墻封掉了ICMP的返回信息 所以我們得不到什么相關(guān)的數(shù)據(jù)包返回數(shù)據(jù)。

有時我們在某一網(wǎng)關(guān)處延時比較長 有可能是某臺網(wǎng)關(guān)比較阻塞 也可能是物理設(shè)備本身的原因。
當然如果某臺DNS出現(xiàn)問題時 不能解析主機名、域名時 也會 有延時長的現(xiàn)象 您可以加-n 參數(shù)來避免DNS解析 以IP格式輸出數(shù)據(jù)。
如果在局域網(wǎng)中的不同網(wǎng)段之間 我們可以通過traceroute 來排查問題所在 是主機的問題還是網(wǎng)關(guān)的問題。

跳數(shù)設(shè)置:可以看到存活數(shù)值 10 當存活數(shù)值 0時 主機便取消數(shù)據(jù)包
traceroute -m 10 www.baidu.com

探測包使用的基本UDP端口設(shè)置6888
traceroute -p 6888 www.baidu.com

把對外發(fā)探測包的等待響應(yīng)時間設(shè)置為3秒
traceroute -w 3 www.baidu.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容