Я получаю трафик с зеркального порта и хочу отправить его в 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
...