Posted by & filed under 開発.


 僕がこの業界の敷居を跨いだのは5年前のことですが。当時、ネットワーク管理者というのは、遊惰放逸と日々暮らし、滅多に起きない問題を対処するための予備役みたいな存在かと思っていました。
 しかし、業務を通してネットワークの構築は誰にでも出来ることだけど、メンテナンスは高いスキルを要すると気づき、ネットワーク管理者の仕事の真髄はメンテナンスにあると理解して以降、一旦は考えを改めましたが。最近、当時の考えは究極的にはそれほど間違っていなかったのではないかと思いはじめました。ただ一つ「問題」は常時起き、ひたすら複雑化し続け、決して無くならないという点を除いて。

 ここで言っている「問題」とは、機能の整備及び管理、スケーリングといった比較的簡単で緊急度の低いものから、謎のトラフィックや外部からの攻撃の検知・解析・対策といった、高度なスキルと緊急性を要するものまで様々なものをひと括りに「問題」と言っています。また、これらの問題に対処する為に事前に講じる作業についても考慮すると、ネットワーク管理者が対処しなければならない「問題」は尽きることがはありません。

 某 A 社の場合。そこには非常に優秀な情報管理部門の責任者(以下、マスター)が居て、独自のノウハウで社内のリソースを一元管理し、JPCERT のメールが届くや否や、速攻で既知の脆弱性が潰されます。また、某社にサイバー攻撃をしかけようものなら、その企ては一瞬にしてマスターの超人的探知能力によって察知され、わずかでも成功を夢見た哀れな攻撃者は、その後マスターの謎の攻性能力によって、己れの愚行を激しく後悔する事になります。

 このような人物は、業界を探してもそう多くはいないでしょうが。現存する様々なセキュリティ技術やそれを実装したツールを利用することで、ネットワーク管理者が直面する多くの「問題」に対処することはできると思います。
 しかし、あまり多くのツールを導入し、同時並列に運用する事は、メンテナンスコストの観点から避けたいところです。

 今回は、OpenFlow [1] を用いた「問題」解決方法の一例を紹介をします(「問題解決」とか言うと、某社が唄う宣伝文句のようで、安っぽく聞こえたり、嫌悪感を抱いたりとアレルギー反応を起こす方が居るかもしれませんが。別に他意は無いので、ぜひ最後まで聞いてください)。

 OpenFlow はスイッチの制御プロトコルで、OpenFlow 制御下のスイッチ (以下、OpenFlow スイッチ) を通過するパケットをプログラマブル制御する事で、仮想ネットワークを構築できたり、ネットワークリソースへのきめ細かいアクセスコントロールを実現できたり、各ネットワーク毎といった細かい粒度でのネットワークモニタリングが実現できたりと、とってもオモロいしろものです。

 仕組みを1行で説明すると、OpenFlow スイッチに流れるパケットをスイッチ外で動作する別のアプリケーション(以下、コントローラ)で、l2 から l4 のヘッダを見てマルチプロトコル制御するというものです。
 これだけ聞くと『何や、パフォーマンスはエラい悪そうやな』と思われてしまうかもしれませんが、コントローラで定義したパケット制御のルール(以下、フロー定義)は、スイッチ側に送り、以降スイッチ単独でパケットをさばくことが出来るので、OpenFlow スイッチがハードウェア制御されているものであれば、高いスループットが期待できます(若干お高いですが…)。

 『んで。これを使ってどんな事ができるの?』については、後で紹介します。
 僕の知る限り、「これを使えばネットワークの根底がひっくり返る」とか「サイバーテロが一掃される」「中国が情報統制から開放される」といった類の劇的な変化はありません(おそらく僕の一生が終わるまで)。
 
 『じゃあどうやって使うの?』については、ここ [2] で丁寧に解説してくれています。
 ただ NOX を git でダウンロードし、運用中に “Invalid Ethernet Address” というエラーが出現する場合、[3] のパッチを当てる必要があるかもしれません。
 
 さて。ここで本題の『何ができるのか?』について。
 答えとしては「いろいろ出来る」というものですが。『どのようにできるのか?』というと、L3 スイッチをプログラマブルに制御するようにします。これによって、高いフレキシビリティのネットワークが構築可能になります。

 今回は、実運用例の一例として、OpenFlow スイッチに Firewall を組み込むソフトウェアを OpenFlow コントローラのソフトウェア実装である NOX のコンポーネントで実装します。

 [ 次回 に続く ]

 [1] http://www.openflow.org/
 [2] http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/Deployment/HOWTO/LabSetup
 [3] http://noxrepo.org/cgi-bin/gitweb.cgi?p=nox;a=commitdiff;h=c3fa89a8e5c55e66efbcee3ee32523c9eb5d76c9


関連文書:

  • 関連文書は見つからんがな

Comments are closed.