web-dev-qa-db-ja.com

IPパケットフローを理解しようとしています

そのため、パケットが1つのマシンから別のマシンにどのように移動するかを理解するのに苦労しています。以下に、コンピューター1がコンピューター2に接続しようとしている例を示します。

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

Router 2  
IP: 192.168.2.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

Computer 2   
IP: 192.168.2.1  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.12  
MAC: 00:00:00:00:00:dd

コンピューター1からコンピューター2に接続し、パケットのフローをたどった場合、情報がルーター2から送信する送信元アドレスは192.168.1.2になり、送信元MACアドレスは00:00:00:00:00になると思います。 :cc。私の理解では、宛先は同じままですが、ソースはパスを通過するときに更新されます。これは正しいですか、それとも私が見逃しているものですか?

2
Joey

ふぅ。これは、シナリオを考えると少し注意が必要です。

まず、ルーター2は、クライアント側のインターフェイス上にあるルーター1とインターフェイスを共有しないでください。

あなたの例では、4つのデバイスすべてが同じLANセグメントを共有していますが、これは別として、192.168.x.yファミリのルーティング不可能な(「インターネット」全体の)IPアドレス範囲にあります。

より良い方法は、次のように考えることです。

Computer 1
IP: 192.168.1.100
Subnet: 255.255.255.0
Default Gateway: 192.168.1.1
MAC: 03:00:00:00:00:11

Router 1
IP: 192.168.1.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:22
IP: 192.168.12.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:33

Router 2
IP: 192.168.12.2
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:44
IP: 192.168.2.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:55

Computer 2
IP: 192.168.2.200
Subnet: 255.255.255.0
Default Gateway: 192.168.2.1
MAC: 03:00:00:00:00:66

MACのリードが03の16進文字であるという事実は無視してください。これは、ネットワークスノッブの正確さのためだけです。 [編集]ローカルに割り当てられ、グローバルに一意になるように、0x03に修正する必要がありました。

つまり、ここで起こっていることは次のとおりです。コンピューター1からのケーブルがルーター1に接続されています。これら2つは192.168.1.xネットワークを共有しています。ルーター1からルーター2へのケーブルがあります。これらは192.168.12.xネットワークを共有します。ルーター2からコンピューター2へのケーブルがあります。これらは192.168.2.xネットワークを共有します。

元の記事では、4つのデバイスすべてが機能するために同じスイッチに接続されている必要がありました...そのような場合、コンピューター1はコンピューター2と直接通信していました。注:あなたのためにそこにあるネットワークウィザードは、静的ルーティングを実行して元のネットワーク構成を強制的に機能させることができることを知っていますが、それはこのユーザーが求めていることではありません。

次に、特定の質問に移ります。

あなたは半分正しいです。コンピューター2が参照するMACアドレスは、ルーター2のMACアドレスです。私の例では、MAC 03:00:00:00:00:55になります。ただし、表示されるIPアドレスはコンピューター1のものです。これにより、コンピューター2はコンピューター1に応答できます。IPアドレスは、理論的には「普遍的に一意」です。

知識の意図のレベルを考慮して、ネットワークが機能する方法は、レイヤー2(データリンク/ MACレイヤー-すべてのイーサネット/ IPv4環境)アドレスがHOPごとに変更されることです。 PER HOPは、「任意のレイヤー3処理デバイスを通過する」と定義されています。ルーターとコンピューターは、ほとんどの場合、レイヤー3を処理します。スイッチはレイヤー3を処理できますが、そのままにしておく傾向があります。

したがって、メッセージがコンピューター1からコンピューター2に送信されると、フローは次のようになります。

AT HOP1-コンピューター1とルーター1の間

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:11 (Computer 1)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:22 (Router 1 - Interface facing Computer 1)

AT HOP2-ルーター間

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:33 (Router 1 - Interface facing Router 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:44 (Router 2 - Interface facing Router 1)

AT HOP3-ルーター2とコンピューター2の間

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:55 (Router 2 - Interface facing Computer 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:66 (Computer 2)

ご覧のとおり、IPアドレスレイヤー(レイヤー3)アドレスは通信全体で同じままですが、データリンクレイヤー(レイヤー2)アドレスは、レイヤー3アドレスを処理する別のデバイスが関与するたびに変更されます。

これがお役に立てば幸いです。それでも混乱する場合は、遠慮なくメッセージを返信してください。難しいと感じている特定のサブセットについて説明します。

1
Nick

あなたの例には欠陥があります。 (私はあなたがそれを編集するのを見ました、それはまだ欠陥があります。)

あなたの例では、ルーター1と2は同じサブネット上にあります(つまり、それらは同じサブネットマスクを持っています)。したがって、コンピューター1はデフォルトゲートウェイから何も送信せず、単にパケットをNICからスローし、スイッチまたはメディアがコンピューター2に到達することを期待します。 。

ここで、ルーター2とコンピューター2を次のように変更すると、次のようになります。

Router 2
IP: 192.168.2.2

そして

Computer 2
IP: 192.168.2.12

[太字で示されているニックネームで編集]すると、ルーター2とコンピューター2がオンになります(独自の個別のサブネット、NOT:)個別のサブネット、そして例はより意味をなすようになります。

ただし、ここで想定している図を提供しなかったため、トラフィックをこのように移動させたいと考えています。

コンピューター1 <->ルーター1 <->ルーター2 <->コンピューター2

これが機能するために、ルーター1とルーター2を同じサブネット上に置くことはできません。実際には、それらの間に3番目のネットワークがあり、トラフィックを交換します。 (デフォルトルートがプライベートネットワークを参照するのも少し奇妙です。通常は「インターネット」を意味しますが、確かに可能です。)

これがあなたがやろうとしていると私が推測していることです、私は写真の粗雑さをお詫びします: enter image description here

MACアドレスはルーターを超えて伝播しません。コンピューター1はコンピューター2にパケットを送信しようとしています。コンピューター2は同じサブネット上にないため、コンピューター1はそれをデフォルトゲートウェイに送信します。

これは、最終的にコンピュータ1のMACからルータ1のMACに送信されるフレームになります。

ルーターはパケットを転送し、転送とは別のインターフェースからコピーすることを意味します。したがって、ルーター1は、コンピューター1から取得したパケットの宛先がコンピューター2宛てであることを確認します(このような状況では、静的ルートでプログラムするか、RIP/OSPFなどのプロトコルを使用する必要があります。 。)

したがって、IPパケットには、ルーター1の2番目のNIC)の送信元MACとルーター2の最初のNICの宛先MACが含まれます。これは、コンピューター2に到達するまで続きます。

1
LawrenceC

MACアドレスはホップごとに変わるという点で、あなたは半分正しいですが、NAT/PATテクノロジがインラインにあるか、アプリケーションプロキシが使用されていない限り、接続のIPアドレスは変わりません。

私はcomputer2のアドレスは1.12ではなく192.168.2.12のようなものであるべきだと信じています。これは、パケットがrouter2をまったく通過しないことを意味します。私はあなたが次のような何かを探していると信じています:

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
LAN IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

WAN IP: 192.168.3.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:b1  

Router 2  
LAN IP: 192.168.2.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

WAN IP: 192.168.3.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:c1 

Computer 2   
IP: 192.168.2.12  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.2  
MAC: 00:00:00:00:00:dd

したがって、3つのネットワークがあります。LANcomputer1は(.1.X)にあり、2つのルーター間のネットワーク(.3.X)、およびcomputer2がオンになっているLAN(.2.X)です。

MACアドレスはフレームをアドレス指定するためのものであるため、各LANの実装に関連付けられています。 Macアドレス:: aaを使用して、Computer1とRouter1が接続されているネットワークを介してフレームを送信できますが、このLAN上の:: ddにフレームを送信しようとすると、宛先に到達しません。したがって、MACアドレスは、そのMACを備えたデバイスを搭載するネットワークでのみ有効です。

ただし、IPアドレスはネットワーク間を通過するように作成されているため、一定のままです。パケットはルーターを通過するたびに新しいフレームに再カプセル化されますが、IPパケット自体は変更されません。これは重要です。シナリオのComputer2が192.168.1.1からMAC :: ccでパケットを受信した場合、それがルーターから送信されたものではないことを知る方法がなく、computer2が応答したときに、router2が認識できないためです。誰に応答しているのか。

したがって、computer2が受信するパケットの送信元IPは192.168.1.11ですが、MACアドレスは:: ccです。

NAT/PATは、送信元/宛先の決定を行うためにより多くの情報が必要であるという点で、これをもう少し混乱させます。したがって、実際のホームルーターを使用したシナリオはもう少し完成していることを忘れないでください。

0
Frank Thomas

ルーターがNAT(ネットワークアドレス変換。送信元アドレスと宛先アドレスはネットワーク上の各ポイントで同じままです。2つのホスト間にルーターが1つしかない場合、MACアドレスはこの場合も同じ動作を期待します。

arpプログラムは、予想されるMacアドレスを表示します。各コンピューターでコマンドarp -an(またはWindowsではarp -aを実行します。これにより、すべての既知のローカルデバイスとそのMACアドレスが表示されます。リモートデバイスのトラフィックはゲートウェイのMACアドレスにルーティングされます。

2つのルーター間のルートがインターネット経由の場合、ルーターはNATになります。各コンピューターの送信元アドレスは、反対側のルーターのインターネットIPアドレス、およびローカルルーターのMACアドレスになります。この場合、リストされているアドレスを使用してコンピューター間の接続を開くことはできません。もう一方の端にあるルーターのインターネットIPアドレスに接続する必要があり、目的のコンピューターのアドレスをNATする必要があります。

接続が確立されている場合(sshは正常に機能します)、netstat -natコマンド(またはWindowsではnetstatコマンド)を使用してすべての接続を一覧表示できます。リストをフィルタリングまたはスキャンして、接続のアドレスを見つけることができます。 Linuxでsshを使用している場合、コマンドwho am iは、接続元のリモートアドレスを一覧表示します。

0
BillThor

痛い。ルーターのIPは1つだけではありません。ウェンデル・オドムによる「ネットワーキングの最初のステップ」を提案します。

「私の理解では、宛先は同じままですが、ソースはパスを通過するときに更新されます」と記述します。

あなたが何について話しているのかは明確ではありません。あなたはあまり書いていませんし、あなたが書いた小さなことは曖昧です。あなたがはっきりと書くことができないなら、あなたははっきりと理解するつもりはありません。

「ソース」「宛先」とだけ言うのではありません。送信元IPアドレスまたは送信元MACアドレスまたは宛先IPアドレスまたは宛先MACアドレスを意味する場合は具体的に言います。

ソースIPと宛先IPは同じままです。 (NATまたは非常に珍しいものがあり、それがない場合を除く)

MACアドレス(送信元と宛先)は変更できます。ルーターはMACアドレスを書き換えます。ルーターは実際には正しく設定されていませんが。ルーターに複数のNICがあり、それぞれが独自のサブネット上に独自のIPを持っている方法については、ultraの写真を参照してください。

0
barlop