faucetのAccess Control Listsを試す
概要
前回の続きで、Faucetからパケットの流れを制御するAccess Control Lists(ACL)機能を使います。
具体的には、パケットの禁止・許可、action(output)の変更を行います。
詳細
環境構築
- まず、前回に加えて、host3(faucet-host3/veth-host3)とhost4(faucet-host4/veth-host4)のNETNSを追加します。例えば下記のような感じで。
> create_ns host3 192.168.0.3/24
> create_ns host4 192.168.0.4/24
- そしてovsのブリッジにもポートを追加します。
> sudo ovs-vsctl add-port br0 veth-host3 -- set interface veth-host3 ofport_request=3 \
-- add-port br0 veth-host4 -- set interface veth-host4 ofport_request=4
faucetにpingをブロックするACLを作る
-
https://docs.faucet.nz/en/latest/tutorials/acls.html#id2 です。
- 環境がくるっていなければ、host1→host4のpingは通りますが、host1→host3のpingは通らないです
output
- mirrorの先にactionのoutputの説明
- 指定したフィールドを書き換えてパケットを送ったりできます。例ではmacアドレスを書き換えています。
- また、output先のportの指定やvlan_idの指定なども例示されています
- vlan_id付与時はフレームフォーマットがIEEE 802.1Qに変更されます
mirror
- ポートを指定してそこにパケットをそのままミラーリングします。
- outputも同じですが、パケットの許可・禁止にかかわらずミラーリングは行われます。
- outputも同じですが、出力先に指定されたポート(例だとhost4)には通信できなくなります。
- dump-flowsを見ると下記のような感じでした。
port指定前
> sudo ovs-ofctl dump-flows br0 | grep in_port=4
cookie=0x5adc15c0, duration=26.211s, table=0, n_packets=5, n_bytes=378, idle_age=9, priority=20480,in_port=4 actions=resubmit(,1)
cookie=0x5adc15c0, duration=26.211s, table=1, n_packets=5, n_bytes=378, idle_age=9, priority=9000,in_port=4,vlan_tci=0x0000/0x1fff actions=mod_vlan_vid:100,resubmit(,2)
cookie=0x5adc15c0, duration=14.872s, table=2, n_packets=3, n_bytes=238, hard_timeout=278, idle_age=9, priority=8191,in_port=4,dl_vlan=100,dl_src=a6:fe:b8:79:3b:a0 actions=resubmit(,3)
port指定後
> sudo ovs-ofctl dump-flows br0 | grep in_port=4
cookie=0x5adc15c0, duration=5.516s, table=1, n_packets=0, n_bytes=0, idle_age=5, priority=9099,in_port=4 actions=drop
感想
- faucetを使うとコントローラーを簡単に作れそうなことがわかりました
- ただfaucetとovsをごちゃごちゃいじってると時々ovsが期待と違う状態になったりするっぽい感じがしました。それともnetnsのせい? よくわからん。
- ところでqiitaのopenflowの記事ってすごい少ないですね
> create_ns host3 192.168.0.3/24
> create_ns host4 192.168.0.4/24
> sudo ovs-vsctl add-port br0 veth-host3 -- set interface veth-host3 ofport_request=3 \
-- add-port br0 veth-host4 -- set interface veth-host4 ofport_request=4
- また、output先のportの指定やvlan_idの指定なども例示されています
- vlan_id付与時はフレームフォーマットがIEEE 802.1Qに変更されます
- dump-flowsを見ると下記のような感じでした。
port指定前
> sudo ovs-ofctl dump-flows br0 | grep in_port=4
cookie=0x5adc15c0, duration=26.211s, table=0, n_packets=5, n_bytes=378, idle_age=9, priority=20480,in_port=4 actions=resubmit(,1)
cookie=0x5adc15c0, duration=26.211s, table=1, n_packets=5, n_bytes=378, idle_age=9, priority=9000,in_port=4,vlan_tci=0x0000/0x1fff actions=mod_vlan_vid:100,resubmit(,2)
cookie=0x5adc15c0, duration=14.872s, table=2, n_packets=3, n_bytes=238, hard_timeout=278, idle_age=9, priority=8191,in_port=4,dl_vlan=100,dl_src=a6:fe:b8:79:3b:a0 actions=resubmit(,3)
port指定後
> sudo ovs-ofctl dump-flows br0 | grep in_port=4
cookie=0x5adc15c0, duration=5.516s, table=1, n_packets=0, n_bytes=0, idle_age=5, priority=9099,in_port=4 actions=drop
- faucetを使うとコントローラーを簡単に作れそうなことがわかりました
- ただfaucetとovsをごちゃごちゃいじってると時々ovsが期待と違う状態になったりするっぽい感じがしました。それともnetnsのせい? よくわからん。
- ところでqiitaのopenflowの記事ってすごい少ないですね
Author And Source
この問題について(faucetのAccess Control Listsを試す), 我々は、より多くの情報をここで見つけました https://qiita.com/hakua-doublemoon/items/aac48089aa5800cc753b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .