Назад | Перейти на главную страницу

Фильтрация трафика зеркального порта с помощью iptables

Я получаю трафик с зеркального порта и хочу отправить его в NFQUEUE для обработки. Из-за зеркального порта MAC-адреса назначения пакетов не являются MAC-адресами моего хоста. Поэтому трафик никогда не достигает моего NFQUEUE. (если я беру один пакет и использую Scapy для ручной замены MAC-адреса назначения на MAC-адрес моего хоста, он работает)

Он не работает с зеркальным портом даже с правилами iptable, которые применяются как можно скорее в конвейере фильтрации:

iptables -A PREROUTING -t raw -j NFQUEUE --queue-num 1

Как упоминалось в некоторых других потоках, я попытался создать мост на своем интерфейсе и отфильтровать трафик с помощью следующих команд.

tunctl -u root
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 tap0
brctl setfd br0 0
brctl stp br0 off  
ifconfig br0 up
ifconfig eth0 up 0.0.0.0
ifconfig tap0 up 0.0.0.0
echo 0 > /sys/class/net/br0/bridge/ageing_time
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
iptables -F
iptables -A FORWARD -j NFQUEUE --queue-num 1

Но даже это решение не решает мою проблему. Движение не проходит по мосту из-за мост-NF-call-iptables директива. Однако я не могу получить пакеты в очереди.

Кстати, у меня версия ядра 3.13.0-32.

Я ищу любое решение, которое позволяет поместить полученный пакет со случайным MAC-адресом в мой NFQUEUE.

Спасибо за вашу помощь, Жюльен

Ваше ядро ​​игнорирует пакеты, которые не адресованы локальным сетевым интерфейсам. Вам следует изменить eth0 на неразборчивый режим:

ip link set dev eth0 promisc on

Вы можете сделать это постоянным через конфигурацию сети:

Debian

auto eth0
iface eth0 inet manual
    up ifconfig eth0 promisc up
    down ifconfig eth0 promisc down

Красная Шапка

BOOTPROTO=static
DEVICE=eth0
TYPE=Ethernet
PROMISC=yes
...