OpenStack基础环境配置:CentOS 7双网卡与安全策略实战指南
在云计算领域,OpenStack作为开源基础设施即服务(IaaS)平台的代表,其部署前的环境配置往往决定了整个云平台的稳定性和性能表现。本文将深入探讨CentOS 7系统下OpenStack基础环境配置的三个核心环节:双网卡静态IP设置、SELinux策略调整以及防火墙服务管理。不同于简单的命令罗列,我们将从原理层面解析每项配置的必要性,并提供完整的配置示例和验证方法。
1. 双网卡静态IP配置:网络架构的基础
OpenStack环境通常需要至少两块网卡来实现管理流量和业务流量的分离。这种设计不仅能提高网络性能,还能增强安全性。在典型的OpenStack部署中,ens33接口通常用于管理通信(如API调用、SSH访问),而ens34接口则处理虚拟机实例的数据流量。
1.1 网络接口配置文件解析
CentOS 7的网络配置文件位于/etc/sysconfig/network-scripts/目录下,每个接口对应一个以ifcfg-开头的配置文件。以下是ens33(NAT模式)的完整配置示例:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" # 使用静态IP DEFROUTE="yes" # 默认路由 NAME="ens33" DEVICE="ens33" ONBOOT="yes" # 开机自动启用 IPADDR="192.168.1.100" # 根据实际网络环境修改 NETMASK="255.255.255.0" GATEWAY="192.168.1.1" # 网关地址 DNS1="8.8.8.8" # 主DNS服务器 DNS2="8.8.4.4" # 备用DNS服务器对于ens34(仅主机模式)的配置,关键区别在于不设置默认网关:
TYPE="Ethernet" BOOTPROTO="static" NAME="ens34" DEVICE="ens34" ONBOOT="yes" IPADDR="172.16.1.100" # 与ens33不同网段 NETMASK="255.255.255.0" # 注意:不设置GATEWAY参数重要提示:两块网卡的IP地址必须位于不同子网,否则会导致路由冲突。建议使用
ip a命令确认当前网络接口信息后再进行配置。
1.2 网络服务重启与验证
配置完成后,需要重启网络服务使更改生效:
systemctl restart network验证网络配置是否正确的几个关键命令:
# 检查IP地址配置 ip addr show # 测试网络连通性 ping -c 4 8.8.8.8 # 测试外网连通性 ping -c 4 192.168.1.1 # 测试网关连通性 # 查看路由表 route -n1.3 主机名与hosts文件配置
在多节点OpenStack环境中,正确的主机名解析至关重要。设置主机名:
hostnamectl set-hostname controller # 控制节点 # 或 hostnamectl set-hostname compute # 计算节点编辑/etc/hosts文件,添加所有节点的IP和主机名映射:
192.168.1.100 controller 192.168.1.101 compute2. SELinux策略管理:安全与兼容的平衡
SELinux(Security-Enhanced Linux)是Linux内核的安全模块,提供了强制访问控制机制。虽然它能显著增强系统安全性,但在OpenStack部署初期,SELinux可能会导致各种权限问题,因此通常建议暂时将其设置为宽松模式。
2.1 SELinux状态检查与临时调整
查看当前SELinux状态:
getenforce # 可能返回:Enforcing(强制模式)、Permissive(宽松模式)或Disabled(已禁用)临时将SELinux切换到宽松模式:
setenforce 0 # 0表示Permissive,1表示Enforcing2.2 永久禁用SELinux
虽然可以完全禁用SELinux,但从安全角度考虑,建议保持Permissive模式而非完全禁用。编辑配置文件:
vi /etc/selinux/config修改以下参数:
SELINUX=permissive # 或设置为disabled完全禁用注意:SELinux模式的更改需要重启系统才能完全生效。在生产环境中,建议后期根据实际需求调整SELinux策略而非完全禁用。
2.3 OpenStack与SELinux的兼容性考虑
OpenStack的某些组件(如Neutron网络服务)在SELinux启用时可能需要额外的策略配置。常见的SELinux相关命令:
# 查看SELinux上下文 ls -Z /var/lib/nova # 临时允许某类操作 setsebool -P virt_use_nfs 1 # 添加自定义SELinux策略模块 audit2allow -a -M mypolicy semodule -i mypolicy.pp3. 防火墙服务管理:必要的网络控制
CentOS 7默认使用firewalld作为防火墙管理工具。在OpenStack环境中,我们需要在安全性和服务可访问性之间找到平衡点。
3.1 防火墙服务基本操作
查看防火墙状态:
firewall-cmd --state systemctl status firewalld临时停止防火墙:
systemctl stop firewalld禁止防火墙开机自启:
systemctl disable firewalld3.2 OpenStack所需的防火墙规则
如果选择保持防火墙开启,必须为OpenStack各组件开放相应端口。以下是一些关键服务的端口:
| 服务名称 | 端口号 | 协议 | 用途描述 |
|---|---|---|---|
| Keystone | 5000 | TCP | 身份认证API |
| Keystone | 35357 | TCP | 管理API |
| Glance | 9292 | TCP | 镜像服务API |
| Nova | 8774 | TCP | 计算服务API |
| Neutron | 9696 | TCP | 网络服务API |
| Horizon | 80,443 | TCP | Web控制台 |
| MySQL | 3306 | TCP | 数据库服务 |
| RabbitMQ | 5672 | TCP | 消息队列 |
添加防火墙规则的示例:
firewall-cmd --permanent --add-port=5000/tcp firewall-cmd --permanent --add-port=35357/tcp firewall-cmd --reload3.3 防火墙规则持久化与验证
所有使用--permanent参数添加的规则会在防火墙重载或系统重启后依然有效。验证规则是否生效:
firewall-cmd --list-all对于复杂的网络环境,可以考虑使用防火墙区域(zone)来管理不同信任级别的网络接口:
firewall-cmd --permanent --zone=trusted --add-interface=ens34 firewall-cmd --reload4. 系统优化与后续准备
完成上述基础配置后,还需要进行一些系统级优化以确保OpenStack的顺利部署。
4.1 时间同步配置
多节点间的时间同步对OpenStack至关重要。安装并配置chronyd服务:
yum install -y chrony systemctl enable chronyd systemctl start chronyd对于控制节点,编辑/etc/chrony.conf:
server ntp.aliyun.com iburst allow 192.168.1.0/24 # 允许计算节点同步对于计算节点,配置指向控制节点:
server controller iburst验证时间同步状态:
chronyc sources -v timedatectl4.2 系统资源限制调整
OpenStack服务可能需要更多的文件描述符和进程数。编辑/etc/security/limits.conf:
* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 655364.3 软件仓库准备
根据OpenStack版本添加对应的YUM源。以Train版本为例:
yum install -y centos-release-openstack-train yum upgrade -y对于离线环境,需要预先配置本地仓库:
mkdir -p /opt/iaas/{repo,iso} mount -o loop CentOS-7-x86_64-DVD-2009.iso /opt/iaas/iso4.4 验证脚本与故障排查
创建一个综合验证脚本openstack_precheck.sh:
#!/bin/bash echo "===== Network Check =====" ip a echo "" ping -c 4 8.8.8.8 echo "===== SELinux Status =====" getenforce echo "===== Firewall Status =====" systemctl status firewalld echo "===== Time Sync Check =====" chronyc tracking echo "===== Hostname Resolution =====" hostname -f ping -c 4 controller给脚本添加执行权限并运行:
chmod +x openstack_precheck.sh ./openstack_precheck.sh