Создание прототипа сетевого устройства с использованием стандартного ПК с Linux и двумя сетевыми картами - PullRequest
1 голос
/ 10 января 2010

Я готов построить прототип сетевого устройства. Предполагается, что это устройство прозрачно манипулирует пакетами Ethernet. Предполагается, что две сетевые карты имеют одну карту, подключенную к внешней ветви (т. Е. eth0 ), а другую к внутренней ветви (т. Е. eth1 ).

В типичной схеме сети, как на прилагаемом изображении, она будет размещена между маршрутизатором и коммутатором локальной сети.

Я планирую написать программное обеспечение, которое подключается на уровне драйвера ядра, и делать все, что мне нужно, с входящими и исходящими пакетами.

Например, «исходящий» пакет (на eth1) будет обрабатываться и передаваться на другой сетевой адаптер (eth0), который затем должен быть перенесен на следующую надежду

Мои вопросы:

  1. Это выполнимо?
  2. Эти NIC не будут иметь IP-адреса, это должно быть проблемой?

Заранее спасибо за ваши ответы.

(И нет, такого еще нет на рынке, поэтому, пожалуйста, стиль ответов «зачем изобретать велосипед» не имеет значения)

типичная схема сети http://img163.imageshack.us/img163/1249/stackpost.png

Ответы [ 3 ]

2 голосов
/ 10 января 2010

Я бы предложил libipq , который, кажется, делает то, что вы хотите:

Netfilter предоставляет механизм для передачи пакетов из стека для постановки в очередь в пространство пользователя, а затем приема этих пакетов обратно в ядро ​​с вердиктом, определяющим, что делать с пакетами (например, ACCEPT или DROP). Эти пакеты также могут быть изменены в пользовательском пространстве перед повторным внедрением в ядро.

0 голосов
/ 25 апреля 2012

, пока сетевые адаптеры установлены в смешанный режим, они перехватывают пакеты в сети без необходимости установки на них IP-адреса. Я знаю, что это можно сделать, так как есть много компаний, которые производят оборудование одного типа (I.E: Juniper Networks, Cisco, F5, Fortinet и т. Д.)

0 голосов
/ 10 января 2010

Видимо, это можно сделать. Я на самом деле пытаюсь создать его прототип, используя scapy

...