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

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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."
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
<

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
<

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;

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
<

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

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

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

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

举报反馈

举报类型

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

详细说明

审核成功

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

审核失败

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

小包子的红包

恭喜发财,大吉大利

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

    易百纳技术社区