day3-路由

路由基础概念

什么是路由

路由是网络中数据包从源地址到目标地址的路径选择过程。路由器根据路由表中的信息决定数据包的转发方向。

路由表结构

每个路由表条目包含以下信息:

  • 目标网络:数据包要到达的网络地址
  • 子网掩码:定义网络部分的位数
  • 下一跳:数据包的下一个转发地址
  • 接口:数据包从哪个网络接口发出
  • 跃点数/度量值:到达目标的代价

路由匹配原则

  1. 最长前缀匹配:选择与目标地址匹配位数最多的路由
  2. 管理距离优先:相同目标的路由中,选择管理距离最小的
  3. 度量值比较:相同协议的路由中,选择度量值最小的

路由类型详解

1. 静态路由

概念

管理员手动配置的固定路由条目,不会自动适应网络拓扑变化。

特点

  • ✅ 配置简单,资源消耗少
  • ✅ 路径可控,安全性高
  • ❌ 不能自动适应网络变化
  • ❌ 大网络中维护困难

配置示例

1. Linux系统
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

1. 永久生效(CentOS/RHEL)
echo "192.168.2.0/24 via 192.168.1.1 dev eth0" >> /etc/sysconfig/network-scripts/route-eth0

2. 默认路由

概念

当没有特定路由匹配时使用的路由,通常指向Internet网关。

配置示例

1. 添加默认路由
ip route add default via 192.168.1.1

1. 查看默认路由
ip route show default

3. 动态路由

概念

动态路由是指路由器之间通过路由协议自动交换路由信息,并根据网络拓扑变化自动更新路由表的技术。与静态路由不同,动态路由能够自适应网络环境的变化。

动态路由的工作原理

  1. 邻居发现:路由器启动后发现相邻的路由器
  2. 拓扑学习:通过协议消息了解网络拓扑结构
  3. 路径计算:使用算法计算到达目标网络的最佳路径
  4. 路由更新:当网络拓扑发生变化时自动更新路由表
  5. 收敛过程:网络中所有路由器达到一致的路由信息状态

动态路由的优缺点

优点

  • ✅ 自动适应网络拓扑变化
  • ✅ 减少管理员的配置工作量
  • ✅ 提供网络冗余和故障恢复
  • ✅ 支持负载均衡

缺点

  • ❌ 消耗更多的CPU和内存资源
  • ❌ 占用网络带宽传输协议消息
  • ❌ 配置和故障排查相对复杂
  • ❌ 收敛时间可能较长

动态路由协议分类

按算法分类

  • 距离矢量协议:基于距离和方向选择路径(如RIP)
  • 链路状态协议:基于链路状态数据库计算最短路径(如OSPF)
  • 路径矢量协议:基于AS路径属性选择路径(如BGP)

按应用范围分类

  • IGP(内部网关协议):在自治系统内部使用(RIP、OSPF、EIGRP)
  • EGP(外部网关协议):在自治系统之间使用(BGP)

主要协议对比

协议 类型 适用范围 收敛速度 复杂度 最大跳数 度量值
RIP 距离矢量 小型网络 15 跳数
OSPF 链路状态 中大型网络 无限制 带宽
BGP 路径矢量 互联网 无限制 多属性
EIGRP 混合型 思科设备 255 复合度量

Linux路由管理

路由查看命令

1. 查看路由表
ip route show                    # 推荐使用
route -n                        # 传统命令
netstat -rn                     # 网络统计信息

1. 查看特定路由
ip route get 8.8.8.8            # 查看到达特定地址的路由
ip route show table main        # 查看主路由表
ip route show table all         # 查看所有路由表

路由操作命令

1. 添加路由
ip route add 10.0.0.0/8 via 192.168.1.1
ip route add 172.16.0.0/16 dev eth1

1. 删除路由
ip route del 10.0.0.0/8
ip route del default

1. 修改路由
ip route change default via 192.168.1.2

1. 替换路由
ip route replace 10.0.0.0/8 via 192.168.1.3

多路径路由(ECMP)

1. 添加等价多路径路由
ip route add 10.0.0.0/8 \
  nexthop via 192.168.1.1 weight 1 \
  nexthop via 192.168.1.2 weight 1

1. 查看多路径路由详情
ip route show 10.0.0.0/8

路由配置文件

1. /etc/sysconfig/network-scripts/route-eth0
192.168.2.0/24 via 192.168.1.1 dev eth0
10.0.0.0/8 via 192.168.1.1 dev eth0

策略路由技术

策略路由概念

策略路由(Policy-Based Routing,PBR)允许基于多种条件进行路由决策,而不仅仅是目标IP地址。

传统路由 vs 策略路由

特性 传统路由 策略路由
决策依据 目标IP地址 源地址、协议、端口等多种条件
灵活性
配置复杂度 简单 相对复杂
资源消耗 中等
应用场景 通用场景 流量工程、QoS、负载均衡

Linux 策略路由

路由表管理

1. 查看路由表定义
cat /etc/iproute2/rt_tables

1. 添加自定义路由表
echo "100 telecom" >> /etc/iproute2/rt_tables
echo "200 unicom" >> /etc/iproute2/rt_tables

1. 向路由表添加路由
ip route add default via 202.96.1.1 dev eth0 table telecom
ip route add default via 221.5.1.1 dev eth1 table unicom

1. 查看特定路由表
ip route show table telecom

策略规则管理

1. 查看策略规则
ip rule list

1. 基于源地址的策略路由
ip rule add from 192.168.1.0/24 table telecom priority 100
ip rule add from 192.168.2.0/24 table unicom priority 101

1. 基于目标地址的策略路由
ip rule add to 10.0.0.0/8 table internal priority 200

1. 基于接口的策略路由
ip rule add iif eth0 table table1 priority 300
ip rule add oif eth1 table table2 priority 301

1. 基于标记的策略路由
ip rule add fwmark 1 table highprio priority 400

1. 删除策略规则
ip rule del from 192.168.1.0/24 table telecom

实际应用案例

案例1:双线负载均衡

场景:企业有电信和联通两条线路,需要实现负载均衡

#!/bin/bash
1. 双线负载均衡配置脚本

1. 定义变量
TELECOM_GW="202.96.1.1"
UNICOM_GW="221.5.1.1"
TELECOM_DEV="eth0"
UNICOM_DEV="eth1"
INTERNAL_DEV="eth2"

1. 创建路由表
echo "100 telecom" >> /etc/iproute2/rt_tables
echo "200 unicom" >> /etc/iproute2/rt_tables

1. 配置路由表
ip route add default via $TELECOM_GW dev $TELECOM_DEV table telecom
ip route add default via $UNICOM_GW dev $UNICOM_DEV table unicom
ip route add 192.168.0.0/16 dev $INTERNAL_DEV table telecom
ip route add 192.168.0.0/16 dev $INTERNAL_DEV table unicom

1. 配置策略路由
ip rule add from 192.168.1.0/24 table telecom priority 100
ip rule add from 192.168.2.0/24 table unicom priority 101

1. 配置默认路由负载均衡
ip route add default scope global \
  nexthop via $TELECOM_GW dev $TELECOM_DEV weight 1 \
  nexthop via $UNICOM_GW dev $UNICOM_DEV weight 1

1. 刷新路由缓存
ip route flush cache

echo "双线负载均衡配置完成"

案例2:基于应用的流量分流

场景:HTTP/HTTPS流量走高带宽链路,其他流量走标准链路

#!/bin/bash
1. 基于应用的流量分流

1. 创建路由表
echo "110 highbw" >> /etc/iproute2/rt_tables
echo "120 standard" >> /etc/iproute2/rt_tables

1. 配置路由表
ip route add default via 10.1.1.1 dev eth0 table highbw
ip route add default via 10.2.1.1 dev eth1 table standard

1. 使用iptables标记HTTP/HTTPS流量
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 1

1. 配置基于标记的策略路由
ip rule add fwmark 1 table highbw priority 100
ip rule add table standard priority 200

echo "基于应用的流量分流配置完成"

动态路由协议

OSPF 协议

基本概念

  • 链路状态协议:每个路由器维护整个网络拓扑
  • 分层设计:支持区域划分,减少路由信息
  • 快速收敛:网络变化时快速重新计算路由

配置示例(Quagga/FRR)

1. 安装FRR
yum install frr -y

1. 配置OSPF
vtysh
configure terminal
router ospf
network 192.168.1.0/24 area 0
network 10.0.0.0/8 area 1
area 1 stub
exit

BGP 协议

基本概念

  • 路径矢量协议:基于AS路径进行路由选择
  • 策略丰富:支持复杂的路由策略
  • 互联网核心:是互联网的核心路由协议

配置示例

1. BGP基本配置
router bgp 65001
bgp router-id 1.1.1.1
neighbor 192.168.1.2 remote-as 65002
neighbor 192.168.1.2 update-source loopback0
network 10.0.0.0/8

路由故障排查

故障排查流程

graph TD
    A[网络连接问题] --> B[检查物理连接]
    B --> C[检查接口状态]
    C --> D[检查IP配置]
    D --> E[检查路由表]
    E --> F[测试连通性]
    F --> G[检查防火墙]
    G --> H[抓包分析]

常用诊断命令

基础连通性测试

1. Ping测试
ping -c 4 8.8.8.8                     # 基本连通性
ping -I eth0 8.8.8.8                  # 指定接口
ping -s 1472 8.8.8.8                  # 测试MTU

1. 路径跟踪
traceroute 8.8.8.8                    # 跟踪路由路径
traceroute -I 8.8.8.8                 # 使用ICMP
mtr 8.8.8.8                           # 综合网络诊断工具

路由诊断

1. 路由测试
ip route get 8.8.8.8                  # 查看路由选择
ip route get 8.8.8.8 from 192.168.1.100  # 指定源地址

1. 接口状态
ip link show                           # 查看接口状态
ip addr show                          # 查看IP地址
ethtool eth0                          # 查看接口详情

高级诊断

1. 网络统计
netstat -i                            # 接口统计信息
ss -tuln                              # 端口监听状态
iftop                                 # 实时流量监控

1. 抓包分析
tcpdump -i eth0 host 8.8.8.8         # 抓取特定主机流量
tcpdump -i any -w capture.pcap       # 保存抓包文件

常见问题解决

问题1:路由不可达

1. 检查路由表
ip route show

1. 添加缺失路由
ip route add 10.0.0.0/8 via 192.168.1.1

1. 检查ARP表
arp -a
ip neighbor show

问题2:默认网关问题

1. 检查默认路由
ip route show default

1. 删除错误的默认路由
ip route del default

1. 添加正确的默认路由
ip route add default via 192.168.1.1

问题3:策略路由不生效

1. 检查策略规则
ip rule list

1. 检查路由表内容
ip route show table all

1. 测试策略路由
ip route get 8.8.8.8 from 192.168.1.100

1. 刷新路由缓存
ip route flush cache

最佳实践与优化

路由设计原则

1. 分层设计

  • 核心层:高性能骨干网络
  • 汇聚层:路由策略和安全控制
  • 接入层:终端设备连接

2. 冗余设计

  • 多路径冗余:避免单点故障
  • 设备冗余:关键节点双设备
  • 链路冗余:重要链路备份

3. 性能优化

  • 路由汇总:减少路由表大小
  • 负载均衡:充分利用带宽资源
  • QoS集成:保证关键业务质量

监控与维护

路由监控脚本

#!/bin/bash
1. 路由监控脚本

LOG_FILE="/var/log/route_monitor.log"
EMAIL="admin@company.com"

1. 检查默认路由
check_default_route() {
    if ! ip route show default | grep -q "default"; then
        echo "$(date): 默认路由丢失" >> $LOG_FILE
        echo "默认路由丢失,请立即检查" | mail -s "路由告警" $EMAIL
    fi
}

1. 检查关键路由
check_critical_routes() {
    ROUTES=("10.0.0.0/8" "172.16.0.0/12" "192.168.0.0/16")

    for route in "${ROUTES[@]}"; do
        if ! ip route show | grep -q "$route"; then
            echo "$(date): 关键路由 $route 丢失" >> $LOG_FILE
        fi
    done
}

1. 检查网络连通性
check_connectivity() {
    HOSTS=("8.8.8.8" "114.114.114.114")

    for host in "${HOSTS[@]}"; do
        if ! ping -c 1 -W 3 $host >/dev/null 2>&1; then
            echo "$(date): 无法到达 $host" >> $LOG_FILE
        fi
    done
}

1. 执行检查
check_default_route
check_critical_routes
check_connectivity

性能优化建议

  1. 路由表优化

    1. 清理无用路由
    ip route flush cache
    
    1. 优化路由表大小
    echo 'net.ipv4.route.max_size = 16777216' >> /etc/sysctl.conf
  2. 内核参数优化

    1. 启用IP转发
    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
    
    1. 优化路由缓存
    echo 'net.ipv4.route.gc_timeout = 300' >> /etc/sysctl.conf
    
    1. 应用配置
    sysctl -p
  3. 日志配置

    1. 启用路由日志
    echo 'net.ipv4.conf.all.log_martians = 1' >> /etc/sysctl.conf
    
    1. 配置rsyslog
    echo 'kern.warning /var/log/route.log' >> /etc/rsyslog.conf

安全考虑

路由安全加固

1. 防止IP欺骗
echo 'net.ipv4.conf.all.rp_filter = 1' >> /etc/sysctl.conf

1. 忽略ICMP重定向
echo 'net.ipv4.conf.all.accept_redirects = 0' >> /etc/sysctl.conf

1. 不发送ICMP重定向
echo 'net.ipv4.conf.all.send_redirects = 0' >> /etc/sysctl.conf

1. 忽略源路由
echo 'net.ipv4.conf.all.accept_source_route = 0' >> /etc/sysctl.conf

总结

本文档提供了Linux路由技术的完整指南,涵盖了从基础概念到高级应用的各个方面:

  • 基础路由:静态路由、默认路由的配置和管理
  • 策略路由:灵活的流量控制和负载均衡方案
  • 动态路由:OSPF、BGP等协议的应用
  • 故障排查:系统化的问题诊断方法
  • 最佳实践:性能优化和安全加固建议

掌握这些技术和方法,能够帮助运维人员更好地管理和优化网络路由,确保网络的稳定性和性能。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇