萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux route 命令實戰:靜態路由配置、預設網關管理與路由表解讀

route 命令定位

route (net-tools 套件) 為傳統路由表管理工具,現代系統推薦使用 ip route (iproute2 套件) 功能更強、輸出更易解析。本文兼顧兩者說明。

路由表核心欄位解讀 (route -n / ip route show)

# 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     0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
  • Destination:目標網段/主機。
  • Gateway:下一跳網關 IP (0.0.0.0 表示直連/本地網段)。
  • Genmask:子網掩碼 (決定網段範圍)。
  • Flags:U=Up(啟用) G=Gateway(經網關) H=Host(主機路由) D=Dynamic(動態路由) M=Modified !=Reject(拒絕)。
  • Metric:度量值 (成本),值越小優先級越高。
  • Iface:出站網卡介面。

常見操作場景與指令對照

1. 查看路由表

route -n                    # 數值格式顯示 (快,不做 DNS 反解)
ip route show               # 現代格式,更清晰
ip route show table all     # 顯示所有路由表 (含 policy routing)

2. 設定/修改預設網關 (最常用)

# 傳統 route (臨時,重啟失效)
route add default gw 192.168.1.1
route del default gw 192.168.1.1

# 現代 ip route (推薦)
ip route add default via 192.168.1.1 dev eth0
ip route del default via 192.168.1.1 dev eth0
ip route replace default via 192.168.1.1 dev eth0  # 原子性替換

# 永久生效 (RHEL/CentOS)
echo "GATEWAY=192.168.1.1" >> /etc/sysconfig/network-scripts/ifcfg-eth0
# 永久生效 (Debian/Ubuntu netplan)
# /etc/netplan/01-netcfg.yaml -> routes: - to: default via: 192.168.1.1

3. 添加靜態路由 (訪問特定網段指定網關)

# 訪問 10.0.0.0/8 網段走 192.168.1.254 网关
route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254 dev eth0

ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0

# 禁用/拒絕某網段 (黑洞路由)
route add -net 192.168.100.0 netmask 255.255.255.0 reject
ip route add blackhole 192.168.100.0/24  # 現代寫法,直接丟棄不回 ICMP

4. 刪除路由

route del -net 10.0.0.0 netmask 255.0.0.0
ip route del 10.0.0.0/8

5. 主機路由 (針對單一 IP)

route add -host 10.10.10.10 gw 192.168.1.5
ip route add 10.10.10.10/32 via 192.168.1.5

進階:策略路由

根據來源 IP、標記 (fwmark)、TOS 等選擇不同路由表:

# 規則: 來自 192.168.10.0/24 的封包查 table 10
ip rule add from 192.168.10.0/24 table 10 priority 100
# table 10 中定義專屬預設路由
ip route add default via 10.0.0.1 dev eth1 table 10

# 查看規則
ip rule show

持久化配置最佳實踐

發行版配置文件關鍵配置範例
RHEL/CentOS 7 (network-scripts)/etc/sysconfig/network-scripts/route-eth010.0.0.0/8 via 192.168.1.254 dev eth0
RHEL 8/9, Fedora (NetworkManager)nmcli / /etc/NetworkManager/system-connections/nmcli con mod eth0 +ipv4.routes "10.0.0.0/8 192.168.1.254"
Debian/Ubuntu (netplan)/etc/netplan/*.yamlroutes: - to: 10.0.0.0/8 via: 192.168.1.254
通用 (rc.local 臨時)/etc/rc.localip route add ... (需執行權限)

故障排查檢查清單

  1. ip route get 8.8.8.8 驗證去向特定 IP 的實際路由決策。
  2. 檢查 rp_filter (反向路徑驗證) 是否導致非對稱路由丟包:sysctl net.ipv4.conf.all.rp_filter (建議設 2 鬆散模式)。
  3. 多網卡場景確認 metric 值,避免預設路由衝突。
  4. 檢查防火牆 iptables -t filter -nvL FORWARD / nft list chain inet filter forward 是否允許轉發。
copyright © 萬盛學電腦網 all rights reserved