Дзеркальний порт через iptables


11

У мене є спеціалізований кореневий сервер Linux (Debian 7.5) з кількома гостями. Гості є екземплярами KVM та отримують доступ до мережі через bridge-утиліти (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 

Я роблю те саме з іншими службами, зберігаючи їх самодостатніми, NATED та ізольованими.

Але один гість повинен бути монітором мережі та повинен перевіряти мережевий трафік (як 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

Дуже дякую :)

Відповіді:


14

як щодо попереднього вибору модуля попереднього маршрутизації кореневого сервера Mangle таблиці таблиці таким чином:

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

а потім попередньо випереджаючи правила табличного режиму Mangle для модуля після маршрутизації щось подібне

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і т.д.


Зверніть увагу на читачів SE, які використовують новіші версії, iptablesякі вже не мають ROUTEцілі, дивіться мою відповідь на unix.stackexchange.com/a/174619/31228 .
Джонатан Бен-Аврахам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.