標籤:des style blog http color os
OpenStack Neutron FWaaS 學習 ( by quqi99 )
張華 發表於:2013-06-24
著作權聲明:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本著作權聲明 ( http://blog.csdn.net/quqi99 )
另一篇和防火牆相關的文章,OpenStack中的防火牆 ( by quqi99 ) http://blog.csdn.net/quqi99/article/details/7447233
OpenStack的網路組件已經從Quantum更名為Neutron了。之前Quantum就有一個安全性群組的實現,它運行在每一個計算節點上,能夠做到:
1)過濾進入到計算節點上虛機的流量
2)過濾從虛機出來的流量(nova-network並不能實現這一點)
3)過濾虛機之間的流量
安全性群組的一般用法及實現框圖如下:
$nova secgroup-create mygroup description
$nova secgroup-add-rule mygroup tcp 22 22 192.168.1.0/24
$nova boot --flavor 1 --image f16f1d2d-71d6-41b7-98a5-319f142d61f5--security_groups mygroup i1
上述一個安全性群組由一系列的iptable rule組成,rule都是針對soure/dest ip及tcp port的,它不能像下一代的防火牆一樣來表達應用特性像audited rules,也不能提供邊緣防火牆的特性。所以在Neutron提供L4/L7層架構之際,也將推出了FWaaS服務(https://docs.google.com/document/d/1PJaKvsX2MzMRlLGfR0fBkrMraHYF0flvl0sqyZ704tA/edit?pli=1)。
在FWaaS中,tenant可以建立多個Firewall instances,而每一個virtual firewall instance和多個Firewall Policies關聯,每個firewall policies由多個Firewall rules按序組成。不能直接應用一個rule,它必須先加入到一個policy中,因為它需要先審計。如:
多層防火牆的應用情境如:
Neutron L3 agent運行在gateway host上,它通過linux的namespace特性執行個體化多個neutron router,一個tenant能用多個router。見,router中的qr-XXX虛擬介面用於和tenant網路相連,qg-XXX虛擬介面用於跟外部網路相連,防火牆服務應該是過濾出入tenant網路的所有流量,所以firewallpolicy應該是應用在qr-XXX虛擬介面上(iptables出口rule中添加”-oqr-+” a即可,入口規則添加”-iqr-+”即可),如果對所以tenant網路都適用的話可以運用在qg-XXX介面上(但havana的這一版本不會實現這一點,並且也不會實現Zones的概念,一組像上面的qr-XXX介面可以組成一個Zone,也不會檢查address sppofing)。所以防火牆規則不僅應該像之前的安全性群組那個運用到計算節點上,也應該運用在相應的tenant‘srouter的主機相應的namespace下(這即是所謂的邊緣防火牆規則).
參考實現將會有4個chains,出和入各一個,ipv4和ipv6各一個。:
所以相應地在FWaaSAgent中會有幾個方法:
create_firewall(apply_list, fireall),fireall是指一組上面的防火牆規則,apply_list指一些networknamespace
update_firewall(apply_list, fireall)
delete_firewall(apply_list, fireall)
關於將上面的firewallinstance在哪裡應用到VM應涉及到L4/L7服務架構了。以前Neutron只有一級外掛程式結構(像OVS外掛程式,像LinuxBridge外掛程式),但現在引入了L4/L7層服務架構之後變成了兩層,即實現了在一個核心外掛程式(像OVS外掛程式)下再能添加若干個服務(像LBaaS,像FWaaS)。可參見:https://docs.google.com/document/d/1iLzieNKxM7xip_lRidmalAhF_6-Yf1b_cePF4yeAnkQ/edit?pli=1,
相關進階的代碼和BP:
1)Firewallas a Service (FWaaS) APIs and DB Model,https://review.openstack.org/29004
2) FwaaS agent,https://blueprints.launchpad.net/quantum/+spec/quantum-fwaas-agent
3) FwaaS Plugin, https://blueprints.launchpad.net/quantum/+spec/quantum-fwaas-plugin 4) FwaaS ip tables driver https://blueprints.launchpad.net/quantum/+spec/quantum-fwaas-iptables-driver