Доброго времени суток, уважаемые дамы и господа.
Ситуация следующая:
Существует сетевое оборудование на котором настроен SPAN и весь трафик зеркалируеться на linux машину.
Интерфейс на который приходит трафик в linux:
eth1: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 58981866 bytes 37730632432 (35.1 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 78 bytes 5548 (5.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Задача собственно следующая - с помощью iptables -m match-set myset из утилитки ipset найти в этом трафике который приходит на интерфейс пакеты в которых айпи-источник или айпи-назначение совпадет с одним из ip адресов которые находяться в ipset list.
Так как в даной конфигурации iptables не видит трафик который приходит на интерфейс было принято решение совершить следующие настройки.
auto br0
iface br0 inet manual
up ifconfig eth1 promisc up
bridge_ports eth1
bridge_fd 0
bridge_maxwait 0
bridge_stp off
bridge_ageing 0
echo "0" > /sys/class/net/br0/bridge/ageing_time
echo br_netfilter >> /etc/modules
С настройками выше bridge0 должен работать c netfilter.
Во всех таблицах и цепочках iptables есть записи like this:
*filter
-A INPUT -m set --match-set mylist dst -j LOGGING
-A INPUT -m set --match-set mylist src -j LOGGING
-A FORWARD -m set --match-set mylist dst -j LOGGING
-A FORWARD -m set --match-set mylist src -j LOGGING
-A OUTPUT -m set --match-set mylist dst -j LOGGING
-A OUTPUT -m set --match-set mylist src -j LOGGING
*nat
-A PREROUTING -m set --match-set mylist dst -j LOGGING
-A PREROUTING -m set --match-set mylist src -j LOGGING
-A INPUT -m set --match-set mylist dst -j LOGGING
-A INPUT -m set --match-set mylist src -j LOGGING
-A OUTPUT -m set --match-set mylist dst -j LOGGING
-A OUTPUT -m set --match-set mylist src -j LOGGING
-A POSTROUTING -m set --match-set mylist dst -j LOGGING
-A POSTROUTING -m set --match-set mylist src -j LOGGING
Спасибо вам большое!