geek.conf.2

あるエンジニアの備忘録

Linux bonding

LinuxRHEL系)でNIC冗長化する方法を紹介しまーす。


WindowsではBroadcomなどNICドライバメーカからの専用ソフトとかあって
それを用いて行いますが、LinuxではOSでそれを行います。

方法はまず読み込むモジュールを設定するファイル/etc/modprobe.confを編集します。
kernel2.4までは/etc/module.confでしたがkernel2.6からは上記ファイルになりました。
☆20120216追記→もっと言うと/etc/modprobe.d/以下にbondingとか言うファイル作ってそこに
以下の記述をしても良いよ。

modprobe.confを以下のように編集します。

alias bond0 bonding
alias eth0 e1000
alias eth1 e1000
alias scsi_hostadapter mptbase→これ関係ない
alias scsi_hostadapter1 mptscsih→これ関係ない
options e1000 Speed=1000 Duplex=2
options bonding mode=1 miimon=0 arp_interval=60
arp_ip_target=192.168.1.1
primary=eth0

各パラメータの意味は
alias 別名を定義するパラメータ
option 適用するモジュール
Speed= XXXMbps
Duplex= デュプレックスモード
mode bondingモード 0:ラウンドロビン
    1:active backup
arp_interval ARP監視の間隔(m秒)
arp_ip_target ARP監視先ホスト
primary= bonding modeが1の場合のプライマリインターフェース

次にインターフェース設定ファイル/etc/sysconfig/network-scripts/ifcfg-bond0
を編集します。まあ普通の記述ですね。

DEVICE=bond0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes
BOOTPROTO=static

☆20120216追記→Ethtoolでなんかspeedとかduplexやらを指定したいときはこれ使うよろし。ただし
本件の場合、/etc/modprobe.confにてspeedもduplexも設定しているから2重になるあるよ。

TYPE=Ethernet
ETHTOOL_OPTS="autoneg off speed 1000 duplex full"

☆20120227追記→ifcfg-*ファイルがNetworkManagerとかいうネットワーク接続お助けツールの管理下に置かれることを避けたい場合はこれ使うよろし。

NM_CONTROLLED=no



次にbondingに実際に使用するインターフェース設定です。
/etc/sysconfig/network-scripts/ifcfg-eth0を編集します。

DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=static

肝はMASTERとSLAVEですね。同様にeth1の方も設定します。

さて設定を反映します。

# /sbin/ifconfig bond0 down
# rmmod bonding
# modprobe bond0
# /sbin/ifconfig bond0 up
まずbond0を落としてbondingを削除します。
んでbond0をインストールしてbond0を起動します。

で確認します。
# cat /proc/net/bonding/bond0

以上