Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Linux
ちょっとハマったので、メモしておきます(例によって、日本語の情報が全くない…)。

最近の L2 Switch には「EAPOL 透過」を謳ったものが多くあります。EAPOL は IEEE802.1x 認証に使用されるプロトコルですが、802.1x 認証対応のスイッチをエッジに置くことが(主にコスト面で)難しい場合、EAPOL 透過なスイッチを認証スイッチのポートに接続することによって、1 つのポートで複数のクライアント(MAC アドレス)を認証することができるようになります。

EAPOL の宛先 MAC アドレスには常に 01-80-C2-00-00-03 が使用されます。これは PAE Group Address とか Link Local Multicast Address と呼ばれる MAC アドレスであり、スイッチが透過してはならないフレームであると規定されています(フロー制御の PAUSE フレームや STP の BPDU フレームなども、この種類の MAC アドレスを使用しています)。

さて、Linux カーネルの提供するブリッジでは EAPOL を透過しません。現時点で latest stable な linux-2.6.36.2 において、net/bridge/br_input.c の br_handle_frame では、Link Local Multicast Address のフレームを受信した場合「PAUSE フレームであれば破棄」「ブリッジ自身の STP が無効かつ BPDU フレームであれば(ebtables が許せば)転送」「それ以外は自ホスト宛の通信として扱う(ebtables の filter テーブルの INPUT チェインのみに入る)」という挙動になっているため、EAPOL フレームはどう頑張っても転送されません(ちなみに、CentOS 5.x で使用している linux-2.6.18 の時点では、全てのフレームが自ホスト宛の通信として扱われていました)。仕様通りの動作で良いことではあるのですが、EAPOL 透過のできるスイッチが市場に出回っていることを考えると、運用上は不便でもあります。特に最近では KVM / Xen など仮想マシンのネットワークにブリッジを使用するケースが多いので、この仕様では仮想マシンに対して物理スイッチの IEEE802.1x 認証を適用することができません(そのような構成が一般的かどうかはさておいて)。

EAPOL の透過については Linux Kernel の Bridge リストでも何度か議論があったようで、2007 年 11 月に一度リジェクトされ、2010 年 10 月にもう一度話題に上がり(上記の仮想マシンの話題はこの方が仰っていた環境)、ブリッジの STP が無効であれば PAUSE 以外の全フレームを透過するパッチが無事コミットされた、という状況のようです。

上記パッチがコミットされたのが 2010/10/21 なので、実際に stable としてリリースされるのは 2.6.37 でしょうか。気軽に使えるようになるまでは、まだ遠そうです…。

(追記) 802.11x という誤記があったので 802.1x に直しました。

Comments

Leave Yours...
Name:
E-mail / URL (optional):
Comment:
Are You Robot?: