日々様々なトラブルにハマっている、困ったシステム管理者の奮闘日記です。

有線LANと無線LANでbondingが効かない?

先日、ノートPCにCentOSを入れて有線LANと無線LANの2枚差しネットワークを設定したのだが、これを使って耐障害性を上げたいな….なんて考えたのでやってみた。

耐障害性のためにはNICをbonding設定すればいいので、ここまでは割と簡単に終了。
bondingの設定、そもそもbondingって何か、は詳しく説明してくださっているサイトが多数あるのでそちらを参考に。

 

さて、今回ハマったのは、bonding設定したノートPC(以下ノートサーバ)にpingを打ち続け、途中でLANケーブルを引っこ抜いてもノートPCへの通信が続くはずが、PCによってその動きが違うことが判明したこと。

というのは、こんな感じ。

  • Linuxが入ったPCでpingを打ち続け、ノートサーバのLANケーブルを引っこ抜くと、一瞬通信が途絶えるが、そのまま何事もなかったようにpingのリプライが返ってくる。
    _
  • 同じように、Windows PCからpingを打ち続け、ノートサーバのLANケーブルを引っこ抜くと、
    _
    要求がタイムアウトしました。
    _
    になってしまう。
    しかし、pingを中止し、2~3分待ってから再度pingを打つと、正常にリプライが返ってくる。
    _
  • Linux PCもWindows PCも、ノートサーバの有線LANが有効な時には各々のPCのARPテーブルには有線LANのMACアドレスが登録される。
    _
  • ノートサーバの有線LANケーブルを抜いたとき、Linux PCのARPテーブルには無線LANのARPテーブルが登録される。
    _
  • Windows PCの場合、pingのリプライが返ってこないときには、ARPテーブルには有線LANのMACアドレスが登録されたまま。
    だが、しばらくして再度pingを打った際に正常にリプライが返ってきたときには、ARPテーブルには無線LANのMACアドレスが登録されている。

 

ここまでだと、Windows PCではbondingで冗長構成されたシステムは認識されないのか?と思ってしまうが、まさかそんなことはないだろう。

ここから泥沼の始まり~(ToT)/~~

 

意を決して、今はサポート終了してしまったWindows XPマシンを急きょセットアップして試してみた。

….

うまくいくじゃん orz …

 

え、じゃあWindows 7から挙動が変わったのか?

などと思い、TCP/IPの実装回りを調査するも、これといったものがない。

こんな情報もあったんだけれどもね。

説明のアドレス解決プロトコル(ARP)キャッシュの動作の Windows Vista の TCP/IP 実装で
(変な日本語…)

またまた意を決して、今度はWindows 7マシンをセットアップして試す。

….

うまくいくじゃん (ToT)(ToT)(ToT) orz

 

よくわからなくなってきた。

ここまでサービスパックをあてては試し、パッチをあてては試し、を続けたのだが成果なし。

 

bonding設定は次のとおり

#vi /etc/modprobe.d/dist.conf
---------------------------------------------------------------------------
   :
alias bond0 bonding
---------------------------------------------------------------------------

・bondingインターフェース設定

#vi /etc/sysconfig/network-scripts/ifcfg-bond0
---------------------------------------------------------------------------
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.24.104
NETMASK=255.255.255.0
GATEWAY=192.168.24.1
TYPE=Ethernet
BONDING_OPTS="mode=1 primary=eth0 miimon=100 updelay=500 fail_over_mac=1"
---------------------------------------------------------------------------

※ bonding mode=6にしたいところだが、ログに

Aug 31 15:18:22 localhost kernel: bonding: bond0: Error: dev_set_mac_address of
dev wlan0 failed! ALB mode requires that the base driver support setting the hw
address also when the network device's interface is open

と出てうまく働かない。
無線LAN子機がMACアドレスの書き換えに対応していない様子。
(無線LANのドライバをRealtekのものに替えても現象は変わらず)
よって、やむなくmodeは1で運用する。

 

….

まさか!!

我が家のWindows PCには全て「ESET Smart Security」(以後、ESET)を入れている。
ところが、急きょセットアップした検証用のWindows XPマシン、Windows 7マシンにはESETは入れていない状態で検証したのだ。

こいつか( ゚Д゚)???

試しに ESET のファイアウォールを一時的に無効にしてためしたみた。

….

うまくいった orz …

 

今までの苦労はなんだったんだ~
またESETにやられたよ~

 

そういえば動作テスト時にこんなのが出ていたなぁ…

Image

 

でも、対処したはず。

Image

 

確認すると、ちゃんと例外扱いになっているんだが…

Image

Image

 

う~ん、よくわからん。
が、とりあえず原因はわかった。

暫く時間はかかる(3分くらい?)が、一応耐障害性は確保できた。
この辺でやめにしておこう。

 


You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

AddThis Social Bookmark Button

Leave a Reply