Linux路由表
- 一:查看路由
- 二:添加路由
- 三:删除路由
- 四:路由测试
- 五:路由选择机制
- 1.路由表
- 2.路由匹配机制
- 3.策略路由
- 示例
- 1.多网卡分流
- 2.VPN分流
- 3.双默认路由负载均衡
一:查看路由
# 查看 main 表
ip route show# 查看所有路由表
ip route show table all# 查看特定表(如表 100)
ip route show table 100
二:添加路由
# 添加默认路由(网关为 192.168.1.1)
ip route add default via 192.168.1.1 dev eth0
route add default gw 192.168.1.1 dev lan1# 添加特定子网路由(目标 10.0.0.0/24,网关 10.0.0.1)
ip route add 10.0.0.0/24 via 10.0.0.1 dev eth1
route add -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5# 指定路由的 metric(优先级)
ip route add default via 192.168.1.1 dev eth0 metric 100
route add -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5 metric 100
三:删除路由
# 删除默认路由(网关为 192.168.1.1)
ip route del default via 192.168.1.1 dev eth0
route del default gw 192.168.1.1 dev lan1# 添加特定子网路由(目标 10.0.0.0/24,网关 10.0.0.1)
ip route del 10.0.0.0/24 via 10.0.0.1 dev eth1
route del -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5# 指定路由的 metric(优先级)
ip route del default via 192.168.1.1 dev eth0 metric 100
route del -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5 metric 100
四:路由测试
# 查看目标 IP 8.8.8.8 的路由选择路径
ip route get 8.8.8.8
五:路由选择机制
Linux 的网络路由选择机制基于 路由表(Routing Table) 和 策略路由(Policy-Based Routing)。
1.路由表
Linux 内核维护多个路由表(默认最多 255 张),每张表包含一组路由规则。常用路由表:
- main 表:默认路由表,用户通过 ip route 或 route 命令配置的路由在此表中。
- local 表:存储本地网络接口的地址和广播路由,由内核自动管理。
- default 表:用于默认路由(优先级最低)。
- 自定义表:可通过策略路由规则定义。
2.路由匹配机制
当数据包需要发送时,内核按以下步骤选择路由:
- 最长前缀匹配:优先匹配目标地址最具体的路由(子网掩码最长)。
例如,目标 IP 为 192.168.1.100,路由表中同时存在 192.168.1.0/24 和 192.168.0.0/16,则选择 192.168.1.0/24。 - 路由优先级:若多条路由前缀长度相同,按优先级(metric 值)选择,metric 越小优先级越高。
- 默认路由:若无匹配路由,使用 default 路由(目标 0.0.0.0/0)。
3.策略路由
允许根据源 IP、服务类型(ToS)、接口等条件选择不同的路由表。常用于多网卡、VPN 分流等场景。
- 创建自定义路由表
编辑 /etc/iproute2/rt_tables,添加自定义表:
# 添加表 ID 和名称
100 custom_table
- 定义策略规则
# 根据源 IP 选择路由表
ip rule add from 192.168.1.100 lookup custom_table# 根据目标 IP 选择路由表
ip rule add to 10.0.0.0/24 lookup custom_table# 查看所有策略规则
ip rule show
- 在自定义表中添加路由
ip route add default via 10.0.0.1 dev eth2 table custom_table
示例
1.多网卡分流
需求:从 eth0 访问公网,从 eth1 访问内网 10.0.0.0/24
ip route add default via 公网网关 dev eth0
ip route add 10.0.0.0/24 via 10.0.0.1 dev eth1
2.VPN分流
需求:仅特定流量(如访问 172.16.0.0/16)走 VPN 接口 tun0。
ip route add 172.16.0.0/16 dev tun0
3.双默认路由负载均衡
# 添加两条默认路由并启用负载均衡
ip route add default via 192.168.1.1 dev eth0 metric 100
ip route add default via 10.0.0.1 dev eth1 metric 100