Port lustrzany przez iptables

11

Mam dedykowany serwer root Linux (Debian 7.5) z wieloma gośćmi. Goście są instancjami KVM i uzyskują dostęp do sieci przez most-utils (NAT, wewnętrzne adresy IP, użyj hosta jako bramy).

Np. Jeden KVM jest moim gościem WebServer i można go uzyskać za pośrednictwem adresu IP hosta w ten sposób:

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

Robię to samo z innymi usługami, utrzymując je jako niezależne, NAT i izolowane.

Ale jeden gość powinien być monitorem sieci i powinien przeprowadzać kontrolę ruchu sieciowego (jak IDS). Zwykle w konfiguracji innej niż wirtualna używałem list VACL lub portów SPAN do odzwierciedlenia ruchu. Oczywiście w tym jednym hoście nie mogę tego zrobić ( łatwo , ponieważ nie chcę używać złożonych wirtualnych metod przełączania).

  1. Czy mogę uzyskać kopię lustrzaną portu za pomocą iptables i przekierować cały ruch wejściowy i wyjściowy do jednego gościa KVM? Wszyscy goście mają dedykowany interfejs vnet1.
  2. Czy możliwe jest selektywne przekazywanie ruchu w oparciu o protokół (jak reguła przekazywania VACL, która pobiera tylko HTTP)?
  3. czy goście potrzebują określonej konfiguracji interfejsu, kiedy muszę zachować go vnet1jako interfejs zarządzania (z adresem IP)?

Byłbym szczęśliwy, gdyby wskazać właściwy kierunek:

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

Wielkie dzięki :)

wishi
źródło

Odpowiedzi:

14

co z przygotowaniem modułu wstępnego routingu serwera głównego? Zarządzaj regułami tabeli przez coś takiego:

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

a następnie przygotowywanie modułu Post-Routing Mangle reguły tabeli przez coś podobnego

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

gdzie 192.168.200.1 to monitor sieci.

Reguły te będą odzwierciedlać cały przychodzący i wychodzący ruch przekierowujący go do 192.168.200.1

edytować:

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

ale możesz także użyć use coś takiego

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

i

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

gdzie TEEteraz jest celem, który przy PREROUTINGzajmuje więcej opcji, takich jak np -i, -pitp

Poklepać
źródło
Uwaga dla czytelników SE korzystających z nowszych wersji iptablestego nie ma już ROUTEcelu zobacz moją odpowiedź na unix.stackexchange.com/a/174619/31228 .
Jonathan Ben-Avraham,