2012-06-08 2 views
2

Я пытаюсь создать программное обеспечение, которое обнюхивает DHCP-предложения из разных VLAN, и моя проблема в том, что пакеты, найденные мной, не содержат VLAN-тегов. Я использую сырые сокеты, и я пытался включить режим promiscuous, но безуспешно.Как инициализировать raw-сокет для sniffing VLAN

Вопрос в том, как инструктировать ядро ​​хранить все данные в пакете без изменений?

При использовании wirehark я могу видеть ответный пакет с установленным заголовком VLAN, но мои данные recv'ed удалили всю информацию VLAN.

Заранее благодарен!

--Lauri

ответ

0

Если я понимаю правильно Linux code, теги VLAN удаляются из полезной нагрузки-пакетов рано и сохраняются в поле, которое не доступен через API сокетов. Вместо этого попробуйте сделать то, что делает wirehark, т. Е. Использовать pcap API.

+0

Я не могу использовать libpcap, так что опция находится вне окна. – user1444314

+0

Теперь вопрос заключается в том, как извлечь информацию vlan_tci из заданного skb, используя только сокет, или мне нужно каким-то образом переопределить получение (бит ниже уровня, чем сокеты)? – user1444314

+0

Возможно, вы захотите прочитать [этот вопрос и ответ] (http://stackoverflow.com/questions/10947433/linux-user-space-l2-control-protocols). В нем обсуждается, какие изменения необходимы в Linux для передачи информации L2 в приложение для пользовательского пространства. – user1202136