Я использую KVM на Centos 5. У меня есть гостевая ОС ubuntu 10.04, на которой установлен Snort 2.9. Гостевая ОС имеет (2) nic, eth0 и eth1. Один nic, eth0, настроен с IP и может быть доступен из сети, в которой находится ОС хоста. Второй nic не имеет IP и используется для получения зеркального трафика от коммутатора Cisco. На стороне ОС хоста tcpdump на br1, который является интерфейсом моста, используемым для гостевой ОС, на которой работает Snort, действительно видит зеркальный трафик от коммутатора. Но tcpdump, запущенный на eth1 гостевой ОС, который является интерфейсом, который отслеживается Snort, видит только широковещательные или cdp-пакеты от коммутатора. Tcpdump, запущенный на eth0 гостевой ОС, действительно показывает зеркальный трафик от коммутатора.
Любые идеи?
Я не знаю, поможет ли это, но я столкнулся с аналогичной проблемой при устранении проблем с keepalived на двух гостевых системах Linux KVM, каждый из которых работает под Ubuntu 10.04. Я обнаружил, что при запуске tcpdump -i eth1 будет видеть многоадресные адреса (это другая подсеть, а не IP, назначенный сетевой карте), но если я запустил tcpdump -i any, этого не произойдет. Я провел дальнейшее тестирование tcpdump при мониторинге dmesg и обнаружил, что когда я использовал устройство eth1 в tcpdump, это приводило к неразборчивости сетевой карты, но при использовании "любого" устройства ни eth0, ни eth1 не входили в неразборчивую сеть. Это противоречит тому, как это обрабатывается на физическом хосте, где «any» переводит все сетевые адаптеры в беспорядочные связи или, по крайней мере, на хостах, с которыми я тестировал.
Я выполнил команду ip link set eth1 promisc on
а затем, когда я использовал "любое" устройство, оно теперь могло видеть трафик. Это в равной степени относилось к eth0, однако я знаю, что трафик, который я хотел, туда не поступал, поэтому я сделал это только для тестирования. Вы можете сохранить это для хоста, отредактировав / etc / network / interfaces и добавив строку, начинающуюся с «post-up», за которой следует команда, которую вы только что использовали, и это гарантирует, что устройство входит в беспорядочную сеть при загрузке лучшего.
Я не верю, что сетевая карта обычно должна быть в беспорядочной сети, чтобы видеть многоадресный трафик, но в этом случае с гостевым KVM кажется, что это было так, и если устройство не настроено на неразборчивую связь, оно видит только IP-пакеты на подсеть с тем же IP-адресом, что и сетевой адаптер, если не случайный. Snort использует libpcap, ту же библиотеку, что и tcpdump IIRC, и если он пытается установить неразборчивую связь через интерфейс any, то, похоже, он не преуспевает там, где должен. Я не верю, что keepalive требует неразборчивой связи при нормальных обстоятельствах, но в данном случае это единственный способ увидеть многоадресный трафик.
Надеюсь это поможет.
После долгого поиска я нашел это очень простое / легкое решение - если вы его знаете:
http://adamdoupe.com/blog/2010/10/22/configuring-linux-bridge-to-act-as-a-hub/
brctl setageing <bridgename> 0