LINUX.ORG.RU

openvswitch в качестве свитча + миррор - как?

 , , , ,


1

1

Всем привет! не имею должного опыта в работе с сетью, но пытаюсь получить некий опыт - прошу помощи

что у меня есть:

1. сетевая карта с четыремя портами

2. серая (локальная сеть) /24 подключенная в нулевой порт сетевой карты

3. ubuntu 18.04 и openvswitch 2.10.4 собранная мной из исходников на машине, где располагается сетевая карта

задача:

1. из нулевого порта прозрачно весь трафик перенаправить в первый порт (аля аппаратный свитч)

2. от нулевого порта построить миррор и направить во второй порт

что я уже сделал:

1. снёс netplan, установил ifupdown для совместимости с openvswitch

2. создал бридж для проверки и пропустил трафик - openvswitch работает

3. для решения пункта 1 я предположил, что бриджей достаточно, но на этом и застрял

ovs-vsctl add-br br0
ovs-vsctl add-port br0 ens1f0

ovs-vsctl add-port br0 ens1f1

ovs-vsctl show

43e81f58-142c-43f1-a60a-796471b3214
    Bridge "br0"
        Port "ens1f0"
            Interface "ens1f0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "ens1f1"
            Interface "ens1f1"
    ovs_version: "2.10.4"

в офф. доках для меня проблематично разобраться в неродном мне языке, те не совсем понятно какого формата должна быть конфигурация для примерного желаемого результата, поэтому я читал по linux bridge: http://xgu.ru/wiki/Linux_Bridge#.D0.A1.D0.BE.D1.81.D1.82.D0.BE.D1.8F.D0.BD.D0... и вроде бы текущей конфигурации должно было быть достаточноб, но трафик при такой конфигурации бриджа не идёт

по миррору боле-менее понятно, самый первый «вопрос»: http://docs.openvswitch.org/en/latest/faq/configuration/ , но тут тоже не понятно как настраивать tap...

p.s. если я правильно понимаю, то всё вращается вокруг /etc/network/interfaces



Последнее исправление: kordomnokod (всего исправлений: 2)

Что ты хочешь делать дальше с этим зеркалированными трафиком ?

После этого ты поймешь нужен ли тебе tap или нет.

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

Спасибо за ответ!

если подробно, то задача обстоит так:

п1 я сейчас пропускаю прозрачно трафик из нулевого порта в первый (нужно для п2.)

п2 разворачиваю suricata и захватываю трафик из нулевого порта, фильтрую и отправляю в первый

предполагаю, что тут никаких настроек с стороны openvswitch не требуeтся

п3 зеркалирую нулевой порт и перенаправляю во второй для анализа средствами moloch

openvswitch я без проблем собрал и опакетил, с suricata проблемы с сборкой средствами чекинсталла и .deb по офф ману не собирается (напишу репорт разработчикам)

также хочу интегрировать suricata в moloch, решений не нашёл, напишу своё и опубликую как появится возможность ради новых знаний )

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

мне бы сейчас разобраться для начала с п1, правильно ли я делаю и если да, то почему не прошёл трафик из нулевого порта в первый

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

п2 разворачиваю suricata и захватываю трафик из нулевого порта, фильтрую и отправляю в первый

предполагаю, что тут никаких настроек с стороны openvswitch не требуeтся

Ну ты сам то подумай!

После п.1 пакеты из порта в порт перекладывает ovs. Если этим должна заниматься suricata, то первый порт оттуда нужно убрать.

п3 зеркалирую нулевой порт и перенаправляю во второй для анализа средствами moloch

В ссылке на документацию по зеркалированию в ovs в качестве устройства в которое зеркалировался трафик было tap1, а тебе нужно во второй порт.

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

Если этим должна заниматься suricata, то первый порт оттуда нужно убрать.

разве она такое умеет? ну то есть я предполагал, что при захвате входного трафика суриката отбросит пакет и только

не глупости ради... а банальное недопонимание архитекутры, или отсутствие опыта с моей стороны

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

разве она такое умеет? ну то есть я предполагал, что при захвате входного трафика суриката отбросит пакет и только

suricata это не только ids, но и полезный ips :)

отбрасывать пакеты можно только в режиме ips.

А если в мост включены оба интерфейса, то решение о пересылке принимает ovs, а не суриката.

Либо в ovs должен быть функционал, который позволяет принимать решение о пересылке пакета при помощи внешнего модуля, а суриката должна уметь быть таким модулем.

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

спасибо!

как мне правильно перестроить архитекутуру под текущую задачу? суть я понял, но не представляю с чего начать

в целом то suricata имеет некоторые модули, в том числе может собираться с pf-ring

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

Эта статья в данном случае мало полезна.

Кто-то здесь занимался похожим вопросом и боролся за производительность в 2 MPPS.

IMHO тебе нужно https://suricata.readthedocs.io/en/latest/setting-up-ipsinline-for-linux.html...

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 2)
Ответ на: комментарий от vel

мысль крутится...

суриката сейчас стоит за роутеро (с натом), в серой сети - что должно быть в переменной HOME_NET= [«»]?

в нулевой порт (ens1f0) выполнил подключение от роутера, а в (ens1f1) выполнил подключение другой машины - сети нет.

в чём ошибка?

общая конфигурация такая:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 ens1f0

ovs-vsctl show

43e81f58-142c-43f1-a60a-796471b3214
    Bridge "br0"
        Port "ens1f0"
            Interface "ens1f0"
        Port "br0"
            Interface "br0"
                type: internal
         ovs_version: "2.10.4"
apt -y --no-install-recommends install software-properties-common
add-apt-repository ppa:oisf/suricata-stable
apt -y install suricata-5.0

конфиг с моими изменениями (/etc/suricata/suricata.yaml)

HOME_NET= [""]

-dhcp
	enabled: no
	
af-packet:
  - interface: br0
    threads: 24
    defrag: no
    cluster-type: cluster_flow
    cluster-id: 98
    copy-mode: ips
    copy-iface: ens1f1
    buffer-size: 64535
    use-mmap: yes
  - interface: ens1f1
    threads: 24
    cluster-id: 97
    defrag: no
    cluster-type: cluster_flow
    copy-mode: ips
    copy-iface: br0
	buffer-size: 64535
    use-mmap: yes
	
suricata-update
systemctl restart suricata

cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto ens1f0
iface ens1f0 intet manual

auto ens1f1
iface ens1f1 inet manual

auto ens1f2
iface ens1f2 inet manual

auto enp2s0f0
iface enp2s0f0 inet static
	address 192.168.1.27
	netmask 255.255.255.0.
	gateway 192.168.1.1
	dns-nameservers 8.8.8.8
kordomnokod
() автор топика
Ответ на: комментарий от kordomnokod

собственно если за настройку сети в данном случае отвечает не openvswitch,то эффективней было бы использовать ens1f0, а не br0 (имхо)

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

боле-менее разобрался

1. опенсвитч не нужен, тк молох можно биндить и к нулевому интерфейсу с которго приходит трафик

2. бриджи накатил средствами iproute - работает, трафик есть

ip link add name br0 type bridge
ip link set dev br0 up
ip link set dev ens1f0 master br0
ip link set dev ens1f1 master br0

3. спасибо @vel за линк на док - я был слеп:

    ips: the drop keyword is honored and matching packets are dropped.
    tap: no drop occurs, Suricata acts as a bridge

сейчас суриката работает в режиме tap и помимо стандартных настроек имеет такие:

HOME_NET: "[192.168.1.27/32]"

af-packet:
 -interface: ens1f0
 threads: 1
 defrag: no
 cluster-type: cluster_flow
 #ebpf-lb-file: /usr/libexec/suricata/ebpf/lb.bpf
 cluster-id: 98
 copy-mode: tap
 copy-iface: ens1f1
 buffer-size: 64535
 use-nmap: yes
 -interface: ens1f1
 threads: 1
 cluster-id: 97
 defrag: no
 cluster-type: cluster_flow
 copy-mode: tap
 copy-iface: ens1f0
 buffer-size: 64535
 use-nmap: yes

1. как понять, почему не идёт трафик в порт ens1f1?

2. где брать ebpf?

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

сейчас суриката работает в режиме tap и помимо стандартных настроек имеет такие: <<

бриджи соответственно удалены, тк в режиме бриджа сейча работает суриката

в /etc/network/interfaces только такие настройки:

source /etc/network/interfaces.d/*

auto ens1f0
iface ens1f0 intet manual

auto ens1f1
iface ens1f1 inet manual
kordomnokod
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.