route 命令是傳統的 Linux 核心路由表操作工具,雖然現代發行版推薦使用 ip route(iproute2 套件),但 route 仍廣泛存在於腳本、舊版系統與嵌入式設備中。本文系統整理 route 的語法、參數、輸出解讀與實戰場景,助你精準掌握靜態路由管理。
route [-n] [-e] [-v] [-F] [-C] [add|del] [-net|-host] 目標 [netmask 掩碼] [gw 閘道] [metric 數值] [dev 介面]
| 參數 | 說明 |
|---|---|
-n | 數值格式顯示 IP/埠,**不做 DNS 反解**(腳本/生產環境必加,加速顯示) |
-e | 擴展格式顯示(含 Use, Iface 等欄位) |
-v | 詳細模式 |
-F | 顯示核心 FIB(轉發資訊庫),預設動作 |
-C | 顯示路由快取(舊核心相關,現代核心多無輸出) |
add | 新增路由 |
del | 刪除路由 |
-net | 目標為網段(需配合 netmask) |
-host | 目標為單一主機(預設,掩碼 255.255.255.255) |
netmask | 指定子網掩碼(如 255.255.255.0) |
gw | 指定下一跳閘道 IP(**必須可直達**) |
metric | 路由度量值(優先級,越小優先級越高,範圍 0-9999) |
dev | 指定出站網路介面(如 eth0, ens33) |
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.120.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.120.1 255.255.0.0 UG 0 0 0 eth0
10.0.0.0 192.168.120.1 255.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.120.240 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 或 default 表示預設路由。0.0.0.0 或 * 表示直連(無需閘道)。U:Route is Up(路由啟用)G:Use Gateway(需經由閘道)H:Target is a Host(主機路由,掩碼 255.255.255.255)D:Dynamically installed(動態學習,如 RIP/OSPF)M:Modified by daemon(被守護進程修改)!:Reject route(拒絕路由)route -n # 數值模式,快速、不卡 DNS
route -e # 擴展資訊
netstat -rn # 等效替代,net-tools 套件
ip route show # 現代標準工具 (iproute2),輸出更豐富
# 臨時生效(重啟網路/重開機失效)
route add default gw 192.168.120.240 dev eth0
# 等效現代寫法
ip route add default via 192.168.120.240 dev eth0
# 目標網段 192.168.10.0/24 經由閘道 192.168.120.1 走 eth0
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.120.1 dev eth0
# 指定 metric 優先級(較小優先)
route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.120.1 metric 100 dev eth0
route add -host 10.10.20.5 gw 192.168.120.50 dev eth1
# 刪除預設路由
route del default gw 192.168.120.240
# 刪除網段路由
route del -net 192.168.10.0 netmask 255.255.255.0
# 刪除主機路由
route del -host 10.10.20.5
# 將目標流量直接丟棄(不發送 ICMP 不可達)
route add -net 192.168.200.0/24 reject
# 或
route add -host 203.0.113.100 reject
⚠️ 關鍵:
route命令行操作僅影響運行時核心路由表,重啟網路服務或重開機即失效。必須寫入啟動配置檔。
# 方法一:/etc/sysconfig/network-scripts/route-介面名 (推薦)
# 檔案:/etc/sysconfig/network-scripts/route-eth0
192.168.10.0/24 via 192.168.120.1 dev eth0
10.0.0.0/8 via 192.168.120.1 dev eth0
default via 192.168.120.240 dev eth0
# 方法二:/etc/rc.local (兼容舊習慣)
echo "route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.120.1 dev eth0" >> /etc/rc.local
chmod +x /etc/rc.local
# /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.120.204
netmask 255.255.255.0
gateway 192.168.120.240
# 靜態路由
up route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.120.1
down route del -net 192.168.10.0 netmask 255.255.255.0
# /etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
Address=192.168.120.204/24
Gateway=192.168.120.240
[Route]
Destination=192.168.10.0/24
Gateway=192.168.120.1
[Route]
Destination=10.0.0.0/8
Gateway=192.168.120.1
| 操作 | route (舊) | ip route (新, 推薦) |
|---|---|---|
| 顯示路由表 | route -n | ip route show / ip r |
| 添加預設路由 | route add default gw IP dev IF | ip route add default via IP dev IF |
| 添加網段路由 | route add -net NET/掩碼 gw IP dev IF | ip route add NET/掩碼 via IP dev IF |
| 刪除路由 | route del ... | ip route del ... |
| 修改路由 | 不支援 (需 del 再 add) | ip route change ... / ip route replace ... |
| 獲取路由決策 | 無 | ip route get IP |
| 策略路由 | 不支援 | ip rule + ip route (table) |

gw 指定的 IP 必須在本機直連網段內(同一 L2 網域),否則報錯 SIOCADDRT: Network is unreachable。netmask 必須與目標網段匹配,CIDR 寫法(/24)僅 ip route 支援,route 必須用點分十進制。dev ethX,否則核心可能選錯出站介面導致路由非對稱。route -A inet6 或 ip -6 route,操作邏輯一致。掌握 route 命令,不僅能維護舊系統、解讀既有腳本,更能深入理解 Linux 網路層轉發決策邏輯。生產環境新建配置請優先使用 ip route 並配合發行版持久化機制,構建穩定、可維護的網路基礎設施。
Linux 環境變數 LANG 與 NLS_LANG 區別深度解析:系統語系 vs Oracle 客戶端語系
VNC 遠程連線 Linux 桌面完整教學:Server 安裝、配置、密碼、防火牆、Viewer 連線
Linux 終端機快捷鍵大全:刪除、移動、替換、歷史指令與進階技巧
Linux uniq 指令完全攻略:去除重複行、統計頻率與進階欄位過濾
chmod 權限管理精要:符號/八進位模式、三組身分、遞迴/參考檔、特殊權限、目錄執行位意義、umask 預設值
Docker 自訂映像檔建立完整教學:Tar 打包基礎映像與 Scratch 空白映像兩大方法實戰