Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux route 命令詳解:靜態路由配置與路由表管理實戰

編輯:關於 Linux

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

欄位含義

  • Destination:目標網段/主機地址。0.0.0.0 或 default 表示預設路由。
  • Gateway:下一跳閘道。0.0.0.0 或 * 表示直連(無需閘道)。
  • Genmask:子網掩碼。決定目標地址匹配範圍。
  • Flags:路由標誌(關鍵):
    • 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(拒絕路由)
  • Metric:路由成本/優先級,數值越小優先級越高。
  • Ref:路由被引用次數(通常參考值)。
  • Use:透過此路由查找/發送的封包計數。
  • Iface:出站網路介面。

實戰場景範例

場景 1:查看當前路由表(生產環境標準姿勢)

route -n          # 數值模式,快速、不卡 DNS
route -e          # 擴展資訊
netstat -rn       # 等效替代,net-tools 套件
ip route show     # 現代標準工具 (iproute2),輸出更豐富

場景 2:添加預設網關(最常見操作)

# 臨時生效(重啟網路/重開機失效)
route add default gw 192.168.120.240 dev eth0

# 等效現代寫法
ip route add default via 192.168.120.240 dev eth0

場景 3:添加靜態網段路由(跨網段訪問)

# 目標網段 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

場景 4:添加主機路由(特定 IP 走專用鏈路)

route add -host 10.10.20.5 gw 192.168.120.50 dev eth1

場景 5:刪除路由

# 刪除預設路由
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

場景 6:拒絕路由(黑洞路由,防洪/封禁)

# 將目標流量直接丟棄(不發送 ICMP 不可達)
route add -net 192.168.200.0/24 reject
# 或
route add -host 203.0.113.100 reject

持久化配置:讓路由重啟生效

⚠️ 關鍵:route 命令行操作僅影響運行時核心路由表,重啟網路服務或重開機即失效。必須寫入啟動配置檔。

RHEL/CentOS/Fedora 系統

# 方法一:/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

Debian/Ubuntu 系統

# /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

通用 systemd-networkd 方式(現代系統)

# /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 vs ip route:新舊工具對照速查

操作route (舊)ip route (新, 推薦)
顯示路由表route -nip route show / ip r
添加預設路由route add default gw IP dev IFip route add default via IP dev IF
添加網段路由route add -net NET/掩碼 gw IP dev IFip 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)

route命令輸出示例

常見坑點與最佳實踐

  1. 閘道不可達:gw 指定的 IP 必須在本機直連網段內(同一 L2 網域),否則報錯 SIOCADDRT: Network is unreachable。
  2. 掩碼寫錯:netmask 必須與目標網段匹配,CIDR 寫法(/24)僅 ip route 支援,route 必須用點分十進制。
  3. 介面未指定:多網卡機器務必加 dev ethX,否則核心可能選錯出站介面導致路由非對稱。
  4. Metric 衝突:多條同樣目標路由時,Metric 決定優先級;預設 0,手動添加建議顯式指定(如 100, 200)避免歧義。
  5. IPv6 路由:route -A inet6 或 ip -6 route,操作邏輯一致。

掌握 route 命令,不僅能維護舊系統、解讀既有腳本,更能深入理解 Linux 網路層轉發決策邏輯。生產環境新建配置請優先使用 ip route 並配合發行版持久化機制,構建穩定、可維護的網路基礎設施。

Copyright © Windows教程網 All Rights Reserved