Я работаю в Windows и пытаюсь заставить Wireshark собирать мой сетевой трафик. Он отлично улавливает весь исходящий и входящий трафик, за исключением клиента / сервера, который я использую в своей локальной системе. Как бы то ни было, даже когда я отправляю пакеты через свой IP-адрес в локальной сети, он все равно не получает трафик. Может ли что-то умное / глупое в Windows направляет его таким образом, чтобы он не перемещался по сети? Могу ли я что-нибудь сделать, чтобы заставить пакеты блуждать по намеченному пути (т.е. выходить на мой маршрутизатор и обратно, чтобы Wireshark мог это видеть)?
Я хочу, чтобы мои пакеты, отправляемые на 192.168.x.x, не «перенаправлялись» на 127.0.01, что Wireshark не может обнюхать. Я подозреваю, что Windows обнаруживает, что я подключаюсь к той же машине, и «умно» пропускает сеть - и мне нужно остановить это.
Именно так работает сеть Windows - нет адаптера обратной связи, и трафик с одинаковыми адресами источника и назначения никогда не спускается по стеку драйверов, поэтому он никогда не достигает драйвера Winpcap.
В Wireshark есть несколько больше информации об этом здесь включая некоторые обходные пути с адаптером Microsoft Loopback, который может помочь.
Вы можете попробовать технику под названием "шпилька NAT"для прямой маршрутизации ваших пакетов через внешний маршрутизатор / ПК. Это заставит Windows фактически отправлять и получать данные через сетевую карту.
Вот как: вы настраиваете маршрутизатор с двумя сетевыми интерфейсами: один интерфейс в вашей сети (скажем: 192.168.66.0/24) и один интерфейс в «поддельной» сети (скажем: 10.10.66.0/24), который существует только для ваш тест. (Я предполагаю, что адрес вашего ПК - 192.168.66.100, а сетевые адаптеры маршрутизатора имеют адреса 192.168.66.254 и 10.10.66.254 соответственно.) На маршрутизаторе вы устанавливаете два правила NAT (записанные в iptables-save
формат):
-t nat -A PREROUTING -p tcp -d 10.10.66.254 --dport 80 -j DNAT --to-destination 192.168.66.100
-t nat -A POSTROUTING -p tcp -s 192.168.66.0/24 -d 192.168.66.100 --dport 80 -j SNAT --to-source 192.168.66.254
Первое правило - это стандартное правило «переадресации портов», которое отправляет весь трафик с 10.10.66.254:80 на 192.168.66.100. Второе правило - ключ к «шпильке NAT». Он заставляет весь трафик из сети 192.168.66.0/24 и привязанный к 192.168.66.100:80, по-видимому, исходить из локального интерфейса маршрутизатора (192.168.66.254). Второе правило необходимо для того, чтобы заставить клиента и сервер (которые находятся в одной сети, 192.168.66.0/24) маршрутизировать свои пакеты через внешний маршрутизатор вместо попытки прямой доставки друг другу.
С такой настройкой теперь вы можете использовать Wireshark для захвата трафика клиент / сервер на сетевом адаптере Windows. Клиент инициирует подключение к «фальшивому» адресу 10.10.66.254:80, и сервер должен видеть соответствующий трафик, исходящий с 192.168.66.254.
Если у вас есть вторая сетевая карта в коробке, вы можете настроить взвешенные метрики, чтобы ваше приложение слушало более взвешенную метрику. Машина должна искать приложение в интерфейсе с более низким весом, которое может позволить вам перехватить этот трафик.
Я не проверял, что это сработает, но есть идея попробовать (если у вас есть два NICS на машине)