本サイトはPRが含まれています。
ルータがルーティングする時、実際にはどんな処理がされるのかな?
チャーチルさん
ポン先生
複雑そうに見えるけど一個ずつ紐解いていけば理解できると思うよ。
前回の記事では、ネクストホップと出力先インタフェースを決めることがルーティングの重要なポイントであると説明しました。ではネクストホップが決まった後にどのようにパケットは処理されるのでしょうか?具体的な例で見ていきましょう。
HAL校長
目次
ルーティングのパケット処理
- 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アドレス:次の転送先(次のルータのインタフェース)
- 送信元IPアドレス:変わらない
- 宛先IPアドレス:変わらない
上記がルーティング時のパケットに対する処理になります。
ポン先生
一応補足で、代表としてルータで書いたけど、L3スイッチでもファイアウォールでもやることは同じだよ。機器が変わってもルーティングとしての動作は同じという事だね、ただしNATはIPアドレスの変換をする技術だからNATする場合は動作が変わるから注意だよ!
ネットワークエンジニアを目指すならCCNAを取得しよう!
CCNAとはCisco社のメーカ認定資格です。CCNAの取得はネットワークエンジニアの基本的な知識やCisco製品の理解の証明になります。
特定メーカの資格で役に立つの?実際には他メーカの機種も扱うんじゃないの?
チャーチルさん
ポン先生
確かに業務上Cisco以外の機器を扱うことはあるだろうけど、最初にCiscoを勉強しておくと他の機器も理解しやすくなるんだ。
Ciscoは数あるネットワーク機器メーカの内の1社ですがディファクトスタンダードと言われています。つまり業界標準として位置付けられており、他メーカ機種でもCiscoのコマンドライン等を参考にしている事が多いです。そのため初見の機器でもCiscoと設定方法が似ており、「大体は分かる」なんてケースも多々あります。ネットワークエンジニアとしてはCiscoの学習はむしろ必須と言えるレベルでしょう。
また、Ciscoの資格と言っても独自仕様や製品の話だけでなく、ネットワークの一般的な知識も必要です。Cisco製品と言えベースはネットワークの標準規格に基づいて設計されており、CCNA取得でネットワークの一般的な知識も習得可能です。
上記理由からCCNAは非常におすすめの資格です。ネットワークエンジニアとして本格的に活躍したいのであれば是非チェックすべきでしょう。
【CCNAとは】難しい?勉強は?Cisco資格の登竜門 基本解説
まとめ
- セグメントを跨ぐ通信=L3通信(別セグ通信)
- セグメントを跨がない通信=L2通信(同セグ通信)
- 通信はL3とL2の組み合わせ
- 宛先IPは最終的な目的地
- 宛先MACはとりあえずの次の転送先
- ルータはルーティングする時にMACを付け替えている
ルーティングにおけるMACアドレスとIPアドレスの関係は知っているようで知らないかもしれません。直接PC同士を接続している絵だとIP/MACアドレス共に一致しているのでイメージ通りですが、ルーティングの場合はイメージとズレます。普段はあまり意識しないかもしれませんが、トラブルシューティング(特にパケットキャプチャ取得)時はこのあたりの関係を理解しておかないとキツイです。。特定の区間で切り取ったらどういう状態になっているかは必ずイメージできるようにしておきましょう。