So leiten Sie UPD-Pakete, die für andere Hosts bestimmt sind, auf den lokalen Host um

So leiten Sie UPD-Pakete, die für andere Hosts bestimmt sind, auf den lokalen Host um

Ich möchte mit einem physischen TAP-Gerät UDP-Pakete abfangen, die auf Port 4500 abzielen und von Maschine A -> B fließen, und die abgefangenen Pakete auf Maschine C auf einem lokalen Port empfangen (siehe Abbildung). Bildbeschreibung hier eingeben

Über das TAP-Gerät: Dies ist ein physisches Gerät, das zwischen A und B platziert wird. Der Datenverkehr zwischen A und B wird überhaupt nicht geändert, aber die Pakete werden auch an die TAP-Ausgabeschnittstelle zu Maschine C gesendet (auf C empfangene Pakete sind immer noch an B adressiert, da der TAP keine Änderungen vornimmt).

Mein Zieldient zum Empfangen aller Daten, die in Client-Programmen wie an Port 4500 auf Maschine C gerichtet sind netcat.

Das Problemoffensichtlich ist, dass Pakete, die an der Netzwerkkarte von C empfangen werden, nicht für C bestimmt sind und daher gelöscht werden, bevor sie auch nur in die Nähe der Anwendungsschichten des OSi-Modells gelangen.

Ich habe bereits versucht, nftablesPakete umzuleiten, aber irgendwie bekommt mein Netcat trotzdem keine Nachrichten. Kann mir jemand sagen, was ich falsch mache, oder mir einen Vorschlag machen, wie ich das am besten lösen kann?

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

Antwort1

Die Antwort ist hier:https://serverfault.com/a/1125704/570881

Die Netdev-Familie muss verwendet werden, um Pakete bereits früh genug zu ändern, bevor der Kernel sie verwirft.

verwandte Informationen