Neutron 為 instance 提供了兩種管理網絡安全的方法:
安全組(Security Group)和虛擬防火牆。
安全組的原理是通過 iptables 對 instance 所在計算節點的網絡流量進行過濾。
虛擬防火牆則由 Neutron Firewall as a Service(FWaaS)高級服務提供。 其底層也是使用 iptables,在 Neutron Router 上對網絡包進行過濾。
這兩種安全方案我們都會討論,本章先重點學習安全組。
默認安全組
每個 Project(租戶)都有一個命名為 “default” 的默認安全組。
點擊菜單 Project -> Compute -> Access & Security,查看 Security Group 列表。
點擊按鈕,查看 “default” 安全組的規則。
“default” 安全組有四條規則,其作用是: 允許所有外出(Egress)的流量,但禁止所有進入(Ingress)的流量。
當我們創建 instance 時,可以在 “Access & Security” 標簽頁中選擇安全組。 如果當前只有 “default” 這一個安全組,則會強制使用 “default” 。
當前在 devstack-controller 上有 instance “cirros-vm1”。
在 devstack-controller 上執行 iptables-save 命令查看相關規則。 iptables 的規則較多,這里我們節選了 cirros-vm1 相關的規則。
這些規則是 Neutron 根據安全組自動生成的。 如果大家想深入理解 iptables,可 google 相關文檔。
cirros-vm1 的 TAP interface 為 tap8bca5b86-23,可以看到: 1. iptables 的規則是應用在 Neutron port 上的,port 在這里是 cirros-vm1 的虛擬網卡 tap8bca5b86-23。 2. ingress 規則集中定義在命名為 “neutron-linuxbri-i8bca5b86-2” 的 chain 中。 3. egress 規則集中定義在命名為 “neutron-linuxbri-o8bca5b86-2” 的 chain 中。
下面我們通過 dhcp namespace 對 cirros-vm1 進行 ping 和 ssh 測試。
無法 ping 和 ssh cirros-vm1,可見當前的規則實現了 “default” 安全組,所有 ingress 流量都被禁止。
下節我們會創建新的安全組允許 ping 和 ssh。