前回の記事で設定したOpen vSwtichでポートミラーリングしてみます。
環境は前回と同様、Debian 7.2上で構築したKVMでVMが動作しているとします。
今回はhost01がvnet1
に接続され、host02がvnet2
に接続されている状況を想定しています。
また、以下の作業は全てrootとして行っています。
環境
OS:Debian 7.2
Open vSwitch:1.4.2
host01:vnet1
host02:vnet2
参考にしたサイト
設定
ovsの状態の確認
vnet1
とvnet2
がovsbr0
に接続されていることを確認する。
# ovs-vsctl show 238d066c-8354-4978-a9f4-39a98fa2d2e9 Bridge "ovsbr0" Port "eth0" Interface "eth0" Port "ovsbr0" Interface "ovsbr0" type: internal Port "vnet1" Interface "vnet1" Port "vnet2" Interface "vnet2" ovs_version: "1.4.2"
ミラーリングの設定の確認
何も表示されないことを確認する。
# ovs-vsctl list Mirror #
ミラーリングの設定を作成する
# ovs-vsctl -- set bridge ovsbr0 mirrors=@m -- --id=@vnet1 get Port vnet1 -- --id=@vnet2 get Port vnet2 -- --id=@m create Mirror name=mirror_test select-dst-port=@vnet1 select-src-port=@vnet1 output-port=@vnet2 b073490c-5a64-4d80-93ca-534f29c09027
上記設定では、vnet1
を通るパケットを全てvnet2
にミラーリングしている。
具体的に説明すると、set bridge [設定するbridge名]。今回はovsbr0
。
次に、get Portによってvnet1
とvnet2
のidを取得する。
create Mirror name="ミラーリング名”でMirrorの名前を決める。
select-dst-portは、そのポートから出て行くパケット、select-src-portは、そのポートに入ってくるパケットを指す。今はどちらもvnet1
にしているので、どちらのパケットも対象となっている。
最後にoutput-portでミラーリングしたパケットを出力する場所を決めている。
成功するとidが出力される。
ミラーリングの設定を確認する
# ovs-vsctl list Mirror _uuid : b073490c-5a64-4d80-93ca-534f29c09027 external_ids : {} name : mirror_test output_port : 6b80f606-516c-4304-91a3-0217b02e408b output_vlan : [] select_all : false select_dst_port : [b3ef508f-cdca-4a42-921e-9a96fffff98b] select_src_port : [b3ef508f-cdca-4a42-921e-9a96fffff98b] select_vlan : [] statistics : {tx_bytes=24430, tx_packets=380}
ミラーリングの設定削除
ミラーリングの設定が不要となった場合に全設定を削除するコマンドは以下。
# ovs-vsctl clear bridge ovsbr0 mirrors