Как перенаправить пакеты UPD, предназначенные для другого хоста, на локальный хост

Как перенаправить пакеты UPD, предназначенные для другого хоста, на локальный хост

Я хочу перехватывать пакеты UDP, направленные на порт 4500, поступающие с машины A -> B с помощью физического устройства TAP, и получать перехваченные пакеты на машине C через локальный порт (см. изображение). введите описание изображения здесь

Об устройстве TAP: Это физическое устройство, которое размещается между A и B. Трафик между A и B вообще не изменяется, но пакеты также отправляются на выходной интерфейс TAP на машину C (пакеты, полученные на C, по-прежнему адресованы B, поскольку TAP не вносит изменений).

Моя цель— получать все данные, которые направляются на порт 4500 на машине C в клиентских программах, таких как netcat.

ПроблемаОчевидно, что пакеты, полученные на сетевом адаптере C, не предназначены для 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 необходимо использовать для изменения пакетов достаточно рано, до того, как ядро ​​их удалит.

Связанный контент