Open vSwitch позволяет, направлять копию потока трафика из одного или нескольких интерфейсов в другой. Так же, возможно перенаправление трафика из всего VLAN’a в конкретный порт или на оборот. Может зеркалироваться только входящий, исходящий или оба типа. Понадобиться это может, например, для прослушки трафика в целях информационной безопасности или диагностики.
Выполним зеркалирование трафика из интерфейса vnet2 принадлежащего одной из ВМ в специально созданный для прослушивания порт mirror0 с типом internal.
Команда, реализующая эту функцию в отличии предыдущих, просто ломает мозг
# ovs-vsctl — set Bridge ovs-sw0 [email protected] — —[email protected] get Port mirror0 — —[email protected] get Port vnet2 — —[email protected] create Mirror name=mymirror se[email protected] [email protected] [email protected]
В данной команде, как нетрудно заметить, во всю производится работа с БД, а также используются своего рода внутренние переменные — —id=@<имя_переменной>
set Bridge ovs-sw0 [email protected] — эта часть описывает создание зеркала, имя и параметры которого должна быть получена из переменной @m.
—[email protected] get Port mirror0 — —[email protected] get Port vnet2 — здесь в переменные @mirror0, @vnet2 записываются идентификаторы соответствующих портов.
—[email protected] create Mirror name=mymirror [email protected] [email protected] [email protected] — а тут собственно в переменную @m записывается идентификатор моста mymirror, которая будет подставлена в первой команде в переменную @m.
Конечно, для такого простого действия можно было реализовать человеко-понятные параметры и обойтись без ручных правок БД. Но пока что реальность такова.
Теперь, например с помощью tcpdump запущенного в хост-системе можно наблюдать весь трафик ВМ:
# tcpdump -i mirror0
Кстати, подобное зеркалирование трафика наверняка возможно у таких облачных провайдеров как Amazon EC2, Rackspace, Digitalocean и других. По этому не стоит забывать об использовании защищенных сетевых протоколов!
Помогла ли вам статья?