Я пытаюсь эмулировать L3-коммутатор, к которому подключено несколько машин (без VLAN или с одной VLAN). Затем я хотел бы настроить коммутатор для пересылки пакетов, как я хочу, но мне не повезло.
Конфигурация моей системы:
- ОС хост-машины: Ubuntu 18.04.
- Open vSwitch 2.9.0
- Клиентские машины: клиенты UBuntu 18.04 в VirtualBox 5.2.20
Что я хочу сделать
(в основномэмуляция атаки «человек посередине». *
- VM1, VM2 и VM3 подключены к виртуальному коммутатору или мосту (BR0).
- VM1 отправляет пакет (например, HTTP-запрос GET) в VM3.
- BR0 перехватывает его и пересылает на VM2.
- VM2 отправляет ответ на VM1.
- BR0 перенаправляет его на VM1, как отвечает VM3.
Что я сделал:
ovs-vsctl add-br br0
: Создать мост (BR0) - Создать VM1,2,3, который использует br0 в качестве сетиbridge.
- Запустите различные веб-серверы внутри VM2 и VM3 (например, VM2 возвращает «привет» в корневом каталоге, а VM3 возвращает «HELLO».)
- Настройте IP-адреса внутри каждой машины, скажем,
- VM1: 192.168.0.2
- VM2: 192.168.0.3
- VM3: 192.168.0.4
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 (я надеюсь.) 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