オープンソースクラウド基盤”Wakame-vdc” 開発苦労話     2011/02/07(月)       @hansode
自己紹介
■自己紹介•吉田将士 / Masahito Yoshida• 株式会社あくしゅ http://axsh.jp/   • 担当: サーバインフラ系   • 時々: プログラミング(Ruby, Perl, PHP, Bourne Shell)•Tw...
“Wakame-vdc”における     開発担当
『Security Groups』ファイヤーウォール機能
今回は、 『Security Groups』開発実装のお話です。
■ 『Security Groups』の機能•AWS(Amazon Web Service)の「Security Groups」相当  •許可ベースのファイヤーウォール     •接続元IPアドレス     •対象項目(tcp,udp,icmp...
『Security Groups』を実装するにあたり、  使用した技術。
2つあります
1. ebtables2. iptables
ここで、会場のみなさんに  質問です。
【Q.1】ebtablesをご存じの方?【Q.2】iptablesをご存じの方?
■ 開発着手前のスキル情報・・・•AWS利用経験は2年  • Wakame-fuel開発で使用  • Security Groupの設定経験あり  • tcp/22とtcp/80を許可する程度の運用経験•iptablesとebtables、名前...
ここからが開発苦労談のはじまりです・・・
もしも(eb|ip)tablesを知らないエンジニアが 『Security Groups』を1ヶ月半で実装したなら     2011/02/07(月)       @hansode
この後、基礎を分かっていれば、 何てこと無い箇所で ハマり続けます!
『Security Groups』機能実装へ向けて、改めて機能確認。
■ 『Security Groups』の機能•AWS(Amazon Web Service)の「Security Groups」相当  •許可ベースのファイヤーウォール     •接続元IPアドレス     •対象項目(tcp,udp,icmp...
「Security Groups」を実装すべく、iptablesでフィルタしてみました。
■ iptableshttp://www.netfilter.org/projects/iptables/iptables is the userspace command line program used to configurethe L...
iptablesによるフィルタ後、         tcpdumpでパケットキャプチャしてみると、、
近隣ノードのパケットが見えている・・!
どうやら、見えているの正体は 『arpパケット』だ。
どうもiptablesでは、arpパケットの制御 までは行えない。
別のフィルタを探し始める。
そして、たどり着いたのが
■ ebtableshttp://ebtables.sourceforge.net/The ebtables program is a filtering tool for a Linux-based bridging    firewall....
iptablesの要領で、ebtablesでフィルタリング      してみると、、
ハマってしまいました・・・
ebtablesでハマった      その1
DHCPとブロードキャスト
■DHCPとブロードキャスト      gw                インスタンスへのIPアドレス割り           DH           CP   当てにはDHCPを利用しており、                インスタンスが...
■DHCPとブロードキャスト      gw                インスタンスへのIPアドレス割り           DH           CP   当てにはDHCPを利用しており、                インスタンスが...
■DHCPとブロードキャスト      gw                DHCPサーバから応答があり、           DH           CP   IPアドレスが割り当てられる。  A
■DHCPとブロードキャスト      gw                DHCPサーバとの通信だけで           DH           CP   なく、                ブロードキャストとの通信を  A      ...
ebtablesでハマった      その2
グループ内インスタンスの  所属ネットワーク
■グループ内インスタンスの場所同一ネットワーク内       gw A          B     A・Bが同一セキュリティグループに所属し、        同一ネットワークに存在する場合
■グループ内インスタンスの場所同一ネットワーク内     gw A        B          AとBが通信出来れば良い
■グループ内インスタンスの場所              ネットワークまたぎ              gw      gw              A           B  A・Bが同じセキュリティグループに所属し、    互いに別ネッ...
■グループ内インスタンスの場所             ネットワークまたぎ             gw       gw             A        B   AとBが通信出来れば良い・・・?
■グループ内インスタンスの場所             ネットワークまたぎ             gw         gw              A         B     相棒インスタンスにではなく、   ゲートウェイとの通信許可...
■グループ内インスタンスの場所同一ネットワーク内         ネットワークまたぎ      gw          gw       gw A         B       A        B     相棒インスタンスの所属するネットワ...
ebtablesでハマった      その3
arpキャッシュ
■arpキャッシュ      gw               A・B間で、許可→拒否→許可。               設定変更を繰り返すと、拒否               しているのに通信可能状態が               発生。 ...
■arpキャッシュ        gw                 arpキャッシュ更新タイミングよ                 りも短い場合、拒否設定時で                 もarp通信出来てしまう状態が        ...
■arpキャッシュ        gw       短時間で変更する場合は、イ                 ンスタンス内のarpテーブルを                 都度削除する必要がある。                 # arp...
■arpキャッシュ        gw       ※この短時間内の変更問題                 は、根本的解決になってない                 ので、今後の課題。  A          B              ...
色々ありましたが、   1ヶ月半で「Security Groups」実装完了しました。
■最終的なパケットフロー (ver.10.11)   ARP       ebtables               ARP                         iptables                IP4       ...
開発を振り返ってみると
ネットワークの勉強になりました・・・
この苦労話が 少しでもみなさんの役に立てば、幸いです。
ご清聴ありがとうございました  http://twitter.com/hansode  http://blog.hansode.org/
Upcoming SlideShare
Loading in …5
×

Wakame-vdc 開発苦労談

3,200 views

Published on

第47回 GRACE セミナー(2011年2月7日開催)

Wakame-vdc 開発苦労談

  1. 1. オープンソースクラウド基盤”Wakame-vdc” 開発苦労話 2011/02/07(月) @hansode
  2. 2. 自己紹介
  3. 3. ■自己紹介•吉田将士 / Masahito Yoshida• 株式会社あくしゅ http://axsh.jp/ • 担当: サーバインフラ系 • 時々: プログラミング(Ruby, Perl, PHP, Bourne Shell)•Twitter: @hansode•Blog: http://blog.hansode.org/ •ここ最近はOpenStackやPuppetの検証記録•趣味: 筋トレ、ボルダリング(インドアクライミング) ⇒最終目標は、片手懸垂。現在、両手で25回程度。
  4. 4. “Wakame-vdc”における 開発担当
  5. 5. 『Security Groups』ファイヤーウォール機能
  6. 6. 今回は、 『Security Groups』開発実装のお話です。
  7. 7. ■ 『Security Groups』の機能•AWS(Amazon Web Service)の「Security Groups」相当 •許可ベースのファイヤーウォール •接続元IPアドレス •対象項目(tcp,udp,icmp / ポート番号) 「例: 192.0.2.10 から tcp/22 への接続を許可」 192.0.2.10 tcp/22
  8. 8. 『Security Groups』を実装するにあたり、 使用した技術。
  9. 9. 2つあります
  10. 10. 1. ebtables2. iptables
  11. 11. ここで、会場のみなさんに 質問です。
  12. 12. 【Q.1】ebtablesをご存じの方?【Q.2】iptablesをご存じの方?
  13. 13. ■ 開発着手前のスキル情報・・・•AWS利用経験は2年 • Wakame-fuel開発で使用 • Security Groupの設定経験あり • tcp/22とtcp/80を許可する程度の運用経験•iptablesとebtables、名前を知っていた程度 • 実際に運用した経験は無い・・・
  14. 14. ここからが開発苦労談のはじまりです・・・
  15. 15. もしも(eb|ip)tablesを知らないエンジニアが 『Security Groups』を1ヶ月半で実装したなら 2011/02/07(月) @hansode
  16. 16. この後、基礎を分かっていれば、 何てこと無い箇所で ハマり続けます!
  17. 17. 『Security Groups』機能実装へ向けて、改めて機能確認。
  18. 18. ■ 『Security Groups』の機能•AWS(Amazon Web Service)の「Security Groups」相当 •許可ベースのファイヤーウォール •接続元IPアドレス •対象項目(tcp,udp,icmp・ポート番号)Amazon EC2内から見ると1. 同一セキュリティグループ内のパケットのみ見える2. tcpdumpやtshark等を実行しても、他グループのパ ケットは見えない3. 例え自分のインスタンスであっても、他グループの パケットは見えてはいけない
  19. 19. 「Security Groups」を実装すべく、iptablesでフィルタしてみました。
  20. 20. ■ iptableshttp://www.netfilter.org/projects/iptables/iptables is the userspace command line program used to configurethe Linux 2.4.x and 2.6.x IPv4 packet filtering ruleset. It is targetedtowards system administrators.Since Network Address Translation is also configured from thepacket filter ruleset, iptables is used for this, too.The iptables package also includes ip6tables. ip6tables is used forconfiguring the IPv6 packet filter. IPv4 packet filtering ruleset.
  21. 21. iptablesによるフィルタ後、 tcpdumpでパケットキャプチャしてみると、、
  22. 22. 近隣ノードのパケットが見えている・・!
  23. 23. どうやら、見えているの正体は 『arpパケット』だ。
  24. 24. どうもiptablesでは、arpパケットの制御 までは行えない。
  25. 25. 別のフィルタを探し始める。
  26. 26. そして、たどり着いたのが
  27. 27. ■ ebtableshttp://ebtables.sourceforge.net/The ebtables program is a filtering tool for a Linux-based bridging firewall. It enables transparent filtering of network traffic passing through a Linux bridge. The filtering possibilities are limited to link layer filtering and some basic filtering on higher network layers. Advanced logging, MAC DNAT/SNAT and brouter facilities are also included. Link layer filtering
  28. 28. iptablesの要領で、ebtablesでフィルタリング してみると、、
  29. 29. ハマってしまいました・・・
  30. 30. ebtablesでハマった その1
  31. 31. DHCPとブロードキャスト
  32. 32. ■DHCPとブロードキャスト gw インスタンスへのIPアドレス割り DH CP 当てにはDHCPを利用しており、 インスタンスがDHCPサーバを探 す為に、、 A
  33. 33. ■DHCPとブロードキャスト gw インスタンスへのIPアドレス割り DH CP 当てにはDHCPを利用しており、 インスタンスがDHCPサーバを探 す為に、ブロードキャストへパ A ケットを送信する。
  34. 34. ■DHCPとブロードキャスト gw DHCPサーバから応答があり、 DH CP IPアドレスが割り当てられる。 A
  35. 35. ■DHCPとブロードキャスト gw DHCPサーバとの通信だけで DH CP なく、 ブロードキャストとの通信を A 許可する必要がある。
  36. 36. ebtablesでハマった その2
  37. 37. グループ内インスタンスの 所属ネットワーク
  38. 38. ■グループ内インスタンスの場所同一ネットワーク内 gw A B A・Bが同一セキュリティグループに所属し、 同一ネットワークに存在する場合
  39. 39. ■グループ内インスタンスの場所同一ネットワーク内 gw A B AとBが通信出来れば良い
  40. 40. ■グループ内インスタンスの場所 ネットワークまたぎ gw gw A B A・Bが同じセキュリティグループに所属し、 互いに別ネットワークに存在する場合
  41. 41. ■グループ内インスタンスの場所 ネットワークまたぎ gw gw A B AとBが通信出来れば良い・・・?
  42. 42. ■グループ内インスタンスの場所 ネットワークまたぎ gw gw A B 相棒インスタンスにではなく、 ゲートウェイとの通信許可設定を行う。
  43. 43. ■グループ内インスタンスの場所同一ネットワーク内 ネットワークまたぎ gw gw gw A B A B 相棒インスタンスの所属するネットワークによって、 通信許可対象が変化する。
  44. 44. ebtablesでハマった その3
  45. 45. arpキャッシュ
  46. 46. ■arpキャッシュ gw A・B間で、許可→拒否→許可。 設定変更を繰り返すと、拒否 しているのに通信可能状態が 発生。 A B
  47. 47. ■arpキャッシュ gw arpキャッシュ更新タイミングよ りも短い場合、拒否設定時で もarp通信出来てしまう状態が ある。 A B arpキャッシュ arpキャッシュ
  48. 48. ■arpキャッシュ gw 短時間で変更する場合は、イ ンスタンス内のarpテーブルを 都度削除する必要がある。 # arp –d <IPアドレス> A B arpキャッシュ arpキャッシュ
  49. 49. ■arpキャッシュ gw ※この短時間内の変更問題 は、根本的解決になってない ので、今後の課題。 A B arpキャッシュ arpキャッシュ
  50. 50. 色々ありましたが、 1ヶ月半で「Security Groups」実装完了しました。
  51. 51. ■最終的なパケットフロー (ver.10.11) ARP ebtables ARP iptables IP4 ICMP ACCEPT DROP TCP UDP IP4 Link Layer Network Layer
  52. 52. 開発を振り返ってみると
  53. 53. ネットワークの勉強になりました・・・
  54. 54. この苦労話が 少しでもみなさんの役に立てば、幸いです。
  55. 55. ご清聴ありがとうございました http://twitter.com/hansode http://blog.hansode.org/

×