web-dev-qa-db-ja.com

iptablesによるポートのミラーリング

私は専用のLinux(Debian 7.5)ルートサーバーを使用しており、多数のゲストがセットアップされています。ゲストはKVM=インスタンスであり、bridge-utils(NAT、内部IP、ホストをゲートウェイとして使用)経由でネットワークアクセスを取得します。

例えば。 one 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処理し、分離します。

ただし、1人のゲストはネットワークモニターであることが想定されており、ネットワークトラフィック検査(IDSなど)を実行します。通常、非仮想セットアップでは、VACLまたはSPANポートを使用してトラフィックをミラーリングします。もちろん、この1つのホスト内では、これを行うことはできません(複雑な仮想スイッチングアプローチを使用したくないため、簡単に)。

  1. Iptablesを使用してポートミラーを取得し、すべての入力および出力トラフィックを1つのKVMゲストにリダイレクトできますか?すべてのゲストにvnet1などの専用インターフェイスがあります。
  2. プロトコルに基づいてトラフィックを選択的に転送することは可能ですか(HTTPのみを取得するVACL転送ルールなど)。
  3. vnet1を管理インターフェース(IP付き)として維持する必要がある場合、ゲストには特定のインターフェース設定が必要ですか?

私は正しい方向へのポイントに満足しています:

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

どうもありがとう :)

11
wishi

ルートサーバーのプレルーティングモジュールのマングルテーブルルールの前に、

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

次に、ルーティング後モジュールのマングルテーブルルールの前に

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

ここで、TEEPREROUTINGで、つまり-i-pなど

14
Pat