web-dev-qa-db-ja.com

KVMホストでIPTablesを構成してゲストブリッジトラフィックをブロックする

私は論文研究プロジェクトに取り組んでいますが、iptables(KVM Host)で実行)を取得してトラフィックをブロックする(またはトラフィックを操作する)方法を理解するのに苦労しています。 [〜#〜]ブリッジ[〜#〜]KVMゲスト。トラフィックをブロックするためのiptablesエントリ(以下に貼り付け)を取得できませんVMとの間でやり取りします。

事実上、ホストシステムをそれらのゲストVMのファイアウォールとして機能させたいのですが、当面は、特定のVM宛てのすべてのパケットをドロップするだけでこの機能をテストしたいと思います。それほど遠くない将来には、よりきめ細かい制御を実装し、プロキシも関与させたいと思います。繰り返しますが、これは完全にホストレベルで発生し、ゲストレベルでは発生しません

私はCentOS6を実行しており、私が書いた別の質問に基づいています: LinuxKVM用に複数のインターフェイスを作成するには1つのNICを使用 、次のインターフェイスを構成しています:

eth0
br0
tap0

以下は、各インターフェイスのネットワークセットアップスクリプトです。

eth0の構成:

DEVICE="eth0"
BOOTPROTO="none"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Ethernet"
UUID="<<UUID-HERE>>"
HWADDR=<<MAC-ADDR-HERE>>
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
BRIDGE="br0"

br0の構成:

DEVICE="br0"
TYPE="Bridge"
ONBOOT="yes"
BOOTPROTO="dhcp"
DELAY=0

tap0の構成:

DEVICE="tap0"
TYPE="Tap"
BRIDGE="br0"
ONBOOT="yes"

CentOS 6 VMを実行していて、tap0ブリッジインターフェイスを利用するように構成されています。VMでのネットワークは正常に機能しています。ホストに他の変更はありません。システムが作られました。

以下は、私がiptablesチェーンに追加した機能しないFORWARDルールです(私はまだiptablesの専門家ではないことに注意してください)。

Sudo iptables -I FORWARD -i any -o tap0 -j DROP
Sudo iptables -I FORWARD -i tap0 -o any -j DROP

コマンドを実行すると、FORWARDテーブルは次のようになります。

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  tap0   any     anywhere             anywhere            
    0     0 DROP       all  --  any    tap0    anywhere             anywhere            
    0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-Host-prohibited 

残念ながら、これはトラフィックをブロックしません。なぜこれがうまくいかないのか分かりません。

更新:2014年11月25日:これを最後に更新してからしばらく経ちました。結局のところ、iptablesにはphysdevプラグインがあります。これは実際に私の研究でうまく使用しており、ebtablesよりも柔軟性があります。

2
Phanto

ここに含まれるネットワークの基本を理解していることを確認してください。ブリッジはスイッチであり、レイヤー2で動作します。iptablesルールはレイヤー3に適用され、このレベルでは渡されません。

ebtablesを調べて、そこでレイヤー2ルールを指定します-または-ブリッジの使用を完全に無効にして、すべてのトラフィックがレイヤー3のホストを通過するルーティングセットアップに移動します。後者のオプションが可能かどうかはわかりませんLibvirt/KVMを使用します。

2
gertvdijk