私の本番環境でtcpdump
UDP専用ファイルを使用して作成しています。pcap
次に、ツールを使用してtcprewrite
UDPパケットのdst IPとMACアドレスをvm2に更新し、src IPをvm1に更新しましたが、src MACアドレスは00:00:00:00:00:00
。チェックサムを再計算します。
その後、vm1でファイルを作成してtcpreplay
vm2を確認し、vm2は実際にUDPパケットを受信しましたが、src MACがネットワークゲートウェイのMACに更新されたことを確認しました。pcap
tcpdump
PS:私が使ったユンユン、vm1、vm2 は次の場所にあります。同じサブネット。
|-----| |-----|
| vm1 | ---|gw|----| vm2 |
|-----| |-----|
その後、tcpdump
vm1で実行するとUDPパケットがMACアドレスに送信されるため、ルータ00:00:00:00:00:00
(ゲートウェイ)はそれを受け入れ(「間違っている」にもかかわらず)、MACを更新してvm2に転送します。
だから私にIPアドレスとパケットチェックサムが良いなら、MACアドレスは重要ではありません。それ以外の場合、ルータはなぜMACアドレスを削除しないのですか?
答え1
vm1-gw接続にvm2-gwとは異なるIPネットワークがあることを正しく理解していますか?
その場合、ゲートウェイはL3ルーターのように動作します。 MACアドレスは、レイヤ2にのみバインドされる値で、パケットがルータを通過するときは常に失われます。説明したMACアドレスを変更するのは通常の動作です。ルータは両方のインターフェイスで異なるブロードキャストドメインを持ちます。 MACアドレスは、L2レイヤ値(つまりMACアドレス(ARPを除く))が通信に十分なブロードキャストドメイン内でのみ一定に保たれます。 ARPプロトコルは、ブロードキャストドメインのノードがIPアドレスを使用して互いのMACアドレスを見つけるのに役立ち、ノード間の接続はMACを介してのみ行われます。
ゲートウェイをファイアウォールとして使用して異なるIPネットワーク間の接続をフィルタリングするには、MACではなくIPアドレスを使用する必要があります。
他の目的がある場合は、質問を明確にしてください。