LINUX.ORG.RU
ФорумAdmin

iptables analyze span traffic

 , , , ,


0

1

Доброго времени суток, уважаемые дамы и господа.

Ситуация следующая:

Существует сетевое оборудование на котором настроен 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
Собственно вопрос, в какую таблицу - цепь должен попадать трафик из eth1 который приходит из spana и идет в бридж. Собственно почему он не попадает туда, так как tcpdump делаю по br0 и вижу пакеты в которых есть айпишник существующий в mylist. И, может, есть готовое решение которое будет собирать трафик с интерфейса - проверять пакеты и логировать мне только те, которые мне интересны.

Спасибо вам большое!


Попробуй убрать бридж и просто сделай ifconfig eth1 promisc. Потом смотри, попадает трафик в цепочки, или нет

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

Спасибо большое за ответ.

Так я уже пробовал, трафик не падает в цепочки. Поэтому бридж и поднимал.

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

в filter/FORWARD точно попадает

в mangle/PREROUTING точно попадает

Только нужно не забыть, что все это работает только при включенном net.bridge.bridge-nf-call-iptables ( и при необходимести net.bridge.bridge-nf-filter-vlan-tagged)

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

*filter

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

*mangle

-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
Добавил после вашего ответа, буду мониторить, спасибо

rom100
() автор топика
Ответ на: комментарий от vel
net.bridge.bridge-nf-call-iptables=1

Тем не менее, пакетов в цепи forward таблицы filter я не вижу. Форвардинг пакетов в ядре также включен.

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

Там есть ещё куча загадочных фильтров, где-то в /proc/sys/net/ipv4/conf/*. Попробуй, log_martians, rp_filter ну и вообще порыться по .../net/ (гугель сломался, точнее не могу).

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

Ничего не должно препятствовать получению таких пакетов фаерволом, проверил. Но увы - счетчики показывают ноль.

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

Ничего не должно препятствовать

Ядрёные писаки могут думать иначе.

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

а у тебя в мосте есть что-нибудь кроме eth1 ?

Для форвардинга нужен еще девайс

Я обычно делал так ifconfig dummy0 up && brctl addif br0 dummy0

а net.bridge.bridge-nf-filter-vlan-tagged ? rspan обычно в vlan загоняет трафик.

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

Спасибо за ответ. Там не rspan, просто span

bridge name	bridge id		STP enabled	interfaces
br0		8000.74da389c7cef	no		enp5s1
							eth2
в этом же бридже
auto eth2
allow-hotplug eth2
    iface eth2 inet manual
    pre-up ip tuntap add eth2 mode tap user root
    up ip link set dev eth2 up
    up ifconfig eth2 promisc up
...
...
    bridge_ports eth1 eth2

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

Ну не знаю, проверяй все с начала.

Правила из NAT надо удалить. Оставь по одному правилу в mangle и filter

iptables -I FORWARD 1 -i br0
iptables -t mangle -I FORWARD 1 -i br0
Убедись, что после подъема моста интерфейс с входящим трафиком в promisc.

sysctl

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-filter-vlan-tagged = 1

у меня есть еще одна интересная строка

echo 1 >/sys/class/net/br0/bridge/nf_call_iptables
Он она у меня сейчас не влияет на работу.

Только «net.bridge.bridge-nf-call-iptables = 1» влияет.

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