VLAN とは
VLAN とは、ブロードキャストドメインを分割する L2 の仮想技術です。分かり易く言うと、物理的に 1 つのスイッチを、あたかも複数のスイッチがあるかのように見せる技術です。別の言い方をすると、1 つの物理スイッチを、複数の仮想スイッチに分割する技術です。
これは L3 の仮想技術である VRF(1つの物理ルータを複数の仮想ルータに分割する技術)に似ています。また、サーバの世界で言えば、物理サーバの中に ( Redhat KVM や Windows Hyper-V 等の) ハイパーバイザ型仮想サーバを作成するのに似ています。
VLAN は IEEE802.1q の規格として定められており、1~4094 の VLAN ID を使い、スイッチ上のどのポートがどの VLAN に所属しているかを識別します。同じ VLAN に所属するポート同士が、同じブロードキャストドメイン=同じ論理スイッチに所属します。
規格上は最大 4094 個の VLAN が作れますが、機器の仕様によってはそれ以下の数しか使えないことがほとんどです。
VLANの必要性、セキュリティリスクの排除
VLAN の必要性の説明として、「グループ内での通信は許可するけどグループを跨ぐL2通信をさせたくない場合に、それを同一スイッチ内で実現する」というのをよく見ます。
確かにそれはそうなのですが、現実問題として今の時代では Ethernet 通信は ARP くらいのもので、IP 通信がほとんどです。
(VLAN を使わず) 同一ブロードキャストドメイン上で複数セグメントを持たせた場合、異なるセグメント間で Ethernet 通信は可能ですが、(ルーティングポイントが無い場合は) IP 通信 ( L3 通信 ) はできません。なのでそうなると VLAN の必要性は薄いんじゃないか?!と思うかもしれません。
しかしそうではありません。もう少しセキュリティに踏み込んだ説明をすると、VLAN の必要性は「そのセグメントが保有するアクセス権を乗っ取られないため」というのが一番重要だと考えています。
具体例として以下をご覧下さい。
図で示している通り、VLAN を使わないときの問題点としては、以下2つです。
- ブロードキャストドメインが分割されないため、他のセグメントの ARP が受信できてしまう。
- ARP をパケットキャプチャすればどのセグメントが利用できるかが分かり、クライアント PC の IP アドレスをそのセグメントに変えてしまえば、(収容ポートを変えることなく)そのセグメントに通信できてしまう。
上記の例で言えば、もともと「10.10.10.0/24」のクライアント PC を利用している営業部の悪意あるユーザが、そのクライアント PC に Wireshark 等のパケットキャプチャソフトをインストールし、幹部のセグメント「10.19.99.0/24」の存在を把握し、そのクライアント PC の IP アドレスを「10.19.99.222/24」等に設定をします。すると、そのクライアント PC で正規の幹部の PC 等にアクセスできてしまいます。これが VLAN を使わないときの大きな問題となるのです。
そこで、VLAN によるブロードキャストドメインの分割を試みます。営業部は VLAN ID=10、開発部は VLAN ID=20、幹部は VLAN ID=999 とします。
VLAN 10、20、999 のそれぞれで1つずつ仮想スイッチが生成され、ブロードキャストも互いには通信できない状態となり、パケットキャプチャをしたとしても、他のVLANでどのセグメントが使われているかを把握することはできません。また、万が一分かったとして、IPをそのセグメントのものにしても、自分が使っている VLAN 10 のポートでは、VLAN 999 には通信できません。
なお注意点として、これが L3 スイッチだとルーティングにより互いに通信が可能な状態になってしまいます。セキュリティを保つには L3 スイッチで ACL の設定が必要となりますが、このようなスイッチが社内にたくさんあると、(一度設定するだけならともかく)セキュリティルール変更に伴う設定変更などの運用管理が大変です。
なので、NW デザインとして L3 スイッチは NW の中心に配置して、そこで全ての VLAN 間のアクセス制御を行い、L3 スイッチからは L2 スイッチを配置し、VLAN を伸ばして、クライアントに接続する、という構成が理想形です。
このような構成でもやはり VLAN が活きてきます。もし VLAN を使わずにいると、先程と同様の手順で悪意ある営業部のユーザが、幹部のセグメントの IP を把握・設定してしまい、営業部の人間が幹部ユーザのみにアクセス許可されたサーバ等に通信できてしまうのです。
タグ VLAN
先程の例の通り、VLAN ID を L2 スイッチから L3 スイッチへ伝える場合、通常は VLAN の数だけ物理的に LAN ケーブルでの結線が必要になりますが、これを 1 本の LAN で実現する技術があります。タグ VLAN と呼ばれるものです。これにより、ある1つの物理ポートを、複数の仮想スイッチ間で共有することができます。
これも IEEE802.1q 規格で定められています。下図のように L3 スイッチと L2 スイッチの間で使われます。
タグ VLAN は通常の Ethernet フレームを拡張する形で、下記のフォーマットになります。
PCP (CoS)
3 bit。Priority Code Point の略。CoS (Class of Service) という呼称のほうが一般的です。
IP で言う ToS にあたるもので、L2 レベルで QoS を利用する場合に使われます。一般に、0 がベストエフォート通信、5 が音声系などの最優先通信を割り当てることが多いですが、スイッチ自体が自動で音声系通信と識別することは基本的には無く、Cisco の Policy-map などにより「どのような通信の場合に CoS 値を 3 にセットする」等と手動で設定を入れます。Cisco Phone 等の一部端末やアプリは音声 VLAN で接続する場合等で、通信生成時に CoS 値をセットすることができます。
DEI
1 bit。Drop Eligibility Indicator の略。(昔は CFI と呼ばれる、トークンリングや FDDI との相互接続用のためのビットだったが、実用性が低くなったため、DEI に置き換わりました)
1 の場合、輻輳が発生したときに優先的に廃棄することを促します。
VLAN ID
12 bit。2^12乗 = 4096 ですが、VLAN ID= 0 と 4095 は予約されて使うことができないので、4094 個の VLAN ID が利用可能です。
タイプ/長さ
Ethernet と同じ使われ方です。次に IP パケットが来る場合は Ox0800 が入ります。
コメント