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 命令、rc.local、static-routes 三種方案對比

編輯:Linux 教學

多網卡、多網段、VPN 互通、容器網路等場景常需在 Linux 主機手動添加靜態路由。本文系統講解 route/ip route 命令添加臨時/永久路由、/etc/rc.local 開機腳本方案、/etc/sysconfig/static-routes (RHEL 系) 與 /etc/network/interfaces (Debian 系) 原生配置三大流派,並給出驗證、刪除、故障排查命令速查表。

一、臨時路由 (立即生效、重啟失效)

傳統 route 命令 (net-tools,已棄用但仍通用)

# 添加預設網關
route add default gw 10.0.0.1

# 添加網段路由 (指定網關)
route add -net 192.168.2.0/24 gw 192.168.2.254

# 添加主機路由
route add -host 192.168.2.2 gw 192.168.2.254

# 刪除路由
route del default gw 10.0.0.1
route del -net 192.168.2.0/24

現代 ip route 命令 (iproute2,推薦)

# 添加預設路由
ip route add default via 10.0.0.1

# 添加網段路由
ip route add 192.168.2.0/24 via 192.168.2.254

# 添加主機路由
ip route add 192.168.2.2 via 192.168.2.254

# 指定出口介面
ip route add 10.10.0.0/16 via 192.168.1.1 dev eth1

# 刪除
ip route del 192.168.2.0/24

二、永久生效方案對比

方案適用發行版配置檔案優點缺點
rc.local 腳本所有 Systemd 發行版/etc/rc.local通用、簡單、支援任意命令執行時機晚、無依賴管理、Systemd 需啟用 rc-local.service
static-routesRHEL/CentOS/Fedora/Alma/Rocky/etc/sysconfig/static-routes原生支援、網路服務早期載入僅限 RHEL 系、格式特殊、新版已棄用建議改用 NetworkManager
NetworkManagerRHEL 7+/Fedora/CentOS 7+/Ubuntu 16.04+nmcli / /etc/NetworkManager/system-connections/現代標準、支援動態/靜態、CLI/TUI/GUI、連線設定檔管理學習曲線稍陡
/etc/network/interfacesDebian/Ubuntu (非 NM 管理時)/etc/network/interfacesDebian 傳統、簡單聲明式若啟用 NetworkManager 會衝突
systemd-networkdArch/CentOS 8+/Ubuntu 20.04+ (可選)/etc/systemd/network/*.network輕量、聲明式、無守護進程依賴功能較 NM 簡單

三、RHEL 系 static-routes 格式詳解

檔案:/etc/sysconfig/static-routes (不存在須手動建立)

# 格式: any [net|host] 目標網段/主機 gw 網關 [dev 介面]
any net 192.168.2.0/24 gw 192.168.2.254
any host 192.168.2.2 gw 192.168.2.254
any net 10.0.0.0/8 gw 10.0.0.1 dev eth1
  • any:固定關鍵字(歷史遺留,代表所有介面)。
  • net/host:目標類型。
  • 網關必須直連 (L2 可達)。

生效方式:systemctl restart network 或 /etc/init.d/network restart。

四、NetworkManager 現代配置 (nmcli)

# 查看連線名稱
nmcli con show

# 為連線 "Wired connection 1" 添加靜態路由
nmcli con mod "Wired connection 1" +ipv4.routes "192.168.2.0/24 192.168.2.254"
nmcli con mod "Wired connection 1" +ipv4.routes "10.0.0.0/8 10.0.0.1"

# 設定為永久 (預設即永久)
nmcli con up "Wired connection 1"

# 查看已配置路由
nmcli -f ipv4.routes con show "Wired connection 1"

五、Debian/Ubuntu /etc/network/interfaces

auto eth0
iface eth0 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1
    # 靜態路由
    up route add -net 192.168.2.0/24 gw 192.168.1.254
    down route del -net 192.168.2.0/24 gw 192.168.1.254
    # 或使用 ip route
    up ip route add 192.168.2.0/24 via 192.168.1.254
    down ip route del 192.168.2.0/24 via 192.168.1.254

六、驗證與故障排查命令速查

操作命令
查看路由表route -n / ip route show / netstat -rn
查看預設網關ip route show default / route -n | grep ^0.0.0.0
測試連通性ping -c 3 192.168.2.2 / traceroute 192.168.2.2
追蹤封包路徑tracepath 192.168.2.2 / mtr 192.168.2.2
檢查路由規則ip rule show (策略路由)
查看內核路由快取ip route show cache (舊內核)
啟用 IP 轉發 (路由器模式)sysctl -w net.ipv4.ip_forward=1 + /etc/sysctl.conf 持久化

七、常見坑點

  • 網關不可達:添加路由前確保 ping 網關 IP 通,否則路由無效。
  • 衝突的預設路由:多張 NIC 各自 DHCP 獲取預設網關,導致非對稱路由。解決:ip route add default via GW1 dev eth1 metric 100 設定 metric 優先級,或關閉非主 NIC 的 DEFROUTE=no (NetworkManager)。
  • static-routes 不生效:RHEL 8+ network-scripts 已棄用,建議遷移至 NetworkManager。
  • 容器/VM 网络:宿主機作為網關需啟用 ip_forward 並配置 SNAT (iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE)。

八、最佳實踐建議

  1. 新環境:統一使用 NetworkManager (nmcli) 管理靜態路由,版本控制連線設定檔 (/etc/NetworkManager/system-connections/)。
  2. 舊環境維護:RHEL 6/7 繼續用 static-routes 或 rc.local,避免大規模遷移風險。
  3. 自動化部署:Ansible nmcli 模組或 template 生成 static-routes/interfaces,納入基線合規檢查。
  4. 文檔化:維護「網段 → 網關 → 出口介面 → 業務用途」對照表,變更走流程。

靜態路由雖是基礎網路技能,但「臨時生效 ≠ 永久生效」、「RHEL 系 ≠ Debian 系」、「network-scripts ≠ NetworkManager」的差異常導致重啟後失效或衝突。掌握三大流派並按發行版選型,是 Linux 網路運維的必修課。

Copyright © Windows教程網 All Rights Reserved