【ルーティング②】ルーティング動作とMACアドレスの付け替え

routing-part2

ルータがルーティングする時、実際にはどんな処理がされるのかな?

チャーチルさん

ポン先生

複雑そうに見えるけど一個ずつ紐解いていけば理解できると思うよ。

前回の記事では、ネクストホップと出力先インタフェースを決めることがルーティングの重要なポイントであると説明しました。ではネクストホップが決まった後にどのようにパケットは処理されるのでしょうか?具体的な例で見ていきましょう。

ルーティングのパケット処理

この章の項目
  • L2通信とL3通信
  • MACアドレスの付け替え

L2通信とL3通信

当然ですがルーティングはL3の機能です。

  • セグメントを跨ぐ通信=L3通信(別セグ通信)
  • セグメントを跨がない通信=L2通信(同セグ通信)

となります。“ルーティング”と言うとL3としての部分に目が行きがちですが、実際の通信全体で見るとL2との組み合わせで成り立っています

区間毎の通信状況

例えば上記のような環境を考えます。PC1(192.168.1.1)→PC2(192.168.2.1)へ通信する際は以下3つの区間に分けて考えます。

  • 区間A:PC1~ルータ間(L2)
  • 区間B:ルータ内部(L3)
  • 区間C:ルータ~PC2間(L2)

特に区間A、Cの違いを見ていきましょう。

区間A:PC1~ルータ間(L2)

区間Aの通信は下記の通りです。

  • PC1はPC2へパケットを送信したい。
  • しかし各PCは別セグなので直接は送れない。
  • そのためPC1はデフォルトゲートウェイ(ルータ)に一旦パケットを投げる。
  • 区間AはIPで言うと、192.168.1.1→192.168.1.254の通信
  • これはL2通信(同セグ通信)

L2通信では、送信元/宛先の制御はMACアドレスで行います。

区間Aの通信を切り取って見ると下記のようになります。

■区間Aの状態
-MACアドレスIPアドレス
送信元aa-aa-aa-aa-aa-aa(PC1)192.168.1.1(PC1)
宛先11-11-11-11-11-11(ルータ)192.168.2.1(PC2)

宛先MACアドレスと宛先IPアドレスは一致していませんね。これは何故でしょう?

IPアドレスに関してはどの区間で切り取っても同じです。IPアドレスは最終的な目的地(ここではPC2)を示しています。なのでIPアドレスは変わりません(NATするケースなどは除く)

一方MACアドレスはL2通信で利用するアドレスです。つまりMACアドレスとは『最終的な目的地は一旦置いておき、次にどこに転送するかの道標』という位置付けになります。ここで言う次の転送先とはデフォルトゲートウェイ=ルータです。最終的な宛先はPC2(192.168.2.1)だけど、とりあえず直近はルータ(11-11-11-11-11-11)に送っている、というのが区間Aの通信状態です。

区間C:ルータ~PC2間(L2)

同様に区間Cも確認し区間Aと比較してみましょう。区間Cは下記の通りです。

  • 通信はルータ~PC2の間
  • この区間だけで見れば同セグなので直接送信できる
  • ただし送信元MACアドレスはルータになる

■区間Cの状態
-MACアドレスIPアドレス
送信元22-22-22-22-22-22(ルータ)192.168.1.1(PC1)
宛先bb-bb-bb-bb-bb-bb(PC2)192.168.2.1(PC2)

区間Cは宛先IPアドレスと宛先MACアドレスが共にPC2なので区間Aよりもイメージしやすいですね。一方、送信元MACアドレスはルータになります。逆に言うと区間C上ではPC1のIPアドレスは分かるがMACアドレス分からないという事になります。いずれにしても区間AとMACアドレス情報が異なっている事は分かるでしょう。

MACアドレスの付け替え

上記の動作からも分かるようにルータ(区間B)で実施されている処理があります。それは“MACアドレスの付け替え”です。ルータを跨ってもIPアドレスは変わりませんでんした。一方でMACアドレスは変わっています。『ルーティングする=セグメントを跨ぐ=MACアドレスが付け替えられる』と読み替える事もできますね。

ルータを超える度に下記のように新しいMACアドレスへ付け替えられます。

ルーティング時のMACアドレスへ付け替え
  • 送信元MACアドレス:ルータ(自身の送信元インタフェース)
  • 宛先MACアドレス:次の転送先(次のルータのインタフェース)
  • 送信元IPアドレス:変わらない
  • 宛先IPアドレス:変わらない
MACアドレスの付け替え

上記がルーティング時のパケットに対する処理になります。

ポン先生

一応補足で、代表としてルータで書いたけど、L3スイッチでもファイアウォールでもやることは同じだよ。機器が変わってもルーティングとしての動作は同じという事だね、ただしNATはIPアドレスの変換をする技術だからNATする場合は動作が変わるから注意だよ!

まとめ

ポイント
  • セグメントを跨ぐ通信=L3通信(別セグ通信)
  • セグメントを跨がない通信=L2通信(同セグ通信)
  • 通信はL3とL2の組み合わせ
  • 宛先IPは最終的な目的地
  • 宛先MACはとりあえずの次の転送先
  • ルータはルーティングする時にMACを付け替えている

ルーティングにおけるMACアドレスとIPアドレスの関係は知っているようで知らないかもしれません。直接PC同士を接続している絵だとIP/MACアドレス共に一致しているのでイメージ通りですが、ルーティングの場合はイメージとズレます。普段はあまり意識しないかもしれませんが、トラブルシューティング(特にパケットキャプチャ取得)時はこのあたりの関係を理解しておかないとキツイです。。特定の区間で切り取ったらどういう状態になっているかは必ずイメージできるようにしておきましょう。