Notes
  • 简介
  • Linux
    • Ubuntu
      • Ubuntu 20.04 ARM64 修改PAGE_SIZE 64k
    • Samba
      • CentOS7安装Samba
      • 简单案例
      • 审计
      • 相关命令
    • Systemd
    • FPM 打包 nginx rpm 包
    • rpm 打包-从二进制文件进行打包
    • Centos7 重置密码
    • CentOS7搭建kvm并创建虚拟机
    • CentOS7-KVM 嵌套虚拟化
    • CentOS7 KVM GPU 穿透
    • Bonding
    • CentOS7 发送邮件
    • CentOS7 安装 OpenVPN
    • Linux 多线路由策略
    • Webmin 安装
    • NoVNC 安装
    • SRS-RTMP 服务部署
    • CentOS7 安装 MongoDB
    • confluence 安装
    • jira 安装
    • crowd 安装
    • ScriptRunner For Jira
    • ScriptRunner For Confluence
    • Ubuntu VNC
    • Ubuntu18.04-VNC 安装
    • deb 打包
    • iptables
    • debian 保持软件包一致
    • Ubuntu18.04 编译安装 grpc
    • CentOS7 安装 odoo13
    • Pacemaker 入门
    • Firewalld Rich Language
    • PHP Xdebug
    • CentOS7.3 编译安装 Python3.6
    • 葫芦儿打包
    • CentOS7 安装 Tomcat8
    • CentOS7 安装 JDK
    • GuacamoleServer 编译安装
    • FreeBSD7.0安装AMP
    • CentOS7 换源
    • deb下载并离线安装
    • pip下载并离线安装
  • Network
    • 案例一
  • AI
    • 微调Qwen2.5
    • Qwen2.5 VL AWQ量化
    • qwen2.5 填充权重
  • JavaScript
  • Zabbix
    • CentOS7 安装 Zabbix4.0 LTS
    • Zabbix 加密连接
    • Zabbix 主动和被动模式
    • Zabbix 配置邮件报警
    • Zabbix 监控 MySQL
  • 数据库
    • MySQL
      • CentOS7 Install MySQL5.7
      • MySql 主从配置
      • CentOS7 安装 Percona XtraDB Cluster
      • MySql 压力测试-sysbench
      • MariaDB Galera Cluster
      • 备份脚本
    • MongoDB
      • 启用账号密码登录
      • 备份脚本
  • Nginx
    • CentOS7 安装 Nginx
    • Nginx 配置
    • nginx-http-flv-module
    • Nginx-WebDAV
  • Docker
    • CentOS7 安装 Docker
    • Dockerfile
    • DockerSwarm 集群
    • Docker 安装 guacamole
  • Python
    • 虚拟环境
  • Windows
    • Windows 问题集合
    • 迅雷自动安装 Chrome 插件
    • RDP 注册表
    • Rdp File Setting
    • 本地组策略对象(LGPO)工具
    • 禁用应用联网
    • SQL Server 问题处理
    • SQL Server Trigger
    • NSIS 脚本
    • 使用QEMU运行ARM64 CentOS7
    • DOS 脚本
    • Windows 11 设置旧版右键菜单
    • 远程桌面二次验证
  • Apple
    • AppStore 应用开发及上架
    • Apple 打包 Golang WebDav 制作 pkg 安装包
  • Android
    • Android Studio创建具有root权限的虚拟机
    • Android读写挂载system
    • Android安卓CA至系统
  • 证书
    • 证书名称(主题)
    • 证书扩展
    • SSL 自签
    • 免费 https 证书申请
  • 树莓派
    • 树莓派系统烧录及系统打包制作
    • 树莓派基础操作
    • 树莓派安装 NextCloud
    • 树莓派安装 LNMP
    • 树莓派自定义开机界面和登录提示
    • 树莓派安装 HomeAssistant
    • HomeAssistant 配置
    • 树莓派自动挂载 U 盘
    • 树莓派安装 vsftpd
    • vsftpd 配置文件详解
  • ceph
    • ceph-deploy 部署 ceph nautilus 版本
    • ceph dashboard
  • OpenStack
    • OpenStack VM 配置 Virtual IP
    • OpenStack Glance 对接 Ceph RBD 存储
    • OpenStack Cinder Volumes 对接 Ceph RBD 存储
    • OpenStack 集群搭建
    • OpenStack Rocky 单节点部署
    • OpenStack Rocky 集群部署
    • OpenStack CentOS6 镜像制作
    • OpenStack-Ubuntu 镜像制作
    • Openstack-Windows 镜像制作
    • OpenStack-RBD 导入镜像
    • OpenStack-Rocky 灾备
    • rbd-mirror
  • FFmpeg
    • CentOS7 静态编译FFmpeg
    • MacOS10.12静态编译FFmpeg
    • CentOS7 Arm64静态编译FFmpeg
    • 使用NVIDIA显卡
    • 脚本
  • Other
    • 华为一碰传标签制作
    • 常用软件
    • wireguard
由 GitBook 提供支持
在本页
  • 问题
  • 解决思路
  • 实现方法
  1. Linux

Linux 多线路由策略

问题

服务器有两张网卡eth0 10.0.10.10/24 和eth1 10.0.20.10/24,默认路由eth0,外部网络访问服务器时,只能访问eth0,无法访问eth1,通过网络抓包,分析结果为:访问eth1时,服务器正常接收到数据包,服务器响应数据时,却从eth0接口响应,IP 地址不一致,导致响应失败,客户端无法接受到服务器的正常响应。

解决思路

服务器从那一个网络接口接收数据,就从哪一个网络接口响应数据。

实现方法

  • 定义路由表

    编辑/etc/iproute2/rt_tables文件,根据文件格式,添加如下内容

    # id(不重复)    路由表名称(不重复)
    1               net_10_0_10_0
    2               net_10_0_20_0
  • 设置路由

    # 添加默认路由
    ip route add default via 10.0.10.1 dev eth0
    # 清空路由表net_10_0_10_0
    ip route flush table net_10_0_10_0
    # 在net_10_0_10_0路由表,添加路由,访问10.0.10.0/24网段,使用eth0接口的10.0.10.10IP
    ip route add 10.0.10.0/24 dev eth0 src 10.0.10.10 table net_10_0_10_0
    # 在net_10_0_10_0路由表,设备默认路由为10.0.10.1
    ip route add default via 10.0.10.1 table net_10_0_10_0
    # 删除路由策略
    ip rule del from 10.0.10.10 table net_10_0_10_0
    # 添加路由策略,来自 10.0.10.10的数据包使用net_10_0_10_0路由表
    ip rule add from 10.0.10.10 table net_10_0_10_0
    
    ip route flush table net_10_0_20_0
    ip route add 10.0.20.0/24 dev eth1 src 10.0.20.10 table net_10_0_20_0
    ip route add default via 10.0.20.1 table net_10_0_20_0
    ip rule del from 10.0.20.10 table net_10_0_20_0
    ip rule add from 10.0.20.10 table net_10_0_20_0
  • 定义网络重启自动添加路由

    • 创建/etc/init.d/network-route脚本,实现执行脚本添加路由

      echo '#!/bin/bash
      ip route add default via 10.0.10.1 dev eth0
      ip route flush table net_10_0_10_0
      ip route add 10.0.10.0/24 dev eth0 src 10.0.10.10 table net_10_0_10_0
      ip route add default via 10.0.10.1 table net_10_0_10_0
      ip rule del from 10.0.10.10 table net_10_0_10_0
      ip rule add from 10.0.10.10 table net_10_0_10_0
      
      ip route flush table net_10_0_20_0
      ip route add 10.0.20.0/24 dev eth1 src 10.0.20.10 table net_10_0_20_0
      ip route add default via 10.0.20.1 table net_10_0_20_0
      ip rule del from 10.0.20.10 table net_10_0_20_0
      ip rule add from 10.0.20.10 table net_10_0_20_0
      ' > /etc/init.d/network-route
      # 添加执行权限
      chmod +x /etc/init.d/network-route
  • 添加脚本到网络服务,实现启动和重启网络时,自动执行脚本

    编辑/etc/init.d/network文件,在start部分添加如下内容

    start)
    .....
        bash /etc/init.d/network-route
        ;;
    .....
    • 重启网络

    systemctl daemon-reload
    systemctl restart network.service
上一页CentOS7 安装 OpenVPN下一页Webmin 安装

最后更新于3年前