Технически вы можете использовать отравление ARP для этого, однако я действительно не думаю, что рекомендую это. Я действительно не понимаю, почему вы пытаетесь это сделать, но, судя по звукам, вы стремитесь подобрать типы потери / повреждения пакетов, которые могут быть вызваны радиочастотным оборудованием.
Прежде всего, вы упомянули C #, который на самом деле не является языком для этого, низкоуровневая сеть слишком далека. Я думаю, что C # предоставляет класс необработанных сокетов, но если вы попытаетесь эмулировать TCP / IP и UDP, а адреса подделки не принадлежат вашему хосту, это фактически отбрасывает ваши пакеты. Возможно, есть способ остановить это, но вам придется исследовать .Net Raw Socket.
Вы также можете использовать WinPcap с оболочкой c #. Но это все еще не нативная реализация и может понести потери производительности. Существует оболочка C # для WinPcap, которую я использовал под названием SharpPcap , однако некоторые части не реализованы должным образом, и мне пришлось изменить ее так, как мне было нужно. Я провел несколько простых тестов захвата трафика на скорости 300 Мбит / с, но это не включало анализ протоколов или внедрение пакетов обратно в сеть. Это также может быть использовано для отправки пакетов обратно в сеть, но опять же в прошлом это была довольно низкая производительность. Среди моих коллег по сети распространено мнение, что этот тип проверки не может быть выполнен без помощи аппаратного обеспечения в скорости Гбит / с.
Я вижу, вы заметили, что управляете роутером и лабораторией. Я не знаю, есть ли у Cisco минимальные требования для этой функции, но вы можете указать статический маршрут к интерфейсу. Таким образом, если вы повесите сервер перехвата на один порт маршрутизатора и добавите маршруты для каждого хоста, чтобы перейти к вашему серверу перехвата, он получит весь трафик, маршрутизируемый через маршрутизатор. Вы делаете это, определяя интерфейс следующим шагом вместо IP-адреса.
* Обратите внимание, что Боб Маккормик отмечает, что это повлияет только на хосты в разных подсетях, однако существует простой читерский подход: на каждом хосте (если назначены статические IP-адреса) маска маски подсети должна быть / 32 (т. Е. 255.255.255.255) ). Это по существу заставит хост отправлять все свои кадры для маршрутизации маршрутизатором, поскольку он больше не знает ни о каких других пользователях в той же сети, что и он сам.
Последнее замечание: я понятия не имею, будет ли это работать на виртуальной машине. Я думаю, что будет, если вы используете один тип сетевого интерфейса в vmware, но я не пробовал его и не имею представления о других провайдерах виртуальных машин.
Однако, если вы выполняете этот уровень работы, я бы посоветовал вам снова взглянуть на использование linux для хоста, на который вы отправляете трафик, и, возможно, инструмент, рекомендованный Бобом Маккормиком. Однако в Linux я уверен, что существует множество инструментов, которые можно настроить для имитации событий такого типа, которые вы ищете.