Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux route 命令與 IP 路由工作原理深度解析

編輯:Linux 系統常見問題解答

IP 路由核心原理

  • 主機 vs 路由器:主機不轉發報文 (除非啟用 IP 轉發);路由器核心功能是接收報文並按路由表轉發至下一跳。
  • 路由表查找順序:
    1. 精確匹配主機路由:目的 IP 完整匹配 (掩碼 255.255.255.255)。
    2. 匹配網絡路由:目的 IP 網絡部分匹配 (最長前綴匹配 LPM)。
    3. 默認路由:0.0.0.0/0,網關為默認網關。
    4. 無匹配:發送 ICMP Host/Net Unreachable 給發送方。
  • 路由表項字段:目的網絡/主機、網關/下一跳、標志 (U=Up, G=Gateway, H=Host)、接口、MSS/Window/irtt。

路由表查看


# 顯示數字地址、不解析主機名
route -n
# 或
netstat -rn
# 或現代 ss/ip 命令
ip route show
ss -rn

輸出示例解讀

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
  • U:路由可達 (Up)。
  • G:需經過網關 (Gateway),非直連。
  • H:目標是主機 (Host route)。
  • Genmask:255.255.255.255 表主機路由;0.0.0.0 表默認路由。

靜態路由配置

臨時生效 (重啟失效)


# 添加網絡路由
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.2.2
# 或指定出接口
route add -net 192.168.10.0 netmask 255.255.255.0 dev eth1

# 添加主機路由
route add -host 10.0.0.5 gw 192.168.2.3

# 添加默認網關
route add default gw 192.168.2.1

# 刪除路由
route del -net 192.168.10.0 netmask 255.255.255.0
route del default gw 192.168.2.1

永久生效 (各發行版)

  • CentOS/RHEL:/etc/sysconfig/network-scripts/route-eth0
    192.168.10.0/24 via 192.168.2.2 dev eth0
    10.0.0.5/32 via 192.168.2.3 dev eth0
    default via 192.168.2.1 dev eth0
    
  • Ubuntu/Debian (netplan):/etc/netplan/01-netcfg.yaml
    network:
      version: 2
      ethernets:
        eth0:
          routes:
            - to: 192.168.10.0/24
              via: 192.168.2.2
            - to: 0.0.0.0/0
              via: 192.168.2.1
    
  • 通用 rc.local:在 /etc/rc.d/rc.local 添加 route add ... (需 chmod +x)。

策略路由 (進階)

基於源 IP、標記、接口等策略決定路由表:


# 1. 定義新路由表
echo "200 mytable" >> /etc/iproute2/rt_tables

# 2. 添加路由到該表
ip route add 192.168.10.0/24 via 192.168.2.2 dev eth0 table mytable
ip route add default via 192.168.2.1 dev eth0 table mytable

# 3. 添加規則匹配源 IP 使用該表
ip rule add from 192.168.100.0/24 table mytable priority 100

# 4. 查看規則
ip rule show

內核路由緩存與 gc

  • 內核維護路由緩存 (dst_entry) 加速轉發,定期垃圾回收 (rhthresh, gc_interval)。
  • 大量短連接可能導致緩存擴張,調整 /proc/sys/net/ipv4/route/gc_thresh 等參數。
Copyright © Windows教程網 All Rights Reserved