他のホストをターゲットとした UPD パッケージをローカルホストにリダイレクトする方法

他のホストをターゲットとした UPD パッケージをローカルホストにリダイレクトする方法

物理 TAP デバイスを使用して、マシン A -> B から流れるポート 4500 をターゲットとした UDP パッケージをスニッフィングし、スニッフィングされたパッケージをマシン C のローカル ポートで受信したいと考えています (画像を参照)。 ここに画像の説明を入力してください

TAP デバイスについて: これは、A と B の間に配置される物理デバイスです。A と B の間のトラフィックはまったく変更されませんが、パッケージはマシン C への TAP 出力インターフェイスにも送信されます (C で受信されたパッケージは、TAP が変更を行わないため、B 宛てのままです)。

私の目標は、 のようなクライアント プログラムで、マシン C のポート 4500 を対象とするすべてのデータを受信することですnetcat

問題明らかなのは、C の NIC で受信されたパッケージは C を対象としていないため、OSi モデルのアプリケーション層に近づく前にパッケージがドロップされるということです。

すでに試したのは、nftablesパッケージをリダイレクトするために を使用することですが、どういうわけか、netcat はまだメッセージを取得しません。誰かが私が間違っている点を教えてくれたり、この問題を解決する最善の方法を提案したりしてくれませんか?

nft 'add chain nat udpredirect { type nat hook prerouting priority -101 ; policy accept ; }'
nft 'add rule ip nat PREROUTING udp dport 4500 redirect'

答え1

答えはここにあります:https://serverfault.com/a/1125704/570881

カーネルがパッケージを削除する前に、十分早い段階で netdev ファミリを使用してパッケージを変更する必要があります。

関連情報