防火墙即服务 (FWaaS) v2 场景

注意

FWaaS v2 目前不支持 OVN。

FWaaS v2 的安装

如果可能,您应该依赖于 Linux 和/或 OpenStack 发行版提供的软件包

  • 例如,对于 Ubuntu,您可以安装 Canonical 提供的 neutron-fwaas-common 包。

警告

始终检查可用软件包的版本,并查看 https://releases.openstack.org/ 上的发行说明

如果您使用 pip,请按照以下步骤安装 neutron-fwaas

  • 确定与您的 OpenStack 版本匹配的 neutron-fwaas 包的版本

    • 2023.1 Antelope: 最新的 18.0.x 版本

    • Zed: 最新的 17.0.x 版本

  • 指示 pip (a) 仅安装此版本,以及 (b) 考虑 OpenStack 对软件包版本依赖项的上限约束(例如,对于 Antelope)

    pip install -c https://opendev.org/openstack/requirements/raw/branch/stable/2025.2/upper-constraints.txt neutron-fwaas==18.0.0
    

启用 FWaaS v2

  1. /etc/neutron/neutron.conf 文件中启用 FWaaS 插件

    service_plugins = firewall_v2
    
    [service_providers]
    # ...
    service_provider = FIREWALL_V2:fwaas_db:neutron_fwaas.services.firewall.service_drivers.agents.agents.FirewallAgentDriver:default
    
    [fwaas]
    agent_version = v2
    driver = neutron_fwaas.services.firewall.service_drivers.agents.drivers.linux.iptables_fwaas_v2.IptablesFwaasDriver
    enabled = True
    

    注意

    在 Ubuntu 和 Centos 上,修改 /etc/neutron/fwaas_driver.ini 文件中的 [fwaas] 部分,而不是 /etc/neutron/neutron.conf

  2. 为 L3 代理配置 FWaaS 插件。

    l3_agent.iniAGENT 部分,确保加载 FWaaS v2 扩展

    [AGENT]
    extensions = fwaas_v2
    
  3. 配置 ML2 插件代理扩展。

    将以下语句添加到 ml2_conf.ini,该文件通常位于 /etc/neutron/plugins/ml2/ml2_conf.ini

    [agent]
    extensions = fwaas_v2
    
    [fwaas]
    firewall_l2_driver = noop
    
  4. 在数据库中创建所需的表

    # neutron-db-manage --subproject neutron-fwaas upgrade head
    
  5. 重新启动 neutron-l3-agentneutron-openvswitch-agentneutron-server 服务以应用设置。

配置防火墙即服务 v2

创建防火墙规则并创建一个包含它们的策略。然后,创建一个应用该策略的防火墙。

  1. 创建防火墙规则

    $ openstack firewall group rule create --protocol {tcp,udp,icmp,any} \
      --source-ip-address SOURCE_IP_ADDRESS \
      --destination-ip-address DESTINATION_IP_ADDRESS \
      --source-port SOURCE_PORT_RANGE --destination-port DEST_PORT_RANGE \
      --action {allow,deny,reject}
    

    Networking 客户端需要一个协议值。如果规则与协议无关,您可以使用 any 值。

    注意

    当源或目标 IP 地址不是相同的 IP 版本时(例如,IPv6),该命令将返回错误。

  2. 创建防火墙策略

    $ openstack firewall group policy create --firewall-rule \
      "FIREWALL_RULE_IDS_OR_NAMES" myfirewallpolicy
    

    用空格分隔防火墙规则 ID 或名称。您指定规则的顺序很重要。

    您可以创建一个没有规则的防火墙策略,稍后添加规则,如下所示

    • 要添加多个规则,请使用 update 操作。

    • 要添加单个规则,请使用 insert-rule 操作。

    有关更多详细信息,请参阅 OpenStack 命令行界面参考中的 Networking 命令行客户端

    注意

    FWaaS 始终在每个策略的最底优先级添加一个默认的 deny all 规则。因此,没有规则的防火墙策略默认情况下会阻止所有流量。

  3. 创建防火墙组

    $ openstack firewall group create --ingress-firewall-policy \
      "FIREWALL_POLICY_IDS_OR_NAMES" --egress-firewall-policy \
      "FIREWALL_POLICY_IDS_OR_NAMES" --port "PORT_IDS_OR_NAMES"
    

    用空格分隔防火墙策略 ID 或名称。您指定策略的方向很重要。

    注意

    在您创建一个 Networking 路由器并将其连接到一个接口之前,防火墙将保持 PENDING_CREATE 状态。