Linux 配置路由:核心结论与实战指南
在 Linux 系统中配置路由,核心结论是:临时路由用 ip route 命令即刻生效,永久路由必须写入系统配置文件,且多网卡场景建议结合策略路由实现精细流量管理。 本文将按照从基础命令到高级策略的顺序,提供可直接落地的配置方案。
基础路由配置:临时生效方案
查看当前路由表 是排查一切网络问题的起点,推荐使用 ip route show 命令查看,输出比传统的 route -n 更清晰直观。
添加默认网关 是最常见的路由操作,语法为:
ip route add default via 192.168.1.1 dev eth0
此命令表示:所有目标地址不在本地子网的数据包,一律通过 eth0 网卡发送给网关 168.1.1。
添加静态路由 用于指定特定网段的转发路径:
ip route add 10.0.0.0/8 via 172.16.0.1 dev eth1
该命令将发往 0.0.0/8 网段的数据包路由至 16.0.1。 注意:所有 ip route add 操作在系统重启后将全部丢失,仅适合临时测试或调试场景。
永久路由配置:按发行版区分方案
要让路由配置在重启后依然生效,必须写入对应系统的配置文件,不同发行版的配置机制差异明显,请严格对照以下方案操作。
Debian / Ubuntu 系列
编辑 /etc/network/interfaces 文件,在网卡配置段落中追加:
auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 up ip route add 10.0.0.0/8 via 172.16.0.1 dev eth1
Ubuntu 18.04 及以上版本推荐使用 netplan,在 /etc/netplan/ 下的 YAML 配置文件中添加:
network:
version: 2
ethernets:
eth0:
routes:
- to: 10.0.0.0/8
via: 172.16.0.1
执行 sudo netplan apply 即可生效。
RHEL / CentOS 系列
传统方案 是在 /etc/sysconfig/network-scripts/ 目录下创建 route-eth0 文件:
0.0.0/8 via 172.16.0.1 dev eth1
对于 NetworkManager 管理的系统,更推荐使用 nmcli 命令:
nmcli connection modify eth0 +ipv4.routes "10.0.0.0/8 172.16.0.1" nmcli connection up eth0
多网卡与策略路由:高级配置方案
服务器配置多个网卡时,默认路由只会走其中一张网卡,容易导致“有进无回”的上网异常,此时必须引入策略路由(Policy Routing)。
创建独立路由表 并添加规则:
echo "100 eth0_table" >> /etc/iproute2/rt_tables ip route add default via 192.168.1.1 dev eth0 table eth0_table ip rule add from 192.168.1.100 lookup eth0_table priority 100
命令的含义是:凡是源地址为 168.1.100 的数据包,强制查找 eth0_table 路由表,而不是使用主路由表,这解决了多 IP 环境下回程流量走错网卡的问题。
策略路由的持久化 需要将上述命令写入 /etc/rc.local(需赋予执行权限),或者在 NetworkManager 的 dispatcher 脚本中配置。
经验案例:酷番云服务器多网卡路由实战

我们在部署酷番云高性能云服务器时,曾遇到一个典型的双网卡路由问题,客户的业务服务器配置了内网网卡(用于数据库访问)和公网网卡(用于对外提供服务),但系统重启后,默认路由被内网网卡抢占,导致公网服务无法访问。
我们给出的解决方案包含三个关键步骤:
- 第一步:使用
ip route show确认重启后路由跳变的具体原因内网网卡的 DHCP 自动配置覆盖了默认路由。 - 第二步:在内网网卡配置中明确设置
metric优先级,使公网网卡优先:
nmcli connection modify eth1 ipv4.route-metric 50 nmcli connection modify eth0 ipv4.route-metric 100
- 第三步:结合酷番云控制台的私有网络路由表功能,在云端同步配置子网间的静态路由规则,实现云上云下路由双保险。
最终客户服务器的公网吞吐量稳定在配置带宽的 95% 以上,内网访问延迟保持在 0.5ms 以内。核心经验是:Linux 路由配置必须结合云平台的虚拟网络能力协同规划,仅靠服务器内部配置往往不够充分。
路由排查与故障修复工具
当路由配置后仍无法通信,请按以下顺序逐一排查:
- 检查路由表是否生效:
ip route show table all查看所有路由表。 - 验证数据包转发路径:
traceroute -n 目标IP定位断点。 - 确认内核 IP 转发开关:临时开启请执行
sysctl -w net.ipv4.ip_forward=1
,永久生效需在
/etc/sysctl.conf中写入net.ipv4.ip_forward = 1。 - 清理错误路由:
ip route del 目标网段删除错误条目后重新添加。
相关问答模块
修改路由配置后立即执行 systemctl restart network,服务会中断吗?
答:可能会中断。 network 服务重启会重新加载所有网卡配置,此时网络连接会短暂断开。更安全的做法是使用 ip route replace 命令动态替换路由,
ip route replace default via 192.168.1.254 dev eth0
该命令可以无缝切换网关而无需重启网络服务,若必须重置整个网络栈,建议通过控制台或带外管理执行操作,避免 SSH 会话中断。
配置了永久静态路由,但 route -n 看不到,为什么?
答:这是正常现象。 route -n 命令仅显示主路由表(main table),而通过策略路由添加的路由条目存放在自定义路由表中。请使用 ip route show table all 查看全部路由表内容,或者指定路由表名称查看:
ip route show table eth0_table
某些发行版的网络服务重启时会清空非本网卡关联的路由条目,建议将静态路由的添加命令同时写入 rc.local 和网络配置文件中作为双保险。
您在实际配置 Linux 路由时是否遇到过“流量走错网卡”或“路由重启丢失”的问题?欢迎在评论区留言您使用的发行版和具体场景,我们将给出针对性的排查建议。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/778709.html

