首页 > 运维 > linux运维 > 正文

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

P粉602998670
发布: 2025-09-17 13:38:01
原创
787人浏览过
双网卡与路由策略通过配置多网卡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
登录后复制
文件里完成,虽然不是强制,但非常推荐,方便记忆和管理:

知网AI智能写作
知网AI智能写作

知网AI智能写作,写文档、写报告如此简单

知网AI智能写作 38
查看详情 知网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段)和外部互联网(通过另一个网卡和网关)。如果不对路由做特殊处理,

以上就是Linux如何配置双网卡和路由策略的详细内容,更多请关注php中文网其它相关文章!

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

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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