当前位置:首页 > Linux > 正文

linux如何配置路由

在 Linux 中,可通过 ip 命令配置 路由,如 `ip route add default via dev

Linux路由基础概念

1 路由表本质

Linux内核维护着一张全局路由表(Routing Table),存储于/proc/net/route或通过ip route show查看,该表包含以下关键字段:

| 字段名 | 作用 | 示例值 |

|————–|——————————-|———————-|

| Destination | 目标网络地址 | 192.168.1.0/24 |

| Gateway | 下一跳网关IP | 192.168.1.1 |

| Genmask | 子网掩码 | 255.255.255.0 |

| Iface | 关联的网络接口 | eth0 |

| Flags | 路由标志(U/G/H等) | UG |

| Metric | 路由优先级(数值越小越优先) | 100 |

2 核心组件关系

  • 内核模块:rtnetlink负责接收路由更新指令
  • 用户态工具:ip命令(推荐)、route命令(兼容旧版)
  • 守护进程:NetworkManager(桌面版)、systemd-networkd(部分发行版)
  • 配置文件:/etc/network/interfaces(Debian系)、/etc/sysconfig/network-scripts/ifcfg-(RHEL系)


路由配置实战指南

1 临时性路由配置(立即生效但重启丢失)

基本语法

# 添加静态路由 ip route add <目标网络> via <网关IP> dev <网卡名> [metric <优先级>] # 示例:添加至10.0.0.0/8网络的路由,网关为192.168.1.1,优先级200 ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 metric 200 # 删除路由 ip route del 10.0.0.0/8 # 修改现有路由(需先删除再添加) ip route replace 10.0.0.0/8 via 192.168.1.2 dev eth0 metric 300

️ 注意事项

  • 必须具有root权限执行
  • 网关IP必须在当前主机可达范围内
  • 同一目标网络只能存在一条主路由(可通过policy-based routing实现多路径)

2 持久化路由配置(重启保留)

不同发行版采用不同机制:

linux如何配置路由 第1张

发行版 配置文件路径 配置方法 生效命令
Ubuntu/Debian /etc/network/interfaces 在接口段落中添加post-up脚本 ifdown/up
CentOS/RHEL /etc/sysconfig/network-scripts/route-<网卡名> 新建文件并写入路由规则 service network restart
openSUSE /etc/sysconfig/network/ifcfg-<网卡名> 添加ROUTES参数 systemctl restart network

通用持久化方案(适用于大多数发行版):

# 创建启动脚本 echo "ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0" > /etc/networkd-dispatcher/routable.d/myroute chmod +x /etc/networkd-dispatcher/routable.d/myroute

3 特殊路由类型配置

默认路由(Default Gateway)

# 添加默认路由(等同于0.0.0.0/0) ip route add default via 192.168.1.1 dev eth0 # 查看当前默认路由 ip route list match 0.0.0.0/0

多网关负载均衡(ECMP)

# 同时添加两个默认路由,实现流量分担 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 100

注:需确保两个网关均处于UP状态,且交换机支持LACP协议

策略路由(Policy-Based Routing)

# 创建自定义路由表(ID=100) echo "100 custom_table" >> /etc/iproute2/rt_tables # 添加规则:将来自192.168.2.0/24的流量导向新路由表 ip rule add from 192.168.2.0/24 table custom_table # 在新路由表中定义具体路径 ip route add default via 10.0.0.1 dev tun0 table custom_table


路由管理常用命令对照表

操作需求 ip命令 route命令 说明
显示所有路由 ip route show route -n 推荐使用ip命令
添加静态路由 ip route add ... route add ... ip命令更灵活
删除路由 ip route del ... route del ...
修改路由优先级 ip route change ... metric X route change ... metric X 仅能调整已存在的路由
刷新ARP缓存 ip neigh flush to X.X.X.X arp -d X.X.X.X 解决MAC地址冲突问题
跟踪路由路径 tracepath X.X.X.X traceroute X.X.X.X tracepath显示更详细的跳数信息


典型配置案例

案例1:双网卡冗余备份

# 主路由(低优先级) ip route add default via 192.168.1.1 dev eth0 metric 50 # 备路由(高优先级) ip route add default via 192.168.1.2 dev eth1 metric 150 # 测试连通性 ping -c 3 www.baidu.com # 模拟主链路故障(断开eth0) ip link set dev eth0 down # 观察自动切换至备路由

案例2:VLAN间路由

# 创建VLAN接口 ip link add link eth0 name eth0.10 type vlan id 10 ip link set dev eth0.10 up # 配置VLAN路由 ip address add 192.168.10.1/24 dev eth0.10 ip route add 192.168.10.0/24 dev eth0.10


常见问题排查

诊断工具链

  1. 基础检查:ip a确认接口状态 → ip r查看路由表 → ping测试连通性
  2. 深度分析:tcpdump -i <接口>抓包验证数据流向 → journalctl -u NetworkManager查看日志
  3. 硬件校验:ethtool <接口>检查网卡协商速率 → dmesg | grep -i net查看驱动报错

典型错误及解决方案

现象 可能原因 解决方法
路由添加失败 权限不足/网关不可达 su root执行;检查网关ARP响应
跨VLAN通信异常 VLAN标签未正确传递 确保trunk端口配置正确
策略路由不生效 规则顺序错误/路由表未激活 使用ip rule show检查规则优先级
重启后路由丢失 未做持久化配置 根据发行版修改配置文件


相关问答FAQs

Q1: 为什么我添加的静态路由没有生效?

A: 常见原因及排查步骤:

linux如何配置路由 第2张

  1. 权限问题:普通用户无法修改路由表,必须使用sudo或su root执行命令。
  2. 网关不可达:执行arp -a查看网关MAC地址是否存在,若不存在则尝试ping网关IP。
  3. 路由冲突:使用ip route show检查是否存在相同目标网络的其他路由,若有则先删除旧路由。
  4. 接口状态:确认ip link show中对应接口处于UP状态。
  5. 防火墙拦截:执行iptables -L -v -n检查FORWARD链是否放行相关流量。

Q2: 如何实现Linux服务器的多线路负载均衡?

A: 推荐两种方案:

  1. 等价多路径(ECMP)

    linux如何配置路由 第3张

    优点:配置简单,适合对称流量场景;缺点:无法精细控制流量比例。

  2. 基于策略的负载均衡

    优点:可精确控制流量分配策略;缺点:配置复杂,需熟悉NFQUEUE机制

0