Зеркалирование портов¶
Open vSwitch позволяет направлять копию потока трафика из одного или нескольких интерфейсов в другой. Также он может организовать перенаправление трафика из всей VLAN в конкретный порт или наоборот. Зеркалироваться может только входящий, только исходящий или оба типа трафика. Использование такой возможности позволит вести контроль сетевого трафика, передаваемого между виртуальными машинами с целью обнаружения (предупреждения) компьютерных атак.
Пример:¶
Зеркалирование трафика из интерфейса vnet2, принадлежащего одной виртуальной машние, в специально созданный для прослушивания порт mirror0 с типом internal
:
sudo ovs-vsctl -- set Bridge ovs-sw0 mirrors=@m -- \
--id=@mirror0 get Port mirror0 -- --id=@vnet2 get Port vnet2 -- \
--id=@m create Mirror name=mymirror select-dst-port=@vnet2 \
select-src-port=@vnet2 output-port=@mirror0
где конструкцией –id=@<имя_переменной>
определяется использование переменной;
командой set Bridge ovs-sw0 mirrors=@m
создается зеркало, имя и параметры, которого получаются из переменной @m
;
командой –id=@mirror0 get Port mirror0 ––id=@vnet2 get Port vnet2
определяются значения переменных @mirror0
, @vnet2
— записываются идентификаторы соответствующих портов;
командой –id=@m create Mirror name=mymirror select-dst-port=@vnet2 select-src-port=@vnet2 output-port=@mirror0
определяется значение переменной @m
— записываются имя и параметры зеркала;
select-dst-port
— зеркалирование входящего трафика;
select-src-port
— зеркалирование исходящего трафика;
output-port
— место перенаправления трафика.
С помощью консольной утилиты tcpdump
, запущенной на узле, можно прослушивать весь трафик, поступающий, например, на порт mirror0
. Для этого необходимо выполнить команду:
tcpdump -i mirror0
Также можно организовать ретрансляцию всех пакетов, например, пришедших на порт eth0
или eth1
на порт eth2
:
sudo ovs-vsctl -- set Bridge ovs-sw0 mirrors=@m \
-- --id=@eth0 get Port eth0 -- --id=@eth1 get Port eth1 \
-- --id=@eth2 get Port eth2 \
-- --id=@m create Mirror name=mymirror -- select-dst-port=@eth0,@eth1 \
select-src-port=@eth0,@eth1 output-port=@eth2
где конструкцией –id=@<имя_переменной>
определяется использование переменной;
командой set Bridge ovs-sw0 mirrors=@m
создается зеркало, имя и параметры которого получаются из переменной @m
;
командой ––id=@eth0 get Port eth0 – –id=@eth1 get Port eth1 – –id=@eth2 get Port eth2
определяются значения переменных @eth0
, @eth1
и @eth2
;
командой –id=@m create Mirror name=mymirror select-dst-port=@eth0, @eth1 select-src-port=@eth0,@eth1 output-port=@eth2
определяется значение переменной @m
— записываются имя и параметры зеркала;
select-dst-port
— зеркалирование входящего трафика;
select-src-port
— зеркалирование исходящего трафика;
output-port
— место перенаправления трафика.
Для отмены зеркалирования нужно выполнить команду:
sudo ovs-vsctl remove Bridge ovs-sw0 mirrors mymirror