Quantcast
Channel: VMware Communities : Blog List - All Communities
Viewing all articles
Browse latest Browse all 3135

NSX 6.2 の DFW ルール設定をマルチテナント構成にしてみる。

$
0
0

NSX for vSphere 6.2.4 の分散ファイアウォール(DFW)は、マルチテナント機能を持っていません。

DFW で設定する FW ルールは、デフォルトでは NSX Manager で管理する DFW 環境すべてに適用されます。

そこで、DFW ルールの「適用先」を指定することでルールの適用先をしぼり、マルチテナントっぽくしてみました。

※vForum 2016 Tokyo の SDDCブースあたりで聞いた話を、実際にためしてみました・・・

 

完成イメージ。

いきなりですが、最初に DFW ルールの完成イメージです。

  • テナントを2つあるものとします。(tenant01 と tenant02)
  • テナントごとに、DFW ルールのセクション(dfw-tenant-01 と dfw-tenant-02)を作成してみました。
  • セクションに含まれるルールには、必ず「適用先」にセキュリティグループを含めます。
    それぞれのセキュリティグループには、テナント内の全 VM を含むようにします。
    FW ルールは上から評価されるため、別テナントの FW ルールのが適用されてしまわないように
    かならず「適用先」を設定するようにします。
  • Default でブロックするルールは、デフォルト セクションで設定することができますが、
    わかりやすいのであえてテナントごとに追加してみました。

dfw-mt-1-01.png

 

テナント / VM 構成について。

今回の構成では、2つテナントを用意してみました。
DFW の機能には関係ありませんが、わかりやすくテナントごとにフォルダ分けしてあります。

セキュリティグループで管理しやすいように、VMの名前を工夫しています。

  • tenant01 の VM → t01-~
  • tenant02 の VM → t02-~

dfw-mt-2-01.png

 

セキュリティグループの構成について。

テナントごとに、テナント内の全 VM を含むセキュリティグループを作成してみました。

それぞれのセキュリティグループには、3台の VM が含まれています。

dfw-mt-3-01.png

 

今回はテナントごとに VM 名の先頭文字列を決めてあるので、
セキュリティグループの「動的メンバーシップの定義」 で、
「仮想マシン名」 の 「先頭が」 「t01-」(tenant02では、「t02-」) と設定しています。

これで、命名規則どおりの VM であれば、セキュリティグループに自動追加されるようになります。

dfw-mt-3-02.png

 

DFW ルールの「適用先」 の設定について。

例として、tenant02 の DFW ルールの1つに、セキュリティグループ 「secgr-tenant-02」 を設定してみます。


DFW ルールの適用先は、デフォルトでは「Distributed Firewall」 となっています。

ここに、セキュリティグループを設定してみます。

dfw-mt-4-01.png

 

編集ボタンをクリックすると、

「Distributed Firewall がインストールされているすべてのクラスタにこのルールを適用します。」にチェックが入っています。

dfw-mt-4-02.png

 

このチェックを外すと適用先のオブジェクトタイプが選択できるようになるので、
「Security Group」 を選択します。

dfw-mt-4-03.png

 

セキュリティグループを選択しました。

dfw-mt-4-04.png

 

「変更の発行」 をクリックすると、DFW のルールが反映されます。

dfw-mt-4-05.png

 

テナントごとに DFW ルールの適用先が揃えて、下記のような感じにします。

ここで表示されている「ルール ID」は、あとで DFW の適用状態の確認で使用します。

dfw-mt-4-06.png

 

ちなみに、セキュリティグループのリンクをクリックすると、所属している VM を確認することができます。

dfw-mt-4-07.png

 

DFW ルールの適用状態を確認してみる。

DFW ルールが適用されているか、ESXi に SSH ログインして見てみます。

summarize-dvfilter コマンドで VM (vNIC)ごとの DVFilter の名前を確認して、

それをもとに vsipioctl コマンドでルールを確認します。

 

まず、tenant01 に含まれる、t01-web01 という VM のDFW ルールを見てみます。

vNIC は 2つありますが、片方を確認すれば十分とおもわれるので eth0 のに設定されたルールを見てみます。

[root@hv-i21:~] summarize-dvfilter | grep t01-web01 -A5

world 7733173 vmm0:t01-web01 vcUuid:'50 09 f2 fe 1b 1d 2d e5-f8 33 8c 17 4f d0 91 2e'

port 50331775 t01-web01.eth0

  vNic slot 2

   name: nic-7733173-eth0-vmware-sfw.2

   agentName: vmware-sfw

   state: IOChain Attached

   vmState: Detached

--

port 50331776 t01-web01.eth1

  vNic slot 2

   name: nic-7733173-eth1-vmware-sfw.2

   agentName: vmware-sfw

   state: IOChain Attached

   vmState: Detached

[root@hv-i21:~]

 

フィルタ名をもとに、DFW ルールを確認します。

今回設定したルールは ID が 1008 ~ 1013 なので、赤字の部分のみが関係します。

tenant01 むけに設定したルール (1009、1011、1012) だけが設定されていることが分かります。

[root@hv-i21:~] vsipioctl getrules -f nic-7733173-eth0-vmware-sfw.2

ruleset domain-c7 {

  # Filter rules

rule 1009 at 1 inout protocol any from any to addrset ip-virtualwire-26 accept;

  rule 1011 at 2 inout protocol any from addrset ip-virtualwire-25 to addrset ip-virtualwire-25 accept;

  rule 1012 at 3 inout protocol any from any to any drop;

  rule 1007 at 4 inout protocol udp from addrset ip-securitygroup-10 to addrset ip-vm-465 port 67 accept;

  rule 1006 at 5 inout inet protocol udp from addrset ip-securitygroup-10 to any port 67 reject;

  rule 1005 at 6 in inet protocol udp from any to addrset ip-vm-465 port 67 reject;

  rule 1003 at 7 inout protocol ipv6-icmp icmptype 136 from any to any accept;

  rule 1003 at 8 inout protocol ipv6-icmp icmptype 135 from any to any accept;

  rule 1002 at 9 inout protocol udp from any to any port 68 accept;

  rule 1002 at 10 inout protocol udp from any to any port 67 accept;

  rule 1001 at 11 inout protocol any from any to any accept;

}


ruleset domain-c7_L2 {

  # Filter rules

  rule 1004 at 1 inout ethertype any from any to any accept;

}


[root@hv-i21:~]

 

次に、tenant02 に含まれる、t02-web01 という VM のDFW ルールを見てみます。

こちらも vNIC が 2つありますが、eth0 のに設定されたルールだけ見てみます。

[root@hv-i23:~] summarize-dvfilter | grep t02-web01 -A5

world 7676381 vmm0:t02-web01 vcUuid:'50 09 46 a8 08 76 3f da-7c 6e ec 30 3b 28 67 c0'

port 50331717 t02-web01.eth0

  vNic slot 2

   name: nic-7676381-eth0-vmware-sfw.2

   agentName: vmware-sfw

   state: IOChain Attached

   vmState: Detached

--

port 50331718 t02-web01.eth1

  vNic slot 2

   name: nic-7676381-eth1-vmware-sfw.2

   agentName: vmware-sfw

   state: IOChain Attached

   vmState: Detached

[root@hv-i23:~]

 

フィルタ名をもとに、DFW ルールを確認します。

tenant01 むけに設定したルール (1008、1010、1013) だけが設定されていることが分かります。

[root@hv-i23:~] vsipioctl getrules -f nic-7676381-eth0-vmware-sfw.2

ruleset domain-c7 {

  # Filter rules

  rule 1008 at 1 inout protocol any from any to addrset ip-virtualwire-26 accept;

  rule 1010 at 2 inout protocol any from addrset ip-virtualwire-27 to addrset ip-virtualwire-27 accept;

  rule 1013 at 3 inout protocol any from any to any drop;

  rule 1007 at 4 inout protocol udp from addrset ip-securitygroup-10 to addrset ip-vm-465 port 67 accept;

  rule 1006 at 5 inout inet protocol udp from addrset ip-securitygroup-10 to any port 67 reject;

  rule 1005 at 6 in inet protocol udp from any to addrset ip-vm-465 port 67 reject;

  rule 1003 at 7 inout protocol ipv6-icmp icmptype 136 from any to any accept;

  rule 1003 at 8 inout protocol ipv6-icmp icmptype 135 from any to any accept;

  rule 1002 at 9 inout protocol udp from any to any port 68 accept;

  rule 1002 at 10 inout protocol udp from any to any port 67 accept;

  rule 1001 at 11 inout protocol any from any to any accept;

}


ruleset domain-c7_L2 {

  # Filter rules

  rule 1004 at 1 inout ethertype any from any to any accept;

}


[root@hv-i23:~]

 

DFW をマルチテナント環境っぽく使用することは可能ですが、

このような感じで、オブジェクト名やグルーピングなどで工夫が必要そうです。

 

以上、DFW ルールをマルチテナントっぽく設定してみる話でした。


Viewing all articles
Browse latest Browse all 3135

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>