Моя задача — создать две программы, написанные на C/C++, которые могут взаимодействовать друг с другом из WSL2 и Windows 10. Я могу отправлять трафик из WSL2 в Windows 10, однако мне не удаётся перехватить сетевой трафик со стороны Windows 10, поступающий из WSL2, с помощью простой программы-сниффера, написанной на C (на моём собственном ПК). Однако я могу видеть на двух открытых WireShark (одна в Windows 10 и одна в WSL2) UDP-сообщения, которые я пытаюсь отправить на IP-адрес WSL2 в Windows.
- Я пробовал добавлять порты в правила входящего трафика моего брандмауэра (безрезультатно).
- Я попробовал перевести сетевой интерфейс в режим promisc в WSL2 (без результата).
- Я пытался подать примерздесь(в WSL2 результата нет, однако в WSL1 работает, но меня WSL1 не интересует).
- Я пробовал настроитьэтот проект(безрезультатно).
- Я пробовал настроить связь с помощьюUSB(результата нет, у меня было сообщение о том, что сторонний брандмауэр блокирует указанный порт для связи, но я не решил эту проблему).
- Я пробовалРуководство по работе в сети WSL(безрезультатно).
- Я не могу создать мост, так как это запрещено в моей корпоративной среде, я не могу перенаправлять порты.
Мне бы хотелось понять, как WireShark может отслеживать трафик и, возможно, реализовать это на моей стороне в простом сообщении WSL2 send message ---> Windows receive msg.
решение1
Wireshark использует специальный драйвер Npcap для захвата трафика. (Ранее он был известен как WinPcap.) См.Разработка программного обеспечения с помощью Npcap.
Npcap нужен только для анализа сети (захвата пакетов); для обычного взаимодействия между хостом и виртуальной машиной он не нужен — для этого должно быть достаточно обычных сокетов UDP.