腑に落ちなかったこと
ネットワークを学んでいて、ずっと引っかかっていることがあった。
「同じサブネット内のホストは直接通信できる。異なるサブネットへはルータを経由する。」
具体的にどこでこの制約が生まれているのか、なぜサブネットが同じだと直接通信できるのか。
また、VLANを調べると「ネットワークを論理的に分割する技術」と書いてある。だがどうしても腑に落ちない。
VLANが実際にネットワークを分割しているのか?調べてみるとそうではない。ではVLANは実際何を分割しているんだ?
色々と考えて原因がわかった。ネットに上がっている説明や本の説明の多くが、ブロードキャストドメイン(L2)の話とIPアドレス(L3)の話をごっちゃにしているのである。この2つを分けて整理したら、サブネットもVLANもすっきり理解できた。
「直接通信できる」とは?
まずとっかかりとして、「直接通信できる」とは何かを説明する。
直接通信するとは、相手に直接フレームを届けることである。直接フレームを届けるには相手のMACアドレスを知る必要がある。
では相手のMACアドレスをどうやって知るかというと、ARPというプロトコルが用意されている。例えば192.168.1.1のMACアドレスを知りたい場合、ARPは「192.168.1.1のMACアドレスを教えてくれ」というリクエストを、ネットワーク上の全ホストに一斉送信する。この一斉送信をブロードキャストと言い、ブロードキャストが届く範囲がブロードキャストドメインと言う。
このとき、ARPは対象IPアドレスが同じサブネットかどうかの判定などはしないので、サブネットがなんであれブロードキャストで問い合わせることになる。
つまり、直接通信するためには、相手がARPが届く範囲、つまり同じブロードキャストドメインにいさえすればいいのである。
直接通信できる
= ARPで相手のMACアドレスを得られる
= ARPブロードキャストが届く
= 同じブロードキャストドメインにいる
「直接通信できる」と「同じブロードキャストドメインにいる」は同義である。ではブロードキャストドメインは何によって決まるのか。
ブロードキャストドメインとは何か
ブロードキャストドメインとは、ブロードキャストフレームが届く範囲のことである。この範囲を区切っているのがルータである。
スイッチはブロードキャストフレームを受け取ると全ポートに転送する(フラッディング)。一方、ルータはブロードキャストフレームを別のネットワークへ転送しない。ルータの役割はIPパケットの宛先を見て適切なインターフェースに転送することであり、宛先MACがff:ff:ff:ff:ff:ffのフレームをそのまま中継する機能は持たない。
| 機器 | ブロードキャストの扱い |
|---|---|
| スイッチ(L2) | 全ポートに転送 |
| ルータ(L3) | 別ネットワークへ転送しない |
つまり、ブロードキャストドメインの境界はルータが作る。

ここまでをまとめると、直接通信できる=ARPが届く=同じブロードキャストドメインにいる。そしてブロードキャストドメインの境界はルータが作るのである。
繰り返すが、原理的にはIPのサブネットがなんであれ、同じブロードキャストドメインに属していれば直接通信が可能なのである。
サブネットをブロードキャストドメインに合わせる
さて、ここまでのL2の話とは別に、IPにはIPのルールがある。
IPアドレスにはネットワーク部とホスト部がある。すべてのホストを個別に管理するのではなく、ネットワーク部でグループ化することで、ルータは「ネットワーク部だけ見て転送先を判断する」ことができる。ルーティングを効率化するための階層化である。
郵便に例えると、配達員が全世帯の住所を個別に覚えるのではなく、「東京都千代田区」まで見て配送先の局を決め、局内で番地を見て届ける。ネットワーク部が都道府県・市区町村、ホスト部が番地にあたる。
ネットワーク部が同じホストの集まりがサブネットである。ネットワーク設計では、サブネットをブロードキャストドメインに対応させる。こうすることで、L2で直接通信できる範囲とIPの体系(同じネットワーク=同じグループ)が一致する。

ここで冒頭の話に戻るが、「同じサブネット内のホストは直接通信できる。異なるサブネットへはルータを経由する。」というIPのルールはどのように守られているのか。
実際にIPのルールを守っているのがOSである。OSは通信相手のIPアドレスを見て、「同じサブネットならARPで直接」「別のサブネットならデフォルトゲートウェイへ」と振り分ける。この振り分けを行っているのがOSのルーティングテーブルである。
$ ip route
192.168.1.0/24 dev eth0 proto kernel scope link # 同じサブネット → 直接通信
default via 192.168.1.1 dev eth0 # それ以外 → ゲートウェイ(192.168.1.1)へ
| 概念 | 決めているもの |
|---|---|
| ブロードキャストドメイン | ルータの配置 |
| サブネットの振り分け | ルーティングテーブル |
ただし、これはあくまでOSが守っているIPのルールに過ぎない。ルーティングテーブルを書き換えれば、異なるサブネットでも直接通信が可能になる。
# 192.168.1.1 のホストから 192.168.2.0/24 に直接通信する
ip route add 192.168.2.0/24 dev eth0
同じブロードキャストドメインにいるのだからARPは届く。ARPが届けばMACアドレスが分かる。サブネットの境界は、OSが守っている紳士協定なのである。
VLANはブロードキャストドメインをさらに分割する
ルータが作ったブロードキャストドメインの中を、さらに分割したい場合がある。例えば、1台のスイッチに営業部と開発部が繋がっているが、ブロードキャストを互いに届けたくない。しかしスイッチを物理的に分けたくはない。ここで登場するのがVLANである。
VLANは、スイッチ上でポートにタグ(VLAN ID)を割り当て、ブロードキャストドメインを分割する。VLAN 10のポートから送られたブロードキャストは、VLAN 10のポートにしか届かない。これはスイッチが行うL2レベルの制御である。
ここで冒頭の疑問に戻る。VLANがやっているのはブロードキャストドメインの分割だけである。VLANはIPアドレスを知らない。知っているのはポートに付けたタグ番号だけである。
「VLAN 10 = 192.168.10.0/24」にするのは、前章で説明したのと同じ構図で、分割されたブロードキャストドメインにサブネットを合わせる人間の設計である。

教科書の「VLANはネットワークを論理的に分割する」が腑に落ちなかったのは、このL2の話とIPの話が区別されていなかったからだった。
まとめ
正常なネットワーク設計では、1つのブロードキャストドメインに1つのサブネットを対応させる。
理由は単純で、サブネットがブロードキャストドメインからはみ出していたら、同じサブネットなのにARPが届かないホストが発生する。直接通信できるはずなのにできず、設計が破綻する。
だから順序はこうなる。
- ルータとVLANでブロードキャストドメインを決める(L2の構成)
- 各ブロードキャストドメインにサブネットを割り当てる(OSとIPアドレスの設計)
L2の構成が先にあり、それに合わせてサブネットを設計するのである。
| 概念 | 何が決めているか | 役割 |
|---|---|---|
| ブロードキャストドメイン | ルータ・VLANの配置(L2) | 直接通信できる範囲を区切る |
| サブネット | 人間の設計 + OSのルーティングテーブル | ブロードキャストドメインにIPアドレス体系を対応させる |
この2つを分けて考えれば、サブネットもVLANも腑に落ちる。ごっちゃにしているから分からなかったのである。

コメント