作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化暨分散式安全防護技術方案的介紹與推廣。 

 

 

在接下來這兩篇我想和大家交代一下分散式防火牆 (Distributed Firewall, 以下簡稱DFW) 的架構,以及一些技術細節。在之前數篇網誌不斷有說明的,NSX Distributed Firewall實際上是將封包檢查的process直接在kernel module內執行。像是下面的圖。封包檢查的實際process分散到各台實體伺服器,每台vSphere Host的firewall module僅需負責這台伺服器上所乘載VM的封包檢查。但所有的政策設定則是集中進行組態與更新。

 

圖說:Distributed FW直接於VM之前,Hypervisor內進行封包檢查,但集中進行政策設定

 

下面這張圖顯示DFW間構件的關係。企業的安全管理者可以透過瀏覽器登入vSphere Web Client,由NSX的介面進行防火牆Rule的設定,相關指令會送往NSX Manager。同樣的,外部雲平台 (Cloud Management Platform) 也能透過NSX所提供之Restful API,對NSX Manager進行規則設定。防火牆 Rule變動時,NSX Manager會將規則派送到各台Hypervisor上,並修改對應各VM的防火牆規則

 

圖說:Distributed FW的構件關係

 

下面這張圖應該更直接表示分散式防火牆的運作機制:左邊的藍色線是控制路徑,管理者由NSX Manager要更動防火牆規則時,將指令派送到vSphere Host上的User World Agent,再去更新vSphere Host內的Firewall Kernel Module並更新每個VM的vNIC之防火牆規則。右邊的紅色線則是Ethernet封包路徑,VM由vNIC送出網卡時,封包先送到Firewall Kernel Module並與對應此vNIC的規則進行比對。若比對無誤,才送到Virtual Switch,並後續送到Physical Switch上。

 

圖說:Distributed FW的控制與資料層示意

 

接著,幾個DFW內要與大家highlight的重點

 

  • 從上面的兩張圖有沒有覺得少了什麼東西?對,沒有NSX Controller。DFW不需要Controller DFW不需要Controller DFW不需要Controller(因為很重要所以說三次)。如果客戶僅需要Micro-Segmentation,不需要Logical SW / Logical Router功能的話,Controller是不需要部署的。

 

  • 實際上,防火牆的Rule是直接apply到每台VM的vNIC上。也就是說每個VM的每張vNIC,都會有自己的Firewall Table。Firewall Table屬於VM屬性的一部分,因此當vMotion / DRS / HA等事件發生,VM移動到其他台伺服器時,Firewall Table也會跟著帶過去。

 

  • DFW是防火牆不是ACL DFW是防火牆不是ACL DFW是防火牆不是ACL(因為很重要所以也要說三次)。所以每台VM的vNIC上,也會有對應的session table。FW Session Table同樣屬於VM的一部分,因此當vMotion / DRS等事件發生,VM移動到其他台伺服器時,Session Table也會跟著帶過去。

 

  • 防火牆規則是在vNIC層級進行檢查,虛擬機器無論是部署在實體環境的VLAN上(藉由vDS)或是Logical Switch都會被支持。重點是”虛擬機器”,分散式防火牆是使用ESXi的kernel module來防護所乘載的VM,企業的實體機器安全防護我們是幫不了忙的

 

  • DFW內有分成L2的防火牆(Ethernet)與L3~L4的防火牆(General)。網路封包離開VM時,會先進行L2檢查,再由General防火牆過去。若封包進入VM時則反過來,先由General防火牆檢查,再交給Ethernet FW

 

下面我們要用幾個工程師指令展現給各位看,實際上DFW的防火牆規則是放在VM的網卡上的。首先我們登入一台vSphere Host,然後利用summarize-dvfilter這個指令,可以查到各台此實體伺服器上不同虛擬機器的不同網卡ID。如下圖是看到Finance-Web-SVR-01這台機器的eth0網卡。裡面的vNic slot 2是Distributed FW的功能,名稱叫nic-23973859-eth0-vmware-sfw.2

 

圖說:用summarize-dvfilter查詢VM上vNIC對應之防火牆規則名稱

 

接著,用vsipioctl getrules指令加上剛剛取得的名稱nic-23973859-eth0-vmware-sfw.2,就能看到Finance-Web-SVR-01這台機器的eth0網卡被指定的規則。上面的規則是L3~L4 General FW,下面的規則是L2 Ethernet的FW。

 

圖說:用vsipioctl getrules指令查詢VM上vNIC對應之防火牆規則

 

同樣地我們利用summarize-dvfilter這個指令也可以看到另一台機器Lab-Win7的eth0網卡。裡面的vNic slot 2是Distributed FW的功能,名稱叫nic-56758-eth0-vmware-sfw.2

 

圖說:查詢另一台VM: Lab-Win7上vNIC對應之防火牆規則名稱

 

同樣採用vsipioctl getrules指令,可以看到Lab-Win7這台機器的eth0網卡的防火牆規則。可以看出,兩台虛擬機器都各自有自己的規則設定。

 

圖說:對應VM: Lab-Win7上vNIC對應之防火牆規則