Зацикливание пакетов через коммутатор - PullRequest
1 голос
/ 11 августа 2011

Я работаю над программой, которая тоже должна отправлять данные сама себе. в нашей топологии у нас есть управляемый коммутатор, который имеет возможность зеркалирования дублировать данные со всех портов на один порт для целей мониторинга. когда я отправляю пакет с ПК на себя, пакет не выходит за пределы компьютера, и Windows Stack IP зацикливает его локально, поэтому мы не можем получить его дубликат для нашего порта монитора. Наша программа написана на C #. Как мы можем зациклить данные через коммутатор вместо стека Windows? Это вообще возможно? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Вы можете сделать это с двумя сетевыми картами в ПК и маршрутизатором NAT (в основном, любой готовый потребительский маршрутизатор будет работать).

Настройте две сетевые карты ПК с IP-адресом в разных сетях безмаршрут между ними.Подключил порт WAN маршрутизатора NAT к NIC1 и один из портов коммутатора маршрутизатора NAT к коммутатору.Подключите NIC2 на ПК к коммутатору.Затем на маршрутизаторе NAT настройте правило переадресации для любого порта, который вы используете, чтобы он направлял трафик на адрес NIC2.

В вашем приложении вы отправите данные на IP-адрес WAN NAT с NIC1 и получите ответ на NIC2.

     NIC1 --------------------  NAT -------------- Switch -------- NIC2
 192.168.0.2        192.168.0.1 <-> 192.168.1.1                  192.168.1.2
 255.255.255.0                                                     255.255.255.0
0 голосов
/ 11 августа 2011

Сложным способом, если это возможно, было бы создание псевдонима IP для сетевой карты, которую необходимо маршрутизировать через маршрутизатор.Таким образом, вы бы отправили на этот внешний адрес, который идет на ваш шлюз / маршрутизатор, а затем отправляется обратно на ваш IP-псевдоним.Для этого маршрутизатор должен поддерживать несколько IP-адресов из разных подсетей на одном порту.

Router 
  ip1: 192.168.0.1
  ip2: 192.168.1.1
PC A (your machine) 
  ip1: 192.168.0.2 with gateway 192.168.0.1
  ip2(alias): 192.168.1.10 with gateway 192.168.1.1

Таким образом, вы отправляете трафик с ПК A ip1 на ПК A ip2, он должен маршрутизироваться через шлюз.

Очевидно, что для этого требуется гораздо больше, чем просто код, он требует изменений конфигурации, IP Aliasing, и т.д ... Я не думаю, что это то, что вы хотите, но это может быть решением.Я надеюсь, что кто-то может придумать лучшую идею (возможно, возиться с таблицами маршрутов Arp / Ip?).

-

Второе решение: В таблице маршрутов ОС вы можетеработать со шлюзом локального IP-адреса (при условии, что ваша машина - .0.2, а маршрутизатор / шлюз - .0.1:

Route DELETE 192.168.0.2
Route ADD 192.168.0.2 MASK 255.255.255.255 192.168.0.1 METRIC ?? IF ???

. Используя это, я заставил мою машину связаться со шлюзом для пакетов ip, предназначенных для моегособственная машина. Мне удалось подтвердить это с помощью traceroute, теперь с помощью 2 шагов. Вы должны задать правильный параметр Metric and Interface (IF) для команды Route ADD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...