0

0

Linux如何配置双网卡和路由策略

P粉602998670

P粉602998670

发布时间:2025-09-17 13:38:01

|

865人浏览过

|

来源于php中文网

原创

双网卡与路由策略通过配置多网卡IP及策略路由,实现流量分流与故障切换。首先用ip或netplan配置两网卡IP与默认网关,并分配至不同路由表(如100和200);接着在/etc/iproute2/rt_tables中命名表,使用ip rule添加基于源IP的路由规则(如192.168.1.10走表100,10.0.0.10走表200),确保不同流量按策略转发;最后通过systemd服务持久化规则,避免重启失效。该方案解决多网络接入时的路由冲突,实现内外网隔离、负载均衡与高可用,避免单点故障。

linux如何配置双网卡和路由策略

在Linux系统里,配置双网卡和路由策略,说白了就是为了更精细地控制网络流量走向。想象一下,你有一台服务器,它可能既要处理内部数据,又要对外提供服务,或者你需要它同时连接到两个不同的网络环境,比如一个专线一个公网。这时候,如果所有流量都只走一个默认通道,那肯定会出问题。通过双网卡和路由策略,我们就能让不同的流量走不同的“门”,实现分流、隔离,甚至负载均衡和故障切换。核心在于正确识别和配置这两块网卡,然后利用

ip
命令的
rule
route
子命令,根据流量的特征(比如源IP、目的IP)来决定它该走哪条路。

配置双网卡和路由策略,通常需要从识别网络接口开始。你可以用

ip a
ip link
命令来查看你的系统上有哪些网卡,它们叫什么名字(比如
eth0
enp0s3
等)。

1. 基础网卡IP配置

为每块网卡分配IP地址、子网掩码,这是第一步。不同的Linux发行版有不同的配置方式。

  • 使用

    ip
    命令临时配置(重启失效): 如果你只是想快速测试一下,可以直接用
    ip addr
    ip route
    命令。

    # 配置第一块网卡
    sudo ip addr add 192.168.1.10/24 dev enp0s3
    sudo ip link set enp0s3 up
    
    # 配置第二块网卡
    sudo ip addr add 10.0.0.10/24 dev enp0s8
    sudo ip link set enp0s8 up
  • 使用

    netplan
    (Ubuntu/Debian等现代系统):
    netplan
    是一个很方便的工具,它能把网卡配置和路由表管理整合起来。编辑或创建
    /etc/netplan/01-netcfg.yaml
    文件:

    network:
      version: 2
      renderer: networkd # 也可以是 networkmanager
      ethernets:
        enp0s3:
          dhcp4: no
          addresses: [192.168.1.10/24]
          routes:
            - to: default
              via: 192.168.1.1 # 第一块网卡的默认网关
              table: 100 # 将此路由放入自定义路由表100
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4] # 可选的DNS配置
        enp0s8:
          dhcp4: no
          addresses: [10.0.0.10/24]
          routes:
            - to: default
              via: 10.0.0.1 # 第二块网卡的默认网关
              table: 200 # 将此路由放入自定义路由表200
          nameservers:
            addresses: [1.1.1.1, 9.9.9.9] # 可选的DNS配置

    保存后,运行

    sudo netplan try
    进行测试,确认无误后
    sudo netplan apply
    应用配置。

  • 使用

    /etc/sysconfig/network-scripts
    (RHEL/CentOS): 编辑
    /etc/sysconfig/network-scripts/ifcfg-enp0s3
    ifcfg-enp0s8
    文件。
    ifcfg-enp0s3
    示例:

    TYPE=Ethernet
    BOOTPROTO=static
    NAME=enp0s3
    DEVICE=enp0s3
    ONBOOT=yes
    IPADDR=192.168.1.10
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    # 对于RHEL/CentOS,路由策略通常需要通过后续的`ip`命令或自定义脚本实现持久化。

    ifcfg-enp0s8
    类似,只是IP和网关不同。修改后,重启网络服务或网卡:
    sudo systemctl restart network
    sudo ifdown enp0s3 && sudo ifup enp0s3

2. 核心:路由策略配置(Policy Routing)

这是双网卡配置的精髓。当系统有多个默认网关时,Linux的默认行为是只使用一个(通常是第一个配置的)。为了让不同的流量走不同的网关,我们需要使用策略路由。

首先,给我们的自定义路由表起个名字,这在

/etc/iproute2/rt_tables
文件里完成,虽然不是强制,但非常推荐,方便记忆和管理:

ImgCreator AI
ImgCreator AI

一款AI图像生成工具,适合创建插图、动画和概念设计图像。

下载
# 在文件末尾添加
100 main_net
200 backup_net

接下来,我们用

ip route
ip rule
命令来配置:

# 清理可能存在的旧规则和路由,避免冲突,防止多次执行命令产生冗余
sudo ip rule del pref 100 # 删除优先级为100的规则
sudo ip rule del pref 200 # 删除优先级为200的规则
sudo ip route flush table 100
sudo ip route flush table 200

# 为第一块网卡(enp0s3, IP 192.168.1.10)配置路由表100
# 添加默认路由到表100,通过192.168.1.1走enp0s3接口
sudo ip route add default via 192.168.1.1 dev enp0s3 table 100
# 添加规则:所有源IP是192.168.1.10的流量,都使用路由表100
sudo ip rule add from 192.168.1.10/32 table 100 pref 100 # pref是优先级,数字越小优先级越高

# 为第二块网卡(enp0s8, IP 10.0.0.10)配置路由表200
# 添加默认路由到表200,通过10.0.0.1走enp0s8接口
sudo ip route add default via 10.0.0.1 dev enp0s8 table 200
# 添加规则:所有源IP是10.0.0.10的流量,都使用路由表200
sudo ip rule add from 10.0.0.10/32 table 200 pref 200

# 最后,刷新路由缓存,让新配置立即生效
sudo ip route flush cache

这样一来,系统就会根据流量的源IP地址来选择不同的路由表,从而实现流量的分流。

3. 持久化配置

上述

ip rule
ip route
命令在系统重启后会失效,所以我们需要让它们持久化。

  • 对于

    netplan
    用户: 如果你在
    netplan
    的YAML文件中已经配置了
    routes
    table
    ,那么这些配置会自动持久化。但请注意,
    netplan
    本身对基于源IP的
    ip rule
    支持有限,你可能还需要结合
    systemd
    服务来添加这些规则。

  • 使用

    systemd
    服务(推荐): 这是现代Linux系统上最推荐的持久化方法。创建一个
    systemd
    服务单元文件,例如
    /etc/systemd/system/policy-routing.service

    [Unit]
    Description=Custom Policy Routing Configuration
    After=network-online.target # 确保网络服务已经就绪
    
    [Service]
    Type=oneshot # 一次性执行的服务
    # 启动前先清理旧规则,防止重复添加
    ExecStartPre=/usr/sbin/ip rule del pref 100
    ExecStartPre=/usr/sbin/ip rule del pref 200
    ExecStartPre=/usr/sbin/ip route flush table 100
    ExecStartPre=/usr/sbin/ip route flush table 200
    # 执行路由和规则配置命令
    ExecStart=/usr/sbin/ip route add default via 192.168.1.1 dev enp0s3 table 100
    ExecStart=/usr/sbin/ip rule add from 192.168.1.10/32 table 100 pref 100
    ExecStart=/usr/sbin/ip route add default via 10.0.0.1 dev enp0s8 table 200
    ExecStart=/usr/sbin/ip rule add from 10.0.0.10/32 table 200 pref 200
    ExecStartPost=/usr/sbin/ip route flush cache # 刷新缓存
    RemainAfterExit=yes # 即使命令执行完毕,也认为服务是活跃的
    
    [Install]
    WantedBy=multi-user.target # 在多用户模式下启动

    保存文件后,重新加载

    systemd
    配置,启用并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl enable policy-routing.service
    sudo systemctl start policy-routing.service

    这样,每次系统启动,这些路由策略都会自动生效。

为什么需要双网卡和路由策略?它解决了什么实际问题?

在我看来,双网卡和路由策略并非仅仅是“配置”那么简单,它更多的是解决实际网络环境中的复杂需求和痛点。最直接的,就是避免“单点故障”和实现“流量分流”。

首先,解决多网络接入环境下的路由冲突问题。设想一下,你的服务器同时连接着公司内网(比如192.168.1.0/24段)和外部互联网(通过另一个网卡和网关)。如果不对路由做特殊处理,

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1012

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

60

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

373

2025.12.29

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1347

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

700

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

571

2023.07.06

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

4

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号