Сначала рассмотрим базовую топологию:
Internet
|
Gateway
|
Workstation---eth0---virbr0
|
+-----+-----+
| | |
vm1 vm2 vm3
Мне нужно протестировать анализатор трафика, работающий на моей рабочей станции и прослушивающий какой-либо порт (например, 8990) на eth0.
Правило [я думаю], которое я хочу, это «любые пакеты, покидающие virbr0 и направляющиеся куда-либо на порт 80, должны вместо этого направляться на порт 8990 на eth0». Мое программное обеспечение, работающее на порту 8990, выполняет собственную проверку искажения пакетов NAT, чтобы протолкнуть пакеты после их проверки.
Я ломал голову над этим вопросом, предлагая разные варианты:
iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j DNAT \
--to 10.0.0.10:8990
Я пробовал более общий метод использования mangle
таблицы с
--set-mark
и ip rule add fwmark
, но он мне не подходит.
Думаю, меня сбивает с толку то, что все работает на одном и том же устройстве.
Спасибо за любые советы.
решение1
Оказывается, этот вопрос спорный. Tcpdump показывает, что подсеть для виртуальных машин, 192.168.122.0/24, даже не появляется в решении о маршрутизации ядра. Я полагаю, что libvirtd выполняет собственную обработку сети перед передачей ее в сетевой стек ядра.
Вернуться к доске для рисования.