Xubuntu18でbonding設定

最終更新日:2020年06月10日
レベル:★★★☆☆
複数のNIC(ネットワークインターフェース)を使ってネットワークを冗長化し、対障害性やスループット向上を目指すボンディング(bonding)をXubuntuで手軽に設定してみます。
この記事の目次

ネットワークの世界でボンディング(bonding)やチーミング(Teaming)というものがあります。
これは、複数のNIC(ネットワークインターフェース)を使ってネットワークを冗長化し、対障害性やスループットを向上させることを目的としたものです。

本格的にボンディング設定を施し、対障害性とスループットの向上を目指すのであればボンディングに対応したインテリジェントスイッチングハブが必要になってきますが、ご家庭用の普通のスイッチングハブでもNICが2枚入っているPCであればボンディング設定をすることができます。

今回はOSにXubuntuを使ってボンディング設定を行う例をご紹介します。
ネットワークには「NetworkManager」ではなく「netplan」を使用します。

事前準備

今回bonding設定にはDHCPではなく固定IPアドレスを使用することとします。
ですので次のものを事前に準備、調査しておきます。

  1. bondingに割り振るIPアドレス(1個)
  2. 参加するネットワークの情報(ネットマスク値、ゲートウェイ、DNSのIPアドレス)
  3. bonding設定するマシンのNICの名前
    「ip a」コマンドなどで調べておきます。

設定

/etc/modulesの設定

/etc/modules を編集します。

# vi /etc/modules

最下部の「bonding」を追加します。

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
bonding

netplanの設定

現在の設定ファイルを退避させます。

# cd /etc/netplan
# mv 01-network-manager-all.yaml 01-network-manager-all.yaml.old

新しい設定ファイルを作成します。

# vi /etc/netplan/01-bonding.yaml

設定ファイル 01-bonding.yaml に次の内容を書きます。

network:
   version: 2
   ethernets:
      enp1s0f0: <---------- ①
         addresses: []
         dhcp4: false
         dhcp6: false
      enx00e04c68a5b9: <--- ②
         addresses: []
         dhcp4: false
         dhcp6: false

   bonds:
      bond0: <----------------------------- ③
         addresses: [192.168.1.100/24] <--- ④
         gateway4: 192.168.1.1 <----------- ⑤
         nameservers:
            addresses: [192.168.1.1] <----- ⑥
         interfaces:
            - enp1s0f0 <------------------- ⑦
            - enx00e04c68a5b9 <------------ ⑦
         parameters:
            mode: balance-alb <------------ ⑧
            mii-monitor-interval: 100 <---- ⑨
            arp-interval: 0 <-------------- ⑩

設定の概要です。

  • ①:bonding設定するマシンのNICの名前。事前に「ip a」コマンドで調べておきます。
  • ②:同じくbonding設定するマシンの2枚目のNICの名前。事前に「ip a」コマンドで調べておきます。
  • ③:bonding設定の名前。今回は「bond0」とします。
  • ④:bonding設定するネットワークのIPアドレスを設定します。
      例では「192.168.1.100 (ネットマスク255.255.255.0)」を指定しています。
  • ⑤:bonding設定するネットワークのゲートウェイを設定します(例では192.168.1.1)
  • ⑥:bonding設定するネットワークのDNSサーバのIPアドレスを指定します(例では192.168.1.1)
  • ⑦:bondingに参加させるNICの名前を全て記述します
  • ⑧:bondingモード。今回は「balance-alb」を使います。
      bondingモードについてはネットで多数資料がでていますので、そちらを参考に。
  • ⑨:NICの監視の間隔をmsec単位で指定します。
  • ⑩:arp管理の間隔。今回はarp監視は使わないので「0」にします。
      ※ネットワーク内トラフィック増加、arp監視のオーバーヘッドのデメリットを考慮。

 

チェック&反映します。
設定ファイルにエラーがあればメッセージを表示します。チェックOKであれば何も表示されません。

# netplan apply

動作確認

「ip a」コマンドで正しく設定できているか確認してみます。
既存の2枚のNICにIPアドレスが割り振られておらず、新たに作成した「bond0」に設定したIPアドレスが割り振られていればOK。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 16:46:17:12:34:56 brd ff:ff:ff:ff:ff:ff
3: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 16:46:17:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.101/24 brd 192.168.1.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 〜
      :
4: enx00e04c68a5b9: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 16:46:17:12:34:56 brd ff:ff:ff:ff:ff:ff

物理的動作確認

bonding設定したマシンからネットワーク上の任意のホストにpingを飛ばしながら、片方のNICのLANケーブルを抜き差しし、通信が途絶えないことを確認してみます。
また逆にネットワーク上のPCからbonding設定したマシンへpingを飛ばしながら、bonding設定したマシンの片方のNICのLANケーブルを抜いてみます。
bondingが動いていれば(一瞬pingが止まりますが)通信が途絶えることはないでしょう。

ー 以上 ー

 CMSを使ったホームページ制作
 VPS, AWS等クラウドシステム構築
等々のご依頼承っております