NSX-T の分散ファイアウォール(DFW)を、VLAN セグメントで使用してみます。
前回は、簡単な動作確認をしてみました。
NSX-T 3.0: DFW を VLAN セグメントで使用してみる。(前編)
今回は、vNIC のポートグループを「VLAN セグメント」と「分散ポートグループ」に
それぞれ切りかえて、DFW ルール適用の様子を確認してみます。
今回の DFW ルール。
NSX Manager の「分散ファイアウォール」の画面を確認すると、
ID 3048 の DFW ルールが作成されて、有効になっています。
このルールは、適用先が「分散ファイアウォール (DFW)」となっており、
基本的には NSX 環境内のすべての VM、つまりホスト トランスポート ノード上で
NSX によるセグメントに接続されているすべて VM に適用されます。
(例外もありますが、今回は省略)
ちなみに、今回は DFW ルールの適用される様子を見るだけなので、
通信は遮断しない(アクション: 許可)ルールにしてあります。
「VLAN セグメント」接続の vNIC と DFW ルール。
VM「vm01」の vNIC が、NSX-T による VLAN セグメント「seg-vlan-0006」に接続されています。
この VLAN セグメントは前回の投稿で作成したもので、VLAN ID 6 が設定されています。
それでは、vm01 が起動されている ESXi ホストに SSH 接続して、
vNIC への DFW ルール適用の様子を確認します。
まず に、DFW のルールが作成されている vNIC を確認しておきます。
ESXi に SSH ログインした状態です。
[root@lab-nsx-esxi-21:~] vmware -vl
VMware ESXi 7.0.0 build-16324942
VMware ESXi 7.0 GA
vm01 が起動しています。
この VM の World ID(371855)を記録しておきます。
[root@lab-nsx-esxi-21:~] esxcli network vm list
World ID Name Num Ports Networks
-------- ---- --------- --------
371855 vm01 1
summarize-dvfilter で、vm01 の vNIC に適用されている dvfilter を探します。
赤字の部分が、vm01 の vNIC にあたります。
[root@lab-nsx-esxi-21:~] summarize-dvfilter
Fastpaths:
agent: dvfilter-generic-vmware, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: dvfilter-generic-fastpath
agent: vmware-si, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: nsxt-vsip-15945874
agent: vmware-sfw, refCount: 4, rev: 0x1010000, apiRev: 0x1010000, module: nsxt-vsip-15945874
agent: nsx_bridgelearningfilter, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: nsxt-vdrb-15945874
agent: ESXi-Firewall, refCount: 3, rev: 0x1010000, apiRev: 0x1010000, module: esxfw
agent: dvfilter-faulter, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: dvfilter
ServiceVMs:
serviceVM: 1, agent vmware-sfw, refCount: 2, rev: 0x4, apiRev: 0x4, capabilities: csum,tso
serviceVM: 2, agent vmware-sfw, refCount: 1, rev: 0x4, apiRev: 0x4, capabilities: csum,tso
Filters:
world 0 <no world>
port 67108877 vmk0
vNic slot 0
name: nic-0-eth4294967295-ESXi-Firewall.0
agentName: ESXi-Firewall
state: IOChain Attached
vmState: Detached
failurePolicy: failOpen
serviceVMID: none
filter source: Invalid
moduleName: esxfw
port 67108878 vmk1
vNic slot 0
name: nic-0-eth4294967295-ESXi-Firewall.0
agentName: ESXi-Firewall
state: IOChain Attached
vmState: Detached
failurePolicy: failOpen
serviceVMID: none
filter source: Invalid
moduleName: esxfw
world 371855 vmm0:vm01 vcUuid:'50 07 76 2d a1 08 3d 62-94 8a 57 ce fd 77 9c aa'
port 67108883 vm01.eth0
vNic slot 2
name: nic-371855-eth0-vmware-sfw.2
agentName: vmware-sfw
state: IOChain Attached
vmState: Attached
failurePolicy: failClosed
serviceVMID: 1
filter source: Dynamic Filter Creation
moduleName: nsxt-vsip-15945874
さきほど確認した、VM の World ID をもとにすると、
vm01 のフィルタの名前を見つけやすいかなと思います。
vm01 の 1つめの vNIC(ゲスト OS の種類に関係なく eth0)のフィルタ名
「nic-371855-eth0-vmware-sfw.2」を見つけました。
[root@lab-nsx-esxi-21:~] summarize-dvfilter | grep 371855
world 371855 vmm0:vm01 vcUuid:'50 07 76 2d a1 08 3d 62-94 8a 57 ce fd 77 9c aa'
name: nic-371855-eth0-vmware-sfw.2
そしてフィルタ名を指定して「vsipioctl getrules」コマンドを実行すると、
DFW のルールが実際に設定されている様子がわかります。
さきほど NSX Manager でも確認できた、ID 3048 のルールが表示されており、
vm01 の vNIC に DFW ルールが適用されていることがわかります。
[root@lab-nsx-esxi-21:~] vsipioctl getrules -f nic-371855-eth0-vmware-sfw.2
ruleset mainrs {
# generation number: 0
# realization time : 2020-10-07T17:00:19
# FILTER rules
rule 3048 at 1 inout protocol any from any to any accept;
rule 2 at 2 inout protocol any from any to any accept;
}
ruleset mainrs_L2 {
# generation number: 0
# realization time : 2020-10-07T17:00:19
# FILTER rules
rule 1 at 1 inout ethertype any stateless from any to any accept;
}
ちなみに、DFW が適用されていることは nsxcli コマンドでも確認できます。
この ESXi で起動されている VM(の vNIC)が 1つだけなので、Firewall VIF が 1件表示されています。
[root@lab-nsx-esxi-21:~] nsxcli -c "get firewall vifs"
Firewall VIFs
----------------------------------------------------------------------
VIF count: 1
1 1db50096-f1b8-44a2-8639-8ed6ac641446
「vDS の分散ポートグループ」接続の vNIC と DFW ルール。
続いて、NSX-T の VLAN セグメントと同じ VLAN ID の分散ポートグループを適用して、
DFW ルールの変化を確認してみます。(結果として DFW ルールは消えます)
vDS「vds-21」に作成されている、分散ポートグループの一覧です。
今回は NSX で利用している vDS に、VLAN セグメントと同様に、
VLAN ID 6 の分散ポートグループ「dvpg-vlan-0006」を作成しました。
vm01 の vNIC のポートグループを、分散ポートグループである「dvpg-vlan-0006」に変更します。
分散ポートグループに変更されました。
このポートグループ変更より、DFW ルールが即時変更されます。
ESXi で summarize-dvfilter を実行してみると、
vm01 の「nic-371855-eth0-vmware-sfw.2」フィルタは存在したままです。
[root@lab-nsx-esxi-21:~] summarize-dvfilter | grep 371855
world 371855 vmm0:vm01 vcUuid:'50 07 76 2d a1 08 3d 62-94 8a 57 ce fd 77 9c aa'
name: nic-371855-eth0-vmware-sfw.2
しかし、vsipioctl getrules コマンドで確認すると、DFW ルールが消えて「No rules」になりました。
[root@lab-nsx-esxi-21:~] vsipioctl getrules -f nic-371855-eth0-vmware-sfw.2
No rules.
nsxcli コマンドでも 1件表示されていた VIF がなくなり、
Firewall VIF のカウントがゼロになっています。
[root@lab-nsx-esxi-21:~] nsxcli -c "get firewall vifs"
Firewall VIFs
----------------------------------------------------------------------
VIF count: 0
このように、VM が起動する ESXi が NSX-T のホスト トランスポート ノードとして設定されていたとしても、
vSS の標準ポートグループや vDS の分散ポートグループに接続された vNIC には、DFW ルールが適用されません。
DFW はオーバーレイ ネットワークでなくても使用できますが、
VLAN ネットワークで使用する場合、vNIC には「VLAN セグメント」を割り当てる必要があります。
以上、DFW を VLAN セグメントで使用してみる話でした。