LINUX.ORG.RU

Принять все пакеты и передать с другого интерфейса

 ,


1

3

Есть следующая задача:

Надо принять все пакеты (юникасты, мультикасты, ...) с eth0 и передать их через eth1.

Пытаюсь использовать raw socket для eth0, но он выдаёт не только принятые, но и отправленные пакеты.

Подскажите, как это можно сделать?

Можно ли решить задачу через iptables?

Есть ли иные способы?

Сразу скажу, что мост (это который через brctl) не подходит — он не пропускает нужные мультикасты.


Пытаюсь использовать raw socket для eth0, но он выдаёт не только принятые, но и отправленные пакеты.

ну так можно их отфильтровать

Harald ★★★★★
()
Ответ на: комментарий от Harald

ну так можно их отфильтровать

Как?

ioctl
() автор топика
Ответ на: комментарий от beastie

для этого есть multicast proxy.

Я во что-то подобное писал в /sys — не помогло.

ioctl
() автор топика

Пытаюсь использовать raw socket для eth0, но он выдаёт не только принятые, но и отправленные пакеты

Захватывать можно не сырыми сокетами, а с помощью libpcap например. Тогда можно отфильтровать BPF только входящие пакеты.

Если нужно решить задачу програмно, то вариантов захвата пакетов довольно много - Linux-специфичные NFQUEUE, NFLOG; более специализированные (они же могут и инъектировать в сеть) netmap и DPDK

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.