Linux多网卡路由怎么配置_策略路由实战说明【技巧】

8次阅读

Linux 多网卡路由应使用策略路由而非多默认网关:先为每网卡配置独立 IP,再通过 /etc/iproute2/rt_tables 定义自定义路由表,用 ip route 添加各表路由、ip rule 绑定源 IP 与表,最后持久化至 systemd 或 Netplan。

Linux 多网卡路由怎么配置_策略路由实战说明【技巧】

Linux 多网卡 路由 配置,核心不是“加多条默认网关”,而是让不同流量按需走指定路径。直接在 m ai n 表里硬塞多个 default 路由会冲突,系统只认一条;真正可靠的方式是用策略路由(Policy Routing),基于源 IP、目标地址等条件选择对应路由表。

先配好每块网卡的基础 IP

确保每张网卡有独立、无重叠的 IP 和 子网。例如:

  • eth0(内网):192.168.1.100/24,网关 192.168.1.1
  • eth1(外网):10.0.0.100/24,网关 10.0.0.1

临时配置用:ip addr add 192.168.1.100/24 dev eth0 && ip link set eth0 up;永久配置则写入对应发行版文件(如 Ubuntu 的 /etc/netplan/*.yaml 或 CentOS 的/etc/sysconfig/network-scripts/ifcfg-eth0)。

创建自定义路由表

编辑/etc/iproute2/rt_tables,追加两行(数字为优先级,越小越靠前):

200 table_intranet
201 table_internet

注意:不要改动已有的 local、main、default 三行。这个操作只需做一次,系统重启后仍保留。

为每个表添加路由规则

以 eth0 走内网、eth1 走外网为例,执行以下命令:

  • 清空并填充内网表:ip route flush table table_intranet && ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table table_intranet && ip route add default via 192.168.1.1 dev eth0 table table_intranet
  • 清空并填充外网表:ip route flush table table_internet && ip route add 10.0.0.0/24 dev eth1 src 10.0.0.100 table table_internet && ip route add default via 10.0.0.1 dev eth1 table table_internet
  • 绑定源 IP 到对应表:ip rule add from 192.168.1.100/32 table table_intranet && ip rule add from 10.0.0.100/32 table table_internet

这样,从 192.168.1.100 发出的包自动查table_intranet,从 10.0.0.100 发出的包查table_internet,互不干扰。

让配置开机生效

上述命令重启即失效,需持久化:

  • 推荐方式:写入 systemd 服务或 /etc/rc.local(记得加sleep 5 等网卡就绪延迟)
  • Netplan 用户可在 yaml 中直接定义路由表与 rule(v0.102+ 支持),比手动脚本更健壮
  • 验证是否生效:ip rule show看规则,ip route show table table_intranet查具体路由

策略路由不是“高级可选项”,而是多网卡场景下的标准解法。只要 IP 不冲突、路由表不漏、rule 匹配准确,内外网分流自然稳定。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-29发表,共计1417字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources