2006年05月12日

Linuxルータのタコ足配線を解消しよう 〜 タグVLAN(IEEE 802.1Q)の活用

はてなブックマークに登録

社内ネットワークや学校などでは、プライベートネットワークを複数のセグメントに分けてアクセス制限をしたい時があると思います。例えば、教師用のセグメントと生徒用のセグメントは別のネットワークとして構築し、教師用セグメントからは生徒用のセグメント上のサーバにもアクセス出来るようにしたいかもしれません。DSAS内部においても状況によってはこれと似たような事をしたい場合があります。Linuxルータを使っている場合に真っ先に思い浮かぶ構成は、おそらく以下のようなものだと思います。


+---------------------+
+ Internet +
+----------+----------+
|
|eth0
+----------+----------+
+ Linuxルータ +
+---+------+------+---+
|eth1 |eth2 |eth3
| | |
+---------------+ | +-----------+
| | |
+---+-----------+ +-------+-------+ +-------+-------+
+ L2SW(LAN A用) + + L2SW(LAN B用) + + L2-SW(Lan C用)|
+---------------+ +---------------+ +---------------+



しかし、この構成にはいくつかの問題があります。

・それぞれのLAN用にNICとスイッチが必要
 ・セグメントが増える場合にはLinuxルータにNICを増設しなければならない
 ・また、その際にはサービス停止しなければならない
 ・Linuxルータが故障した場合は、同じ構成のマシンを用意しなければならない

DSASの基本ポリシーの一つに「どのマシンでもどの役割を担えること」というのがあるので、特定のマシンだけにNICがいっぱい刺さってたりケーブルがいっぱい繋がっているのは気持ちが悪いのです。
ルータは冗長構成なので、万一故障してもF/Oしますが、代替機を割り当てて冗長構成に復帰させる為には、現地に出向いてLANケーブルを繋ぎ変えないといけません。
(データセンターのLANケーブルなんて抜き差ししたくないです・・・はい)

まあ、「Linux使わずにL3SWを使えばいいやん」という声も聞こえてきそうですが、L3SWではLinuxNetfilter(iptables)ほど強力なパケット操作をできない事が問題になります。

そこで、以下のような構成を考えてみました


+----------+
+ Internet +
+----+-----+
|
+----+----------------------------------------------------------+
+ VLAN1 | VLAN2 | VLAN3 | VLAN4 | VLAN(1+2+3+4) TagVLAN +
+---------+---------+---------+----------+-------------------+--+
| | | |eth0 |eth0
| | | +------+------+ +---------+---------+
| | | + Linuxルータ + + Linuxルータ(予備) +
| | | +-------------+ +-------------------+
| | |
+---+---+ +--+----+ +-+-----+
+ LAN A + + LAN B + + LAN C |
+-------+ +-------+ +-------+



InterNet 及び LAN A〜C は全て同じスイッチに接続します。
それぞれを別のVLANとして構成しますが、ルータ向けのポートはVLANタグを付けて全てのVLANに参加させます。そのため、IEEE 802.1Q をサポートしているスイッチを使う必要がありますが、インテリジェントスイッチであれば大抵サポートされていると思うので特に問題にはならないと思います。

この構成であれば、Linuxルータに何本ものLANケーブルを接続する必要もないですし、セグメントを増やす場合も新しいVLANを切るだけで済むので停止の必要もありません。
また、VLAN(1+2+3+4)に接続されたマシンであれば、どのマシンでも物理構成の変更なし(ケーブルの差し替え不要)でルータとして機能させることができます。DSAS上のルータはディスクレスシステムなので 現用系のマシンがこけたら、予備機をネットワークブートするだけで復旧することができるようになっています。

ただし、このような構成で運用するためには、Linuxルータでも IEEE 802.1Q をサポートする必要があります。Linuxカーネルでは、構築時に CONFIG_VLAN_8021Q=y とすることでこの機能を有効にすることができ、ユーザランドツールとして vconfig というコマンドがあります。vconfigでは、各VLANに対する仮想的なインターフェイスを作成することができます。


klab_gijutsu2 at 15:09│Comments(0)TrackBack(0)

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント