私は論文研究プロジェクトに取り組んでいますが、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で動作します。iptables
ルールはレイヤー3に適用され、このレベルでは渡されません。
ebtables
を調べて、そこでレイヤー2ルールを指定します-または-ブリッジの使用を完全に無効にして、すべてのトラフィックがレイヤー3のホストを通過するルーティングセットアップに移動します。後者のオプションが可能かどうかはわかりませんLibvirt/KVMを使用します。