Я работаю с необработанными кадрами Ethernet. У меня есть интерфейс Ethernet eth0 и виртуальный VLAN-интерфейс eth0.100 на моей машине Linux. Мой сокет RAW привязан к виртуальному интерфейсу eth0.100. Проблема в том, что, когда на этот интерфейс передается фрейм VLAN с идентификатором (VLAN ID = 100), мое приложение получает две копии одного и того же фрейма Ethernet. Из приложения я не вижу разницы между этими кадрами, содержание полезной нагрузки точно такое же. Мой интерфейс НЕ работает в беспорядочном режиме.Дублирующий Ethernet-фрейм на виртуальном интерфейсе VLAN через гнездо RAW
Я использовал ТСРйитр для захвата кадров и ниже результат
- eth0: Это получает один кадр, который меченый VLAN - 100.
- eth0.100: Это получает один кадр, который НЕ является VLAN помечено.
Если я привяжусь к eth0, я все равно получаю две копии рамки. Но если я удалю eth0.100 и привяжусь к eth0, я просто получу одну копию. Мое приложение получает две копии фрейма, один из eth0 и один из eth0.100, хотя я привязан ТОЛЬКО к eth0.100?
Я попытался использовать BPF, но я не уверен, какой фильтр использовать для eth0.100.
Как насчет кода? – someuser
Его нормальное программирование сокетов. Я привязался к виртуальному интерфейсу eth0.100, это единственное различие. – Neo
Мы не знаем, что для вас нормально. Я могу предложить посмотреть исходный код tcpdump (или wirehark). – someuser