Проблемы с прозрачным прокси для виртуальных машин

Проблемы с прозрачным прокси для виртуальных машин

Сначала рассмотрим базовую топологию:

  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 выполняет собственную обработку сети перед передачей ее в сетевой стек ядра.

Вернуться к доске для рисования.

Связанный контент