Как Wireshark может собирать сетевой трафик из Windows10, поступающий из WSL2

Как Wireshark может собирать сетевой трафик из Windows10, поступающий из WSL2

Моя задача — создать две программы, написанные на 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.

Связанный контент