На виртуальной машине Ubuntu pcap_loop не перехватывает пакеты - PullRequest
0 голосов
/ 09 мая 2019

У меня есть код, который работает как сканер портов и в основном создает необработанный сокет и отправляет пакеты TCP и UDP на конечный хост и его порт, а затем получает пакет и в зависимости от ответа решает, открыт ли порт / закрыт / отфильтрован.

Код написан на C ++, и я использую libpcap для захвата пакетов.Я открываю живое устройство, применяю фильтр и запускаю pcap_loop.На моем ntb с Fedora все работает как положено, пакеты принимаются, порты отображаются правильно.Однако проблема в том, что код должен работать на виртуальной машине с Ubuntu.Я использую виртуальный ящик для виртуальной машины и мостовой сети.Код работает нормально, сокеты созданы, пакет отправлен, но ответ не перехватывается с pcap_loop.В tcpdump я вижу, что отправляемый пакет имеет правильную контрольную сумму и сразу же приходит ответный пакет с правильными флагами, но pcap_loop не перехватывает его.Я снова запускаю процесс захвата для того же порта, но безрезультатно.Опять же, все работает нормально в Fedora.

Есть ли какой-то главный фактор, который может сделать полностью работающий код на Fedora неработоспособным на Ubuntu VM?Что я могу попробовать изменить?Где может быть проблема?

Я обновил все пакеты, попробовал различные настройки сети в виртуальной коробке, попытался запустить pcap_loop с разнородным режимом (сеть на разнородном тоже), но ничего не помогает.Я отладил программу, и все так же, как на моем Fedora NTB (за исключением разных IP-адресов).Я уверен, что я не использую интерфейсы с петлевой или локальной IP-адреса.Я пытался как можно больше гуглить, но ничего не нашел.Я проверил пакеты, и все они кажутся одной и той же версией.

Заранее большое спасибо,

// Из-за того, что код является домашней работой, я не могу показать еездесь, но это в основном просто код со всего интернета из различных учебных пособий.

...