Пересылка пакетов в одном мосту Open vSwitch - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь эмулировать L3-коммутатор, к которому подключено несколько машин (без VLAN или с одной VLAN). Затем я хотел бы настроить коммутатор для пересылки пакетов, как я хочу, но мне не повезло.

Конфигурация моей системы:

  • ОС хост-машины: Ubuntu 18.04.
  • Open vSwitch 2.9.0
  • Клиентские машины: клиенты UBuntu 18.04 в VirtualBox 5.2.20

Что я хочу сделать

(в основномэмуляция атаки «человек посередине». *

  1. VM1, VM2 и VM3 подключены к виртуальному коммутатору или мосту (BR0).
  2. VM1 отправляет пакет (например, HTTP-запрос GET) в VM3.
  3. BR0 перехватывает его и пересылает на VM2.
  4. VM2 отправляет ответ на VM1.
  5. BR0 перенаправляет его на VM1, как отвечает VM3.

Что я сделал:

  1. ovs-vsctl add-br br0: Создать мост (BR0)
  2. Создать VM1,2,3, который использует br0 в качестве сетиbridge.
  3. Запустите различные веб-серверы внутри VM2 и VM3 (например, VM2 возвращает «привет» в корневом каталоге, а VM3 возвращает «HELLO».)
  4. Настройте IP-адреса внутри каждой машины, скажем,
    • VM1: 192.168.0.2
    • VM2: 192.168.0.3
    • VM3: 192.168.0.4
  5. ovs-ofctl --strict add-flow br0 priority=1,tcp,nw_dst=192.168.0.4,actions=mod_nw_dst=192.168.0.3: Добавитьпоток, изменяющий IP-адрес назначения.Перехват пакетов, идущих на VM3, и пересылка их на VM2 (я надеюсь.)
  6. ovs-ofctl --strict add-flow br0 priority=1,tcp,nw_src=192.168.0.3,actions=mod_nw_src=192.168.0.4: Добавить поток, модифицирующий исходный IP.Чтобы получить ответ от VM3.

То, что я увидел:

Однако, очевидно, это не было успешным.

  • Я могу ping от одного к другому.
  • Я могу cURL от одного к другому.
  • Однако команда mod_nw_dst оказалась неэффективной.От VM1 я могу видеть только исходный ответ от VM3, который я хотел переслать на VM2.

Я много гуглил и нашел много статей о пересылке через VLAN, но не так, как водиночный мост.Моя реализация неверна?Иначе, это не предназначенная особенность?В таком случае, как лучше всего эмулировать такие вещи?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Результатом ovs-ofctl dump-flows br0 является просто приведенная выше команда.

cookie=0x0, duration=157469.378s, table=0, n_packets=0, n_bytes=0, priority=1,tcp,nw_src=192.168.0.3 actions=mod_nw_src:192.168.0.4 cookie=0x0, duration=157462.433s, table=0, n_packets=0, n_bytes=0, priority=1,tcp,nw_dst=192.168.0.4 actions=mod_nw_dst:192.168.0.3 cookie=0x0, duration=157534.866s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL

...