【shell】海思3536 多网卡绑定聚合——bond技术

在学了在学了! 2020-08-18 20:13:52 3021

0.原理说明

目前网卡绑定mode共有七种(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6

常用的有三种:

  • mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。
  • mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
  • mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。
  • 海斯3536 启用bond模块命令

1)停止bond模块:关闭网卡后停止模块

ifconfig bond0 down

ifconfig eth0 down

ifconfig eth1 down

modprobe -r bonding

2)启动bond模块

modprobe bonding mode=0 miimon=100

ifconfig bond0 192.168.2.143 netmask 192.168.240.1 mtu 1500 up

ifenslave bond0 eth0 eth1   

route add default gw 192.168.2.1

modprobe bonding mode=0 miimon=100
mode模式,0表示平衡负载,miimon用来进行链路监测的时间间隔。100即每100ms监测一次链路状态。bonding只监测主机与交换机之间链路。如果交换机出去的链路出问题而本身没有问题,那么bonding认为链路没有问题而继续使用

ifconfig bond0 192.168.2.143 netmask 192.168.240.1 mtu 1500 up

配置IP地址,子网掩码

ifenslave bond0 eth0 eth1

绑定网卡及主网卡,写前面的(eth0)为主网卡

route add default gw 192.168.2.1

设置网关

1.shell脚本

#!/bin/sh

echo "bond reading network configure..."                                           

. /mnt/nand/etc/network.conf

restart() {

    if [ $MODE = 0 ] || [ $MODE = 1 ]; then

      ifconfig $BONDIFNAME down

      ifconfig $IF0 down

      ifconfig $IF1 down

      modprobe -r bonding

      modprobe bonding mode=$MODE miimon=$BONDIFMIIMON

    # dhcp   

      if [ $BONDIFTYPE = 1 ];then

        ifconfig $BONDIFNAME up

        if [ $PRIMARY = 0 ];then                                                    

          ifenslave $BONDIFNAME $IF0 $IF1                                           

        else                                                                        

          ifenslave $BONDIFNAME $IF1 $IF0                                             

        fi  

        dhcpcd $BONDIFNAME -t 30

    # static

      else

        ifconfig $BONDIFNAME $BONDIFADDR netmask $BONDIFMASK mtu $BONDIFMTU up

        if [ $PRIMARY = 0 ];then                                                    

          ifenslave $BONDIFNAME $IF0 $IF1                                           

        else                                                                        

          ifenslave $BONDIFNAME $IF1 $IF0                                             

        fi                                                                            

        route add default gw $BONDIFGATEWAY

      fi

    fi 

}

case "$1" in

  stop)

    modprobe -r bonding

    ;;  

  restart)                                 

        restart

    ;;

  *)

    restart

    ;;

esac

exit $?                                                                       

echo "bond networking configure success."

2.配置文件

MODE=1

BONDIFNAME=bond0

BONDIFTYPE=0

BONDIFADDR=192.168.2.143

BONDIFMASK=255.255.240.0

BONDIFGATEWAY=192.168.2.1

BONDIFMTU=1500

BONDIFMIIMON=100

PRIMARY=0

IF0=eth0

IF1=eth1

3.代码实现

#define DEVICE_NAME_BOND "bond0"

#define DEVICE_NAME_ETH0 "eth0"

#define DEVICE_NAME_ETH1 "eth1"

#define NETWORK_CFG_PATH "/mnt/nand/etc/network.conf"

#define NETWORK_CFG_FMT "\

MODE=%d\n\

BONDIFNAME=%s\n\

BONDIFTYPE=%d\n\

BONDIFADDR=%s\n\

BONDIFMASK=%s\n\

BONDIFGATEWAY=%s\n\

BONDIFMTU=%d\n\

BONDIFMIIMON=100\n\

PRIMARY=%d\n\

IF0=%s\n\

IF1=%s\n"

static int write_network_cfg(void)

{

    FILE *fp = NULL;

    if (netcfg == NULL)

        return -1;

    if ((fp = fopen(NETWORK_CFG_PATH, "w")) == NULL)

        return -1;

    lockf(fileno(fp), F_LOCK, 0);

    fprintf(fp, NETWORK_CFG_FMT, 0, DEVICE_NAME_BOND, 0,

        "192.168.2.143", "192.168.240.0",

        "192.168.2.1", 1500, 0, DEVICE_NAME_ETH0, DEVICE_NAME_ETH1);

    fflush(fp);

    lockf(fileno(fp), F_ULOCK, 0);      

    fclose(fp);

    return 0;

}

最后在命令行上运行shell脚本即可

转自:https://blog.csdn.net/y7u8t6/article/details/83620123

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
在学了在学了!
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区