Linux双线双网卡双IP双网关配置全攻略

作者:渣渣辉2025.10.13 13:39浏览量:0

简介:本文详细讲解Linux系统下双线双网卡、双IP、双网关的配置方法,涵盖网络拓扑分析、网卡配置、路由表设置及故障排查,适用于企业多线路接入场景。

Linux双线双网卡双IP双网关设置方法详解

一、技术背景与适用场景

在当今企业网络架构中,单线路接入已难以满足高可用性、负载均衡和安全隔离的需求。双线双网卡配置通过同时接入两个不同运营商(如电信+联通)或两个不同网络区域(如内网+外网),可实现以下核心价值:

  1. 冗余备份:主线路故障时自动切换至备用线路
  2. 负载均衡:按业务类型分配不同线路带宽
  3. 安全隔离:将敏感业务与普通业务物理隔离
  4. 策略路由:根据目标地址智能选择最优路径

典型应用场景包括:金融行业交易系统、医疗行业HIS系统、政府机构政务外网等对网络可靠性要求极高的环境。

二、系统环境准备

硬件要求

  • 服务器需配备至少两个物理网卡(推荐Intel I350系列千兆网卡)
  • 确认交换机端口支持双线接入(建议使用支持链路聚合的交换机)
  • 准备两条不同运营商的物理线路(或两个不同VLAN)

软件环境

  • 操作系统:CentOS 7/8、Ubuntu 20.04 LTS等主流Linux发行版
  • 网络工具包:安装net-toolsiproute2ifmetric等工具
    ```bash

    CentOS安装示例

    yum install -y net-tools iproute ifmetric

Ubuntu安装示例

apt-get install -y net-tools iproute2 ifmetric

  1. ## 三、核心配置步骤
  2. ### 1. 网卡物理配置
  3. 首先通过`lspci | grep -i ethernet`确认网卡识别情况,然后编辑网卡配置文件:
  4. **CentOS 7配置示例**:
  5. ```bash
  6. # 主网卡(eth0 - 电信线路)
  7. cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
  8. TYPE=Ethernet
  9. BOOTPROTO=static
  10. NAME=eth0
  11. DEVICE=eth0
  12. ONBOOT=yes
  13. IPADDR=192.168.1.100
  14. NETMASK=255.255.255.0
  15. GATEWAY=192.168.1.1
  16. EOF
  17. # 备网卡(eth1 - 联通线路)
  18. cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<EOF
  19. TYPE=Ethernet
  20. BOOTPROTO=static
  21. NAME=eth1
  22. DEVICE=eth1
  23. ONBOOT=yes
  24. IPADDR=10.0.0.100
  25. NETMASK=255.255.255.0
  26. # 注意:此处不设置网关
  27. EOF

Ubuntu 20.04配置示例

  1. # 主网卡配置
  2. cat > /etc/netplan/01-netcfg.yaml <<EOF
  3. network:
  4. version: 2
  5. renderer: networkd
  6. ethernets:
  7. eth0:
  8. dhcp4: no
  9. addresses: [192.168.1.100/24]
  10. gateway4: 192.168.1.1
  11. nameservers:
  12. addresses: [8.8.8.8, 8.8.4.4]
  13. eth1:
  14. dhcp4: no
  15. addresses: [10.0.0.100/24]
  16. # 不设置网关
  17. EOF
  18. netplan apply

2. 路由表深度配置

Linux通过路由表实现多网关管理,需创建自定义路由表并配置策略路由:

步骤1:创建路由表文件

  1. # 编辑/etc/iproute2/rt_tables(需root权限)
  2. echo "100 tel_table" >> /etc/iproute2/rt_tables
  3. echo "200 unicom_table" >> /etc/iproute2/rt_tables

步骤2:添加路由规则

  1. # 为电信线路添加路由
  2. ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table tel_table
  3. ip route add default via 192.168.1.1 dev eth0 table tel_table
  4. # 为联通线路添加路由
  5. ip route add 10.0.0.0/24 dev eth1 src 10.0.0.100 table unicom_table
  6. ip route add default via 10.0.0.1 dev eth1 table unicom_table

步骤3:配置策略路由规则

  1. # 根据源IP选择路由表
  2. ip rule add from 192.168.1.100 table tel_table
  3. ip rule add from 10.0.0.100 table unicom_table
  4. # 根据目标地址选择路由(示例:访问特定IP走联通线路)
  5. ip rule add to 203.0.113.0/24 table unicom_table

3. 高级路由优化

负载均衡配置

  1. # 使用iproute2实现基于包的负载均衡
  2. echo "200 balance" >> /etc/iproute2/rt_tables
  3. ip route add default scope global nexthop via 192.168.1.1 dev eth0 weight 1 nexthop via 10.0.0.1 dev eth1 weight 1 table balance
  4. ip rule add fwmark 0x1 table balance
  5. iptables -t mangle -A PREROUTING -j MARK --set-mark 0x1

故障转移配置

  1. # 使用keepalived实现VIP高可用
  2. # 安装keepalived
  3. yum install -y keepalived
  4. # 配置文件示例
  5. cat > /etc/keepalived/keepalived.conf <<EOF
  6. vrrp_script chk_httpd {
  7. script "killall -0 httpd"
  8. interval 2
  9. weight 2
  10. }
  11. vrrp_instance VI_1 {
  12. interface eth0
  13. state MASTER
  14. virtual_router_id 51
  15. priority 100
  16. advert_int 1
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111
  20. }
  21. virtual_ipaddress {
  22. 192.168.1.200
  23. }
  24. track_script {
  25. chk_httpd
  26. }
  27. }
  28. EOF

四、验证与故障排查

1. 基础验证命令

  1. # 查看网卡状态
  2. ip addr show
  3. # 查看路由表
  4. ip route show table main
  5. ip route show table tel_table
  6. ip route show table unicom_table
  7. # 测试连通性
  8. ping -I 192.168.1.100 8.8.8.8
  9. ping -I 10.0.0.100 8.8.4.4
  10. # 跟踪路由路径
  11. traceroute -i eth0 8.8.8.8
  12. traceroute -i eth1 8.8.4.4

2. 常见问题解决方案

问题1:路由冲突导致网络中断

  • 现象:只能使用一个网卡通信
  • 解决:检查ip route输出,确保没有重复的默认网关
    1. # 删除冲突的默认网关
    2. ip route del default via 10.0.0.1 dev eth1

问题2:策略路由不生效

  • 现象:数据包未按预期路由
  • 解决:检查ip rule顺序和防火墙标记
    ```bash

    查看规则顺序

    ip rule show

检查防火墙标记

iptables -t mangle -L -v -n

  1. **问题3:双线负载不均衡**
  2. - 现象:某条线路带宽占用过高
  3. - 解决:调整权重参数或使用更智能的负载均衡算法
  4. ```bash
  5. # 修改权重值(原为1:1)
  6. ip route change default scope global nexthop via 192.168.1.1 dev eth0 weight 2 nexthop via 10.0.0.1 dev eth1 weight 1 table balance

五、最佳实践建议

  1. 监控体系搭建

    • 使用Zabbix监控双线路带宽使用率
    • 配置Prometheus+Grafana可视化面板
    • 设置阈值告警(如单线路带宽持续超过80%)
  2. 定期维护计划

    • 每月执行一次网络连通性测试
    • 每季度更新路由表规则(根据业务变化)
    • 每年进行一次双线故障演练
  3. 安全加固措施

    • 禁用不必要的网络服务
    • 配置iptables限制非法访问
      1. # 示例规则:只允许特定IP访问管理端口
      2. iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
      3. iptables -A INPUT -p tcp --dport 22 -j DROP
  4. 文档管理规范

    • 维护网络拓扑图(推荐使用Draw.io)
    • 记录所有配置变更(使用Git管理配置文件)
    • 制定双线切换SOP(标准操作流程)

六、进阶配置方案

1. 基于应用层的路由控制

通过tc(Traffic Control)实现更精细的流量管理:

  1. # 为HTTP流量分配60%带宽
  2. tc qdisc add dev eth0 root handle 1: htb default 12
  3. tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit
  4. tc class add dev eth0 parent 1:1 classid 1:10 htb rate 600mbit
  5. tc class add dev eth0 parent 1:1 classid 1:12 htb rate 400mbit
  6. tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10

2. 多宿主网络配置

对于需要同时连接多个ISP的场景,可配置BGP协议:

  1. # 安装Quagga BGP实现
  2. yum install -y quagga
  3. # 配置BGP守护进程
  4. cat > /etc/quagga/bgpd.conf <<EOF
  5. router bgp 65001
  6. neighbor 192.168.1.1 remote-as 65002
  7. neighbor 10.0.0.1 remote-as 65003
  8. !
  9. address-family ipv4
  10. network 192.168.1.0/24
  11. network 10.0.0.0/24
  12. exit-address-family
  13. EOF

七、总结与展望

双线双网卡配置是构建高可用网络架构的基础技术,通过合理配置可实现:

  • 网络可用性提升至99.99%
  • 带宽利用率优化30%-50%
  • 故障恢复时间缩短至秒级

未来发展趋势包括:

  1. SDN集成:通过OpenFlow实现更灵活的流量控制
  2. AI运维:利用机器学习预测网络故障
  3. 5G融合:结合5G网络实现无线冗余备份

建议运维人员定期参加RFC文档研读会,关注IETF发布的网络标准更新,保持技术前瞻性。对于超大规模部署,可考虑使用Ansible等自动化工具进行批量配置管理。