ボンディングがうまくいかない

問題文  

ある会社ではサーバ同士をボンディングで接続する検証を行っていた。
検証VMでボンディングを行い、VLANインターフェースを複数アタッチして、他のVMとの疎通を確認したい。 疎通先のVMでは正しい設定がなされた状態となっているらしいが、検証VMからはpingが通らない。
何も言わずに検証VMの構築を担当していた社員が、辞めてしまった。 なんとかして、検証VMからpingを飛ばせるようにしてほしい。

初期状態  

  • 検証VMから192.168.20.1にpingが通らない
  • 検証VMから192.168.30.1にpingが通らない

終了状態  

  • 検証VMのeth0 と eth1 がLACPでボンディングを行っている
  • 検証VMにVLAN ID 20とVLAN ID 30のVLANインターフェースが作成され eth0 と eth1 のボンディングインターフェースにアタッチされている
  • VLAN ID 20のインターフェースに 192.168.20.0/24 のIPアドレスが振られている
  • VLAN ID 30のインターフェースに 192.168.30.0/24 のIPアドレスが振られている
  • 検証VMから192.168.20.1にpingが通る
  • 検証VMから192.168.30.1にpingが通る

採点基準  

設定内容割合
bondingの設定(lsmodにてbondingが有効になっていたら)40%
VLANの設定のみ10%
pingによる疎通確認ができている50%

解説  

problem.png.webp


この問題では、検証VM側でbondingのモジュールがロードされていないこととVLANの設定が抜けていることが原因です。
lsmodでbondingのモジュールが入っていないことを確認します。 lsmod | grep bondingにて、確認することができます。
bondingモジュールはmodprobe bondingで有効にすることができます。
VLANの設定方法として、/etc/sysconfig/network-scripts上にある設定ファイルを触る必要があります。
modprobe bondingとしてモジュールをロードしようとすると、

modprobe: ERROR: could not find module by name='off'
modprobe: ERROR: could not insert 'off': Function not implemented

というエラーが出て読み込むことができなかったと思います。
無効化にするコンフィグとして、/etc/modprobe.d/modprobe.confにあるので削除する必要があります。
削除後はmodprobe bondingでモジュールをロードすると使えるようになります。

次に、VLAN側の設定を変更する必要があります。
/etc/sysconfig/network-scripts/ifcfg-bond0.20

DEVICE=bond0.20
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.20.2
NETMASK=255.255.255.0

/etc/sysconfig/network-scripts/ifcfg-bond0.30

DEVICE=bond0.30
ONBOOT=yes
IPADDR=192.168.30.2
NETMASK=255.255.255.0

初期状態のコンフィグでは上記のようになっていますが、 /etc/sysconfig/network-scripts/ifcfg-bond0.20

DEVICE=bond0.20
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.20.2
NETMASK=255.255.255.0
VLAN=yes

/etc/sysconfig/network-scripts/ifcfg-bond0.30

DEVICE=bond0.30
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.30.2
NETMASK=255.255.255.0
VLAN=yes

最後に
systemctl restart networkにてネットワークサービスを再起動することで、pingによる疎通が取れるようになります。