從頭搭建Openstack運行環境(四)--虛機安全組


通過前面三篇《從頭搭建Openstack運行環境》的介紹,我們已經搭建出了一套基本的Openstack運行環境,此環境包含以下部分:

 

5.多租戶虛機測試場景分析與搭建

5.1多租戶場景包含元素:

1)網絡節點和計算節點

2)GRE隧道網絡和vlan網絡

3)三個租戶環境和虛機

    租戶1 tenant1    虛機2台    

    租戶2 tenant2    虛機1台

    租戶3 tenant3    虛機1台

 

從以上場景可以設計出以下的功能測試場景:

1)虛機添加安全組

2)虛機添加floating

3)兩個租戶網絡添加路由

4)兩個租戶網絡添加路由后配置防火牆規則

5)兩個租戶下的虛機通過floating ip實現路由

6)租戶下多個虛機創建loadbalance的VIP

7)對租戶下loadbalance的VIP分配floating ip

下面會對此7個配置場景進行說明

 

5.虛機安全組

說到虛機安全組規則和實現原理有很多資料可以學習,其中最重要的就是iptables規則的配置,可以自己進行學習。下面重點講一下具體配置

虛機安全組在Openstack里有兩種實現方式:

1)通過nova配置實現安全組

2)通過neutron配置實現安全組

我們分別進行一下配置介紹。

 

5.1 nova的安全組配置

5.1.1配置准備

1)虛機安全組規則通過linux bridge橋設備來實現iptables規則,首先在計算節點內核打開bridge的iptable規則

#open bridge iptables function
sysctl -w net.bridge.bridge-nf-call-arptables=1
sysctl -w net.bridge.bridge-nf-call-ip6tables=1
sysctl -w net.bridge.bridge-nf-call-iptables=1

 

2)清空計算節點iptables規則

iptables -F
iptables -X
iptables -Z

5.1.2配置nova安全組基礎規則中,選取前面創建的tenant3的虛機vm04(10.0.2.84)為例

nova安全組只匹配進入虛機的流量,出虛機流量不檢查。並且安全組規則是以虛機為單位,此處可以看到是以虛機ip地址為iptables的配置依據。

安全組的iptables規則涉及iptables的三個鏈INPUT、OUTPUT和FORWARD

iptables -t filter -N nova-compute-FORWARD
iptables -t filter -N nova-compute-INPUT
iptables -t filter -N nova-compute-OUTPUT
iptables -t filter -N nova-compute-inst-04
iptables -t filter -N nova-compute-local
iptables -t filter -N nova-compute-provider
iptables -t filter -N nova-compute-sg-fallback
iptables -t filter -N nova-filter-top
iptables -t filter -A INPUT -j nova-compute-INPUT
iptables -t filter -A FORWARD -j nova-filter-top
iptables -t filter -A FORWARD -j nova-compute-FORWARD
iptables -t filter -A OUTPUT -j nova-filter-top
iptables -t filter -A OUTPUT -j nova-compute-OUTPUT
iptables -t filter -A nova-compute-FORWARD -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
iptables -t filter -A nova-compute-INPUT -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
iptables -t filter -A nova-compute-inst-04 -m state --state INVALID -j DROP
iptables -t filter -A nova-compute-inst-04 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A nova-compute-inst-04 -j nova-compute-provider
iptables -t filter -A nova-compute-inst-04 -s 10.0.2.3/32 -p udp -m udp --sport 67 --dport 68 -j ACCEPT
iptables -t filter -A nova-compute-inst-04 -j nova-compute-sg-fallback
iptables -t filter -A nova-compute-local -d 10.0.2.84/32 -j nova-compute-inst-04
iptables -t filter -A nova-compute-sg-fallback -j DROP
iptables -t filter -A nova-filter-top -j nova-compute-local

 

通過以上配置此時,虛機的網絡訪問能力 = 基本網絡能力(DHCP訪問、允許已建立的連接)。也就是說虛機此時是無法被網絡訪問,比如 ping,ssh 都無法連接。

 

5.1.3添加nova安全組規則(實現訪問虛機ping和ssh)

iptables -t filter -I nova-compute-inst-04 5 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -t filter -I nova-compute-inst-04 5 -p icmp -j ACCEPT
iptables -t filter -A nova-compute-inst-04 5 -s 10.0.2.0/24 -j ACCEPT

5.2 neutron的安全組配置

5.2.1配置准備

1)虛機安全組規則通過linux bridge橋設備來實現iptables規則,首先在計算節點內核打開bridge的iptable規則

#open bridge iptables function
sysctl -w net.bridge.bridge-nf-call-arptables=1
sysctl -w net.bridge.bridge-nf-call-ip6tables=1
sysctl -w net.bridge.bridge-nf-call-iptables=1

2)清空計算節點iptables規則

iptables -F
iptables -X
iptables -Z

5.2.2配置neutron安全組基礎規則中,選取前面創建的tenant3的虛機vm04(10.0.2.84)為例

neutron安全組匹配進入和發出虛機的兩個方向流量,並且安全組規則是以port為依據來進行配置,此處可以看到是以虛機的tap設備為iptables的創建基礎。

安全組的iptables規則涉及iptables的三個鏈INPUT、OUTPUT和FORWARD

iptables -t filter -N neutron-filter-top
iptables -t filter -N neutron-openvswi-FORWARD
iptables -t filter -N neutron-openvswi-INPUT
iptables -t filter -N neutron-openvswi-OUTPUT
iptables -t filter -N neutron-openvswi-i04
iptables -t filter -N neutron-openvswi-local
iptables -t filter -N neutron-openvswi-o04
iptables -t filter -N neutron-openvswi-s04
iptables -t filter -N neutron-openvswi-sg-chain
iptables -t filter -N neutron-openvswi-sg-fallback
iptables -t filter -A INPUT -j neutron-openvswi-INPUT
iptables -t filter -A FORWARD -j neutron-filter-top
iptables -t filter -A FORWARD -j neutron-openvswi-FORWARD
iptables -t filter -A OUTPUT -j neutron-filter-top
iptables -t filter -A OUTPUT -j neutron-openvswi-OUTPUT
iptables -t filter -A neutron-filter-top -j neutron-openvswi-local
iptables -t filter -A neutron-openvswi-FORWARD -m physdev --physdev-out tap04 --physdev-is-bridged -j neutron-openvswi-sg-chain
iptables -t filter -A neutron-openvswi-FORWARD -m physdev --physdev-in tap04 --physdev-is-bridged -j neutron-openvswi-sg-chain
iptables -t filter -A neutron-openvswi-INPUT -m physdev --physdev-in tap04 --physdev-is-bridged -j neutron-openvswi-o04
iptables -t filter -A neutron-openvswi-i04 -m state --state INVALID -j DROP
iptables -t filter -A neutron-openvswi-i04 -m state --state RELATED,ESTABLISHED -j RETURN
iptables -t filter -A neutron-openvswi-i04 -s 10.0.2.3/32 -p udp -m udp --sport 67 --dport 68 -j RETURN
iptables -t filter -A neutron-openvswi-i04 -j neutron-openvswi-sg-fallback
iptables -t filter -A neutron-openvswi-o04 -p udp -m udp --sport 68 --dport 67 -j RETURN
iptables -t filter -A neutron-openvswi-o04 -j neutron-openvswi-s04
iptables -t filter -A neutron-openvswi-o04 -p udp -m udp --sport 67 --dport 68 -j DROP
iptables -t filter -A neutron-openvswi-o04 -m state --state INVALID -j DROP
iptables -t filter -A neutron-openvswi-o04 -m state --state RELATED,ESTABLISHED -j RETURN
iptables -t filter -A neutron-openvswi-o04 -j neutron-openvswi-sg-fallback
iptables -t filter -A neutron-openvswi-s04 -s 10.0.2.84/32 -m mac --mac-source 52:54:00:12:34:63 -j RETURN
iptables -t filter -A neutron-openvswi-s04 -j DROP
iptables -t filter -A neutron-openvswi-sg-chain -m physdev --physdev-out tap04 --physdev-is-bridged -j neutron-openvswi-i04
iptables -t filter -A neutron-openvswi-sg-chain -m physdev --physdev-in tap04 --physdev-is-bridged -j neutron-openvswi-o04
iptables -t filter -A neutron-openvswi-sg-chain -j ACCEPT
iptables -t filter -A neutron-openvswi-sg-fallback -j DROP

 

虛機的網絡訪問能力 = 基本網絡能力(DHCP訪問、允許已建立的連接、防 IP 欺騙)。也就是說虛機此時是無法網絡訪問和被網絡訪問,比如 ping,ssh 都無法連接。

 

5.2.3添加neutron安全組規則(實現訪問虛機ping、ssh和http)

iptables -t filter -I neutron-openvswi-o04 6 -p icmp -j RETURN
iptables -t filter -I neutron-openvswi-i04 4 -p icmp -j RETURN
iptables -t filter -I neutron-openvswi-o04 6 -p tcp -m tcp --dport 22 -j RETURN
iptables -t filter -I neutron-openvswi-i04 4 -p tcp -m tcp --dport 22 -j RETURN
iptables -t filter -I neutron-openvswi-i04 4 -p tcp -m tcp --dport 80 -j RETURN
iptables -t filter -I neutron-openvswi-o04 6 -p tcp -m tcp --dport 80 -j RETURN

5.3總結

通過以上介紹了nova和neutron的安全組功能配置規則,對於iptables的理解還是需要比較深入的,如果想完全理解iptables配置的思路請閱讀參考資料里SammyLiu的系列文章中安全組的章節,謝謝。

 

 


參考資料:

SammyLiu的《Neutron 理解》系列 http://www.cnblogs.com/sammyliu/p/4622563.html

深入理解Neutron -- OpenStack 網絡實現 https://www.gitbook.com/book/yeasy/openstack_understand_neutron/details

 

作者簡介:趙俊峰,現為北京新雲東方系統科技有限責任公司 雲計算部Openstack開發工程師。主要從事Power和x86混合環境下Openstack相關計算、網絡、存儲相關服務軟件開發和系統架構設計工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM