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ではLinuxのNetfilter(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)