之前的文章在rocky上配置了,现在换成了Stein,重新试一下。但是原本的步骤好像不太能用了,在官网重新找guide。
移除
FWaaS in Stein - NoMatches: No ‘neutron.service_plugins’ driver found, looking for ‘firewall’
然后呢,为什么不一样呢,看这里
之前我配置的其实是fwaas的v1版本,我以为是v2,然后呢,我在Stein中用v1的时候,报错neutron.service_plugins
中找不到叫firewall的插件。这是因为v1在Stein及以后版本已经被彻底移除了,也就是说只能用v2了。
差别
v2中使用firewall group替代了firewall,一个firewall可以有ingress的策略和egress的策略,这里我可以理解为一个防火墙组可以有两个策略?
然后,v1的firewall和router是唯一绑定的。而v2是可以指定路由接口,这个接口在这里找到。
如果port配置错了,会报错
安装配置
Firewall-as-a-Service (FWaaS) v2 scenario
先安装一下,我不知道官网为什么不用安装,好神奇。
yum install -y openstack-neutron-fwaas
编辑配置文件/etc/neutron/neutron.conf
,如果字段不存存在,直接写进去
service_plugins = firewall_v2
[service_providers]
service_provider = FIREWALL_V2:fwaas_db:neutron_fwaas.services.firewall.service_drivers.agents.agents.FirewallAgentDriver:default
编辑/etc/neutron/fwaas_driver.ini
[fwaas]
agent_version = v2
driver = neutron_fwaas.services.firewall.service_drivers.agents.drivers.linux.iptables_fwaas_v2.IptablesFwaasDriver
enabled = True
编辑/etc/neutron/l3_agent.ini
,我觉得大小写问题不大吧。
[AGENT]
extensions = fwaas_v2
# 或者
[agent]
extensions = fwaas_v2
同步数据库
neutron-db-manage --subproject neutron-fwaas upgrade head
重启服务,然后查看一下status
systemctl restart neutron.server neutron.l3_agent
然后呢,好像不太能使用neutron了,会提示没有资源,只能使用openstack firewall group list
,防火墙组的操作。
而且会默认添加一些基本的防火墙规则。
失败的示例,看后面测试
我发现自带的两个防火墙组分别是demo和admin的。
创建规则
openstack firewall group rule create --name my_172_icmp_in_deny --protocol icmp --ip-version 4 --destination-ip-address 172.16.1.231 --action deny
openstack firewall group rule create --name my_10_icmp_out_allow --protocol icmp --ip-version 4 --source-ip-address 10.0.0.71 --action allow
创建策略
openstack firewall group policy create --firewall-rule 1d51a2cf-0464-4d9e-b2f8-4115b33f96da my_172_in_policy
openstack firewall group policy create --firewall-rule 7087333a-1c1d-4064-9fe0-b3307392f9bd my_10_out_policy
创建防火墙组
openstack firewall group create --ingress-firewall-policy 53b73cb6-a22e-4f20-954a-f2a077979308 --egress-firewall-policy bf37adaf-569e-4a0f-97f3-38f05c6b3d36 --name demo_firewall_group
默认会有两个default防火墙组,因为有两个用户,然后呢,demo用户 的default防火墙得让admin删除好像。
但是删除自己的default以后,他又会自动生成一个默认防火墙,好奇怪。
测试
创建一条规则
openstack firewall group rule create --name my_10_icmp_out_allow --protocol icmp --ip-version 4 --source-ip-address 10.0.0.71 --action deny
添加到规则中
openstack firewall group policy rule add ac24a8df-ae37-4730-87bb-e591f1dbc24f 7087333a-1c1d-4064-9fe0-b3307392f9bd
查看一下防火墙组openstack firewall group list
,如果状态是inactive
,看看是不是没有绑定端口之类的。
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| Description | Default firewall group |
| Egress Policy ID | ac24a8df-ae37-4730-87bb-e591f1dbc24f |
| ID | 5f4d3688-46bd-4f45-a2b9-3406e0fc7f0b |
| Ingress Policy ID | d864c42e-6908-4398-82ef-1a66f1e77f23 |
| Name | default |
| Ports | [] |
| Project | 09baebcf699543f68e4687f2231e4e88 |
| Shared | False |
| State | UP |
| Status | INACTIVE |
| project_id | 09baebcf699543f68e4687f2231e4e88 |
+-------------------+--------------------------------------+
执行下面命令,绑定接口
openstack firewall group set default --port 0d7f9409-ec6d-40a5-8be5-404b9e4957e0
然后启动两个实例,在10.0.0.71中ping172.16.1.231,ping不通,设置成功。
待解决问题
删除default后可能会自动再创建一个default。