# Linux系統route命令怎么用
## 一、route命令概述
### 1.1 什么是路由表
路由表(Routing Table)是Linux內核中存儲網絡路由信息的核心數據結構,它決定了數據包如何從源主機傳輸到目標主機。路由表本質上是一個包含多條路由規則的數據庫,每條規則定義了:
- 目標網絡或主機地址
- 子網掩碼
- 網關地址
- 網絡接口
- 度量值(Metric)
- 其他控制標志
在Linux系統中,路由表分為多個優先級層次:
- 主路由表(main table)
- 本地路由表(local table)
- 默認路由表(default table)
- 自定義路由表(可通過ip rule管理)
### 1.2 route命令的作用與地位
`route`命令是Linux系統中用于查看和操作IP路由表的傳統工具,屬于net-tools軟件包的一部分。雖然現代Linux發行版推薦使用`ip route`命令(來自iproute2套件),但route命令仍然被廣泛使用,特別是在較老的系統和腳本中。
主要功能包括:
- 顯示當前路由表
- 添加/刪除靜態路由
- 修改現有路由
- 設置默認網關
### 1.3 route與ip route的區別
| 特性 | route命令 | ip route命令 |
|------------|--------------------|--------------------|
| 所屬工具集 | net-tools | iproute2 |
| 語法復雜度 | 相對簡單 | 更復雜但更靈活 |
| 功能范圍 | 基本路由管理 | 高級路由功能 |
| 未來發展 | 逐步淘汰 | 推薦使用 |
| 輸出格式 | 表格形式 | 更詳細的顯示 |
## 二、route命令安裝與基本語法
### 2.1 安裝route命令
大多數Linux發行版默認已安裝net-tools包,如果未安裝可執行:
```bash
# Debian/Ubuntu
sudo apt install net-tools
# RHEL/CentOS
sudo yum install net-tools
# Arch Linux
sudo pacman -S net-tools
route [-v] [-A family] [-4|-6]
add [-net|-host] target [netmask Nm] [gw Gw] [metric M]
[[dev] If]
del [-net|-host] target [netmask Nm] [gw Gw] [metric M]
[[dev] If]
常用參數說明:
- -n
:以數字形式顯示地址(不解析主機名)
- -v
:顯示詳細信息
- add
:添加路由
- del
:刪除路由
- -net
:目標是一個網絡
- -host
:目標是一個主機
- netmask
:指定子網掩碼
- gw
:指定網關
- metric
:設置路由metric值
- dev
:指定網絡接口
基本查看命令:
route
典型輸出示例:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
各列含義: - Destination:目標網絡或主機 - Gateway:網關地址,”0.0.0.0”表示不需要網關 - Genmask:網絡掩碼 - Flags:路由標志(U=啟用,G=網關,H=主機路由等) - Metric:路由距離 - Ref:路由引用計數 - Use:路由查找次數 - Iface:網絡接口
避免DNS解析,加快顯示速度:
route -n
輸出示例:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
route -A inet6
sudo route add default gw 192.168.1.1 eth0
參數說明:
- default
:表示默認路由
- gw 192.168.1.1
:指定網關IP
- eth0
:指定出口網卡
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 eth0
sudo route add -host 203.0.113.45 gw 192.168.1.3 eth0
sudo route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.4 metric 5 eth0
Metric值表示路由優先級,數值越小優先級越高。
sudo route del default
sudo route del -net 10.0.0.0 netmask 255.0.0.0
sudo route del -host 203.0.113.45
當系統有多個網絡接口時,需要合理配置路由:
# 添加通過eth1訪問特定網絡的路由
sudo route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1
# 設置不同metric值控制優先級
sudo route add -net 10.0.0.0/8 gw 192.168.1.1 metric 100 eth0
sudo route add -net 10.0.0.0/8 gw 192.168.2.1 metric 200 eth1
雖然route命令本身不支持復雜的策略路由,但可以結合其他工具實現:
# 首先添加路由表
echo "200 custom" >> /etc/iproute2/rt_tables
# 使用ip命令添加規則(route命令無法完成)
ip rule add from 192.168.1.100 lookup custom
ip route add default via 192.168.1.254 dev eth0 table custom
通過route命令添加的路由在重啟后會丟失,需要持久化配置:
編輯/etc/network/interfaces
:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2
創建/etc/sysconfig/network-scripts/route-eth0
:
10.0.0.0/8 via 192.168.1.2 dev eth0
檢查步驟:
1. 確認路由已正確添加:route -n
2. 檢查網絡接口狀態:ip link show
3. 測試網絡連通性:ping -R 目標地址
4. 檢查防火墻設置:iptables -L
當出現多個相同目標的路由時:
# 查看詳細路由信息
ip route show exact 192.168.1.0/24
# 刪除不需要的路由
sudo route del -net 192.168.1.0 netmask 255.255.255.0
使用traceroute
診斷路由路徑:
traceroute -n 8.8.8.8
# 主線路(電信)
sudo route add default gw 221.5.88.1 eth0 metric 100
# 備份線路(聯通)
sudo route add default gw 112.94.1.1 eth1 metric 200
# 特定網段走專線
sudo route add -net 10.0.0.0/8 gw 192.168.100.1 eth2
# 添加VPN路由
sudo route add -net 172.16.0.0 netmask 255.240.0.0 dev tun0
# 排除公司內網不走VPN
sudo route add -net 192.168.0.0 netmask 255.255.0.0 gw 原網關IP eth0
# Docker容器網絡路由
sudo route add -net 172.17.0.0 netmask 255.255.0.0 dev docker0
# 允許其他主機訪問容器
sudo route add -net 172.17.0.0/16 gw 容器宿主機IP
限制路由修改權限:
sudo chmod 640 /sbin/route
sudo chown root:netadmin /sbin/route
定期審計路由表:
# 保存當前路由快照
route -n > /var/log/routes/$(date +%Y%m%d).log
使用網絡命名空間隔離敏感路由:
ip netns add secure-env
ip netns exec secure-env route add -net 10.10.0.0/24 dev veth0
隨著Linux內核網絡棧的發展,net-tools工具集(包括route)已經停止維護: - 最后穩定版本發布于2011年 - 缺少對新網絡特性的支持(如VRF、多路徑路由等) - 逐漸被iproute2替代
常用命令對比:
操作 | route命令 | ip route命令 |
---|---|---|
顯示路由 | route -n | ip route show |
添加默認路由 | route add default gw 192.168.1.1 | ip route add default via 192.168.1.1 |
添加網絡路由 | route add -net 10.0.0.0/8 gw… | ip route add 10.0.0.0/8 via… |
刪除路由 | route del -net 10.0.0.0/8 | ip route del 10.0.0.0/8 |
現代基礎設施中推薦使用專業工具管理路由: - NetworkManager:桌面和服務器網絡管理 - systemd-networkd:基于systemd的網絡配置 - BGP/OSPF:通過Quagga/FRR實現動態路由 - SDN控制器:如OpenDaylight、ONOS等
Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables
route [-v] [-FC] {add|del|flush} ... Modify routing table for AF
route {-h|--help} [<AF>] Detailed usage syntax
route {-V|--version} Display version/author info
Options:
-v, --verbose be verbose
-n, --numeric don't resolve names
-e, --extend display other/more information
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
-4 shortcut for -A inet
-6 shortcut for -A inet6
<AF>=Use -A, --af; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
ip命令:
ip route show
ip route add/del
網絡診斷工具:
netstat -rn
ss -r
traceroute
mtr
網絡配置工具:
nmcli
ifconfig
ifup/ifdown
官方文檔:
man route
man ip-route
在線資源:
專業書籍:
”`
注:本文實際約4500字,要達到10450字需要進一步擴展每個章節的詳細內容,增加更多示例、場景分析和技術細節。由于篇幅限制,這里提供了完整框架和主要內容,您可以根據需要擴展具體章節。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。