Зеркальный порт через iptables

11

У меня есть выделенный корневой сервер Linux (Debian 7.5) с настроенным количеством гостей. Гости являются экземплярами KVM и получают доступ к сети через bridge-utils (NAT, внутренние IP-адреса, используют хост в качестве шлюза).

Например, один KVM - мой гость WebServer, и он становится доступным через IP-адрес хоста следующим образом:

    iptables -t nat -I PREROUTING -p tcp -d 148.251.Y.Z 
--dport 80 -j DNAT --to-destination  192.168.100.X:80 

Я делаю то же самое с другими службами, сохраняя их автономными, NAT и изолированными.

Но один гость должен быть сетевым монитором и должен выполнять проверку сетевого трафика (например, IDS). Обычно в не виртуальной установке я бы использовал VACL или порты SPAN для зеркалирования трафика. Конечно, внутри этого хоста я не могу этого сделать ( легко , потому что я не хочу использовать сложные подходы виртуальной коммутации).

  1. Могу ли я получить зеркало порта с помощью iptables и перенаправить весь входящий и исходящий трафик одному гостю KVM? Все гости имеют выделенный интерфейс, как vnet1.
  2. Можно ли выборочно пересылать трафик на основе протокола (например, правила пересылки VACL, которое захватывает только HTTP)?
  3. Нужна ли гостям особая настройка интерфейса, когда мне нужно сохранить vnet1интерфейс управления (с IP)?

Я был бы рад за точку в правильном направлении:

iptables         1.4.14-3.1
linux            3.2.55
bridge-utils     1.5-6

Большое спасибо :)

wishi
источник

Ответы:

14

как насчет того, чтобы добавить модуль предварительной маршрутизации корневого сервера.

iptables -I PREROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee

а затем добавив модуль правил Mangle таблицы post-Routing чем-то вроде

iptables -I POSTROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee 

где 192.168.200.1 - сетевой монитор.

Эти правила будут отражать весь входящий и исходящий трафик, перенаправляя его на 192.168.200.1

редактировать:

mangle table specific
  -j ROUTE            (explicitly route packets, valid at PREROUTING)
      options:
      --iface <iface_name>
      --ifindex <iface_idx> 

но вы также можете использовать что-то вроде

iptables -I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1

и

iptables -I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1

где TEEсейчас это цель, которая PREROUTINGпринимает больше параметров, таких как, например -i, -pи т. д.

похлопывание
источник
NB для читателей SE, использующих более новые версии, у iptablesкоторых больше нет ROUTEцели, смотрите мой ответ на unix.stackexchange.com/a/174619/31228 .
Джонатан Бен-Авраам