VLAN基礎まとめ -その1-


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

こんにちは、きおかです。

最近ネスペの勉強をしていまして、CiscoのPacket Tracerで実際にコマンドを打って色々試しています。

その中で、VLANと戦い続ける日々を送っています笑。
実戦形式の講義動画やブログを読むと、コマンドが書いてあってそれをSWに流し込めば実装できることが多いです。
ただこれだとなぜそのコマンドをたたいているのかわかりませんでした。

例えば、「VLANの設定方法」みたいな記事だと、以下のようなコマンドと説明だけ載っているものが大半です。

SW(config)#vlan 10
SW(config)#int fa 0/1
!
! FastEthernet 0/1のモードをアクセスに切り替える
SW(config-if)#switchport mode access
!
! FastEthernet 0/1にvlan 10を割り当てる
SW(config-if)#switchport access vlan 10

これではswitchportとかmodeが何とかがわかりませんでした。

なので備忘録の意味も込めてここに残しておこうと思います。

switchportとは

文字通り、スイッチのポートです。L2層のポート、RFC的にはデータリンク層のポートです。
L2なのでIPアドレスの割り当てはできません。
ちなみに#no switchportとインターフェースモードで打てば、そのポートはL3のポートとなり、IPアドレスを割り当てることができるようになります。

vlanにはIPアドレスを割り当てられる?

誤解を恐れずに言えば、掲題の答えは「vlanにはIPアドレスは割り当てられない」です。
vlanに割り当てている(ように見える)IPアドレスは、vlanに割り当てているのではなくSVI(Switch Virtual Interface)に割り当てています(デフォルトだと名前が一緒になるので混同しがちです)。これはスイッチ内部でvlan同士がL3通信(すなわちルーティング)するためのインターフェース(あくまでインターフェースであってルーティング機能そのものではない)です。

SVIにIPアドレスを割り当てると、VLAN間通信できる?

答えは「できない」です。
SVIにIPアドレスを割り当てたうえで、特権モードで#ip routingを打つことでL3スイッチのルーティング機能を有効化することができます。
L3SWのルーティング機能を有効化すると、SVIを認識してSVIのIPアドレスでルーティングを開始するわけですね。

vlanって結局何?

ごちゃごちゃになりがちですが、VLANはあくまで物理ポートの論理的分断(ブロードキャスト範囲の分離)です。

例えばFa 0/1, 2, 3, 4, 5がvlan 10で、Fa 0/6, 7, 8, 9, 10がvlan 20に割り当てられていたとします。このとき、各ポートにFa 0/1, 2, 3, 4, 5に接続されているノード同士は(同じNWアドレスを持つ場合)pingを飛ばし合うことができます。これは、L2通信が論理的に接続されているからです。より具体的には、L2ブロードキャストの範囲が同じだからです。L2ブロードキャスト範囲が同じということはその範囲内でARP解決をすることができ、ARP解決をすることができるということはイーサネットフレームヘッダとIPヘッダを埋めることができ、適切なパケットを作成して送ることができ、返す側も同様に適切なパケットを送り返すことができるということです。

SVIにIPアドレスを割り当てた場合で、ルーティング機能は無効化されているとき、異なるvlanにいるノード同士は通信できる?

先に答えをいうと「できない」です。

仮にvlan 10(のSVI)に192.168.1.0/24を割り当て、vlan 20(のSVI)に192.168.2.0/24を割り当てたとします。
このとき、ルーティング機能は無効化されているとします。

そこで、vlan 10のノードが192.168.2.10にpingを飛ばしたいとします。届くでしょうか?

繰り返しになりますが、答えは「届かない」です。
理由はいくつかの表現が可能です。「L2ブロードキャスト範囲が異なるから」とか「ARP解決ができないから」とか、組み合わせて、「ARPブロードキャストの範囲が異なり、ARP解決ができないから」とか、「ARP解決ができずデフォルトゲートウェイへのパケット送信ができないから」など、色々な考慮すべき点に注目すると様々な表現で理由を述べることができそうです。

ARPって何してるの?

ARPはIPアドレスを元にMACアドレスを探すことです。
具体的な処理でいうと、宛先IPアドレスと送信元IPアドレスそれぞれのNWアドレスを計算で割り出し、同一であればL2ブロードキャストを実行し、異なればデフォルトゲートウェイのMACアドレスを入れて、イーサネットフレームのタイプを0x0806(ARPプロトコルを指す番号)にして送り出します。デフォルトゲートウェイのMACアドレスがわからない場合はデフォルトゲートウェイのIP宛てにARPを行って、再度元々届けたかった宛先IPに対して再度ARPを行います。

なんでARPをするの?

「通信をするため」です。
大抵の通信で使われるイーサネットでは、MACアドレスがないと通信できません(例外というか代替手段はあると思います)。IPアドレスがわかっていても、MACアドレスがわからないとパケットはロスします。なんで?っていうと難しいですが、互いにある程度知っている者同士じゃないと通信しないというようなセキュリティ的な背景があるのだと憶測しています。例え隣人であっても気軽に話をしない、あいさつ程度で済ますとか、何ならプライベート情報の価値が高まる昨今では特別なことがない限り挨拶もしないという人も増えてるんじゃないでしょうか?そんな感じだと思ってます。

さいごに

一旦ここまでで区切ろうと思います。
次回はアクセスポートとトランクポートの違いについて、また、その使い時についてまとめてみたいと思います。

それではまた!

Last modified: 2023-12-22

Author