Стоит задача слушать весь трафик по сети для отладки связи ЭВМ-контроллер. Т.к. свичи сейчас дико умные и не сливают трафик во все порты, просто использовать Wireshark результата не даст. Я не знаю как сказать Wireshark что бы он заставил свич лить себе весь трафик. Может он умеет? Поэтому пытаюсь создать систему: ЭВМ(клиент источник запросов) - прослушка - цель (сервер). В ЭВМ прописываю в качестве IP сервера - IP прослушки. Туда она шлёт запрос. Прослушка приняв запрос от первого IP пересылает его во второй IP (сервер). Сервер получив запрос отвечает на IP прослушки, а он перенаправляет на ЭВМ. Всё вроде просто. Всё сидит на одном свиче. Прослушку уже написал, почти работает. Итак Прослушка построена на ЭВМ под ДОС. Использую пакетный драйвер, который сливает моей проге все пакеты из сети. Программа содержит свой IP стек и могу в нём делать любые правки. Всё что программа делает с принятым пакетом перед отправкой на другой IP: правит только IP заголовок пакета (меняет IP отправителя на свой IP, IP назначения на IP цели и пересчитывает контрольную сумму IP заголовка). Вся часть пакета после IP заголовка не трогается. МАС адреса тоже ставятся правильные, это прослушка выдала на цель пакет. В итоге программа работает без вопросов. Без проблем проходит Ping с ЭВМ на цель и обратно. Но есть какие то проблемы с ТСР пакетами. Повторю что ТСР часть вообще не трогаю. В качестве цели поставил комп, запустил на ней ТРС сервер и Wireshark. Вижу входящие SYN пакеты, но винда не посылает SYN ACK. Тупо игнорирует пакеты. Запустил соединение напрямую ЭВМ - цель. Всё ОК. Сравнил пакеты принимаемые целью в Wireshark - не вижу криминала (разницы). Запустил пакеты на цель в виде контроллера на проце STM32 со стеком LWIP. Принимает SYN, отдаёт SYN ACK. Но винда эти ответы (прошедшие через прослушку) снова игнорит. Получается что для TCP/IP стека LWIP нет ошибок, а для стека винды есть. Далее запустил ТСР пакеты на цель под ОС RTOS-32. На мой SYN даёт ICMP пакет с Type=12 Ошибка параметра. Что за ошибка не понятно. Может есть какие то дополнительные зависимости для ТСР пакетов и нельзя обойтись только изменением IP заголовка? Контрольная сумма в ТСР заголовке не зависит же от IP заголовка? Могу привести скриншоты или сохранёнки от Wireshark. Застрял на ровном месте. Нужна помощь.
|