Mirror Port melalui iptables

11

Saya memiliki server root Linux (Debian 7.5) khusus, dengan sejumlah tamu diatur. Para tamu adalah instance KVM, dan mendapatkan akses jaringan melalui bridge-utils (NAT, IP internal, gunakan host sebagai gateway).

Misalnya satu KVM adalah tamu WebServer saya, dan dapat diakses melalui IP host dengan cara ini:

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

Saya melakukan hal yang sama dengan layanan lain, menjaga mereka mandiri, terikat dan terisolasi.

Tetapi satu tamu seharusnya menjadi pemantau jaringan, dan harus melakukan inspeksi lalu lintas jaringan (seperti IDS). Biasanya, dalam pengaturan non virtual saya akan menggunakan port VACL atau SPAN untuk mencerminkan lalu lintas. Tentu saja, di dalam host yang satu ini, saya tidak bisa melakukan ini ( dengan mudah , karena saya tidak ingin menggunakan pendekatan switching virtual yang kompleks).

  1. Bisakah saya mendapatkan mirror port menggunakan iptables, dan mengarahkan semua lalu lintas masuk dan keluar ke satu tamu KVM? Semua tamu memiliki antarmuka khusus, seperti vnet1.
  2. Apakah mungkin untuk meneruskan lalu lintas secara selektif, berdasarkan protokol (seperti aturan forward VACL, yang hanya mengambil HTTP)?
  3. apakah para tamu memerlukan pengaturan antarmuka khusus, ketika saya perlu menyimpannya vnet1sebagai antarmuka manajemen (dengan IP)?

Saya akan senang untuk titik ke arah yang benar:

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

Terima kasih banyak :)

wishi
sumber

Jawaban:

14

bagaimana dengan pra-perutean modul server pra-Routing modul tabel Mangle aturan dengan sesuatu seperti:

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

dan kemudian menambahkan modul tabel Mangle aturan post-Routing oleh sesuatu seperti

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

di mana 192.168.200.1 adalah monitor jaringan.

Aturan-aturan ini akan mencerminkan semua lalu lintas masuk dan keluar meneruskannya ke 192.168.200.1

edit:

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

tetapi Anda juga bisa menggunakan sesuatu seperti

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

dan

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

di mana TEEsaat ini adalah target yang di PREROUTINGdibutuhkan lebih banyak pilihan seperti yaitu -i, -p, dll

Menepuk
sumber
NB ke pembaca SE menggunakan versi yang lebih baru iptablesyang tidak lagi memiliki ROUTEtarget melihat balasan saya di unix.stackexchange.com/a/174619/31228 .
Jonathan Ben-Avraham