Linux双网卡双网关配置全攻略:多网段通信与策略路由实现

作者:暴富20212025.10.13 13:39浏览量:0

简介:本文详细讲解Linux系统下双网卡绑定双网关的配置方法,涵盖网络拓扑设计、策略路由规则设置及故障排查技巧,帮助运维人员实现多网段安全通信。

一、双网卡双网关应用场景解析

在复杂网络环境中,双网卡双网关配置是解决多网段隔离通信的核心方案。典型应用场景包括:

  1. 安全域访问:同时连接内网(192.168.1.0/24)和外网(10.0.0.0/24)
  2. 流量负载分担:将高带宽业务(如视频流)导向专用网关
  3. 高可用冗余:主备网关自动切换保障业务连续性
  4. 多ISP接入:融合不同运营商线路优化访问质量

网络拓扑示例:

  1. [Server]
  2. eth0: 192.168.1.100/24 GW:192.168.1.1 (内网网关)
  3. eth1: 10.0.0.100/24 GW:10.0.0.1 (外网网关)

二、基础配置三部曲

1. 网卡参数配置

使用nmcli工具进行现代化配置(推荐CentOS 8+/Ubuntu 20.04+):

  1. # 配置eth0(内网)
  2. nmcli connection add type ethernet con-name eth0-inner ifname eth0 \
  3. ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1
  4. # 配置eth1(外网)
  5. nmcli connection add type ethernet con-name eth1-outer ifname eth1 \
  6. ipv4.method manual ipv4.addresses 10.0.0.100/24 ipv4.gateway 10.0.0.1

传统ifcfg文件配置(RHEL 7/CentOS 7):

  1. # /etc/sysconfig/network-scripts/ifcfg-eth0
  2. DEVICE=eth0
  3. BOOTPROTO=none
  4. ONBOOT=yes
  5. IPADDR=192.168.1.100
  6. NETMASK=255.255.255.0
  7. GATEWAY=192.168.1.1
  8. # /etc/sysconfig/network-scripts/ifcfg-eth1
  9. DEVICE=eth1
  10. BOOTPROTO=none
  11. ONBOOT=yes
  12. IPADDR=10.0.0.100
  13. NETMASK=255.255.255.0
  14. GATEWAY=10.0.0.1

2. 路由表初始化验证

使用ip route检查默认路由冲突:

  1. ip route show
  2. # 典型错误输出(两个默认网关冲突)
  3. default via 192.168.1.1 dev eth0
  4. default via 10.0.0.1 dev eth1

3. 临时解决方案(不推荐生产环境)

删除冲突路由的应急方法:

  1. ip route del default via 10.0.0.1 dev eth1

三、策略路由核心实现

1. 创建自定义路由表

编辑/etc/iproute2/rt_tables

  1. # 添加自定义表
  2. 100 inner_net
  3. 101 outer_net

2. 配置表规则

  1. # 内网路由表配置
  2. ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table inner_net
  3. ip route add default via 192.168.1.1 dev eth0 table inner_net
  4. # 外网路由表配置
  5. ip route add 10.0.0.0/24 dev eth1 src 10.0.0.100 table outer_net
  6. ip route add default via 10.0.0.1 dev eth1 table outer_net

3. 策略路由规则制定

基于源IP的路由策略:

  1. ip rule add from 192.168.1.100 table inner_net
  2. ip rule add from 10.0.0.100 table outer_net

基于目的地址的路由(更灵活的方案):

  1. # 访问10.0.0.0/24走外网网关
  2. ip rule add to 10.0.0.0/24 table outer_net
  3. # 访问内网服务走内网网关
  4. ip rule add to 192.168.1.0/24 table inner_net

四、高级配置技巧

1. 标记(mark)路由实现

  1. # 创建mangle规则标记特定流量
  2. iptables -t mangle -A PREROUTING -d 10.0.0.0/24 -j MARK --set-mark 1
  3. # 基于标记的路由
  4. ip rule add fwmark 1 table outer_net

2. 持久化配置

创建/etc/sysconfig/network-scripts/route-eth0route-eth1文件:

  1. # route-eth0内容
  2. 192.168.1.0/24 dev eth0 src 192.168.1.100
  3. default via 192.168.1.1 dev eth0

3. 多网卡绑定(bonding)集成

配置/etc/modprobe.d/bonding.conf

  1. alias bond0 bonding
  2. options bond0 mode=active-backup miimon=100

绑定后策略路由配置:

  1. ip link set eth0 master bond0
  2. ip link set eth1 master bond0
  3. ip addr add 192.168.1.100/24 dev bond0
  4. ip route add default via 192.168.1.1 table inner_net

五、故障排查指南

1. 常见问题诊断

  • 路由冲突:使用ip route get 8.8.8.8检查实际路由路径
  • ARP解析失败arp -an验证网关MAC地址
  • 防火墙拦截iptables -L -n -v检查规则

2. 调试工具推荐

  • tcpdumptcpdump -i eth0 host 192.168.1.1
  • traceroutetraceroute -n 8.8.8.8
  • nmapnmap -sn 192.168.1.0/24

3. 日志分析

关键日志位置:

  1. /var/log/messages
  2. journalctl -u NetworkManager
  3. dmesg | grep eth

六、生产环境最佳实践

  1. 配置管理:使用Ansible自动化配置
    ```yaml
  • name: Configure dual NIC routing
    hosts: servers
    tasks:
    • name: Set eth0 configuration
      nmcli:
      conn_name: eth0-inner
      type: ethernet
      ifname: eth0
      ipv4_method: manual
      ipv4_addresses: 192.168.1.100/24
      ipv4_gateway: 192.168.1.1
      ```
  1. 监控告警:设置网关状态监控

    1. #!/bin/bash
    2. if ! ping -c 2 192.168.1.1 >/dev/null; then
    3. echo "Inner gateway down!" | mail -s "Network Alert" admin@example.com
    4. fi
  2. 备份恢复:建立配置快照机制
    ```bash

    备份当前配置

    ip route save > /root/route_backup.txt
    ip rule save > /root/rule_backup.txt

恢复配置

ip route restore < /root/route_backup.txt
ip rule restore < /root/rule_backup.txt
```

通过以上系统化配置,可实现稳定的双网卡双网关环境。实际部署时建议先在测试环境验证策略路由规则,逐步过渡到生产环境。定期检查路由表状态(ip route show table all)和网关连通性是保障网络稳定的关键。