linux 路由表详解

Linux 路由表是系统网络堆栈中的核心组件之一,用于决定数据包的传输路径。通过理解路由表的结构和配置,可以精确地控制流量的转发和分流。


Linux 路由表的结构

通过命令 ip route showroute -n 查看路由表。输出示例如下:

# ip route show
default via 192.168.1.1 dev eth0 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 
10.0.0.0/8 via 192.168.1.2 dev eth1
路由表字段说明

每条路由规则包含以下关键字段:

字段含义
目标地址 (prefix)

数据包的目的网络或 IP,例如 192.168.1.0/24

(default 表示默认路由,当一个数据包没有匹配到更具体的路由时,将使用default路由。)

网关 (via)下一跳地址,表示数据包要先发送到网关再转发。
网络设备 (dev)指定用于发送数据包的网络接口或设备,例如 eth0(物理网卡)或 tun0(虚拟隧道设备)。
协议 (proto)路由的来源类型:
  • kernel: 内核自动生成的路由。
  • static: 用户手动添加的路由。
  • dhcp: 由 DHCP 动态生成的路由。
作用域 (scope)定义路由的作用范围:
  • host: 仅适用于本地主机。
  • link: 仅适用于直接连接的链路(无需中间网关)。
  • global: 可用于任何目标。
源地址 (src)数据包从该源 IP 地址发送(通常在多网卡或多 IP 场景下使用)。
权重 (metric)路由优先级,数字越小优先级越高。

Linux 路由表中的路由类型

1. 默认路由 (Default Route)
default via 192.168.1.1 dev eth0
  • 匹配所有未明确指定目标地址的流量。
  • 通常指向网关(如路由器或上层交换机)。
2. 主机路由 (Host Route)
192.168.1.100 dev eth0 scope host
  • 仅匹配一个具体的 IP 地址(/32)。
  • 用于本地通信或特定流量控制。
3. 子网路由 (Subnet Route)
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
  • 匹配一个子网范围(如 /24 表示 256 个 IP)。
  • 常见于 LAN 环境。
4. 策略路由

结合多路由表和规则,允许基于条件(如源地址、协议类型)指定路由。


Linux 路由表的管理

可以使用 ip route 命令动态配置路由表。

1. 查看路由
ip route show

或简写:

ip r
2. 添加路由

添加静态路由

ip route add <网络地址>/<子网掩码> via <网关> dev <接口>

示例:

ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

添加默认路由

ip route add default via 192.168.1.1 dev eth0
3. 删除路由
ip route del <网络地址>/<子网掩码>

示例:

ip route del 192.168.2.0/24
4. 修改路由

实际上是删除旧路由并添加新路由:

ip route del 192.168.2.0/24 
ip route add 192.168.2.0/24 via 192.168.1.2 dev eth0
5. 清空路由

清空某个接口的路由:

ip route flush dev <接口>

清除缓存:

ip route flush cache

路由的高级用法

1. 配置多路由表

Linux 支持多路由表,可以为特定流量设置不同的路由。

添加一个新路由表

echo "200 mytable" >> /etc/iproute2/rt_tables

为新表添加路由

ip route add 192.168.3.0/24 via 192.168.2.1 table mytable

设置规则使用新表

ip rule add from 192.168.2.100 table mytable
2. 设置路由优先级

通过 metric 字段设置优先级(数字越小,优先级越高):

ip route add default via 192.168.1.1 dev eth0 metric 100
ip route add default via 192.168.1.2 dev eth1 metric 200

路由表的工作机制

  1. 匹配规则

    • 路由表按照最长前缀匹配原则工作,即选择最具体的路由规则。
    • 例如,192.168.1.0/24 会优先于 192.168.0.0/16
  2. 路由优先级

    • 如果多条路由规则有相同的匹配范围,则根据 metric 字段选择优先级较高的规则。
  3. 路由缓存

    • Linux 会缓存路由查询结果以提高性能,但动态更改路由表时可能需要清空缓存。

常见场景

1. VPN 路由

让 VPN 流量走专用隧道:

ip route add 10.0.0.0/8 dev tun0
2. 分流多网卡流量

为特定网络绑定特定网卡:

ip route add 192.168.2.0/24 dev eth1 
ip route add 192.168.3.0/24 dev eth2
3. 配置多出口

设置两条默认路由,实现简单的负载均衡:

ip route add default nexthop via 192.168.1.1 weight 1 nexthop via 192.168.1.2 weight 2

总结

Linux 路由表通过 ip route 提供强大的网络流量控制能力。其灵活性和可扩展性可以满足从简单的单网卡配置到复杂的多网卡、多出口、多策略的需求。如果需要进一步应用到具体环境或场景,可以提供更多细节,我可以帮你定制路由解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值