---
title: 安装配置并验证Neutron
description: "Neutron为其他服务组件提供网络连接功能，如Nova计算服务组件。同时，提供API给用户使用。支持多个网络供应商的设备和技术。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackqueens_04_008.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackqueens_04_008.html
indexId: ecc6393a3853efcabefd8a53f5372a7205d5183d2efe45b19390b9ffd7e2942283
---
# 安装配置并验证Neutron

Neutron为其他服务组件提供网络连接功能，如Nova计算服务组件。同时，提供API给用户使用。支持多个网络供应商的设备和技术。

OpenStack网络方式比较多，当前以Provider网络方式为例进行说明。部署方式又分为LinuxBridge方式和OVS方式，实际部署时只需要选取两个部署方式中的一种即可。


#### 创建Neutron数据库

在控制节点执行以下操作。

1. 以root身份连接数据库。
  1 mysql -u root -p

2. 创建Neutron数据库。
  1 CREATE DATABASE neutron;

3. 授予适当访问权限，PASSWORD为用户为数据库设置的密码。
  1 2 3 4 GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \ IDENTIFIED BY '<PASSWORD>';

  <PASSWORD>为Neutron数据库的密码。

4. 退出数据库。
  1 exit


#### 创建服务凭据

在控制节点执行以下操作。

1. 使用admin用户登录OpenStack命令行。
  1 source /etc/keystone/admin-openrc

2. 创建Neutron用户。
  1 openstack user create --domain default --password-prompt neutron

3. 将admin角色添加到Neutron用户。
  1 openstack role add --project service --user neutron admin

4. 创建Neutron服务实体。
  1 openstack service create --name neutron --description "OpenStack Networking" network

5. 创建网络服务器API端点。
  1 2 3 openstack endpoint create --region RegionOne network public http://controller:9696 openstack endpoint create --region RegionOne network internal http://controller:9696 openstack endpoint create --region RegionOne network admin http://controller:9696


#### 安装和配置Neutron（Provider-LinuxBridge-控制节点）

在Provider-LinuxBridge-控制节点执行以下操作。

1. 安装组件。
  1 yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge-agent ebtables openstack-neutron-dhcp-agent openstack-neutron-metadata-agent

2. 编辑配置文件/etc/neutron/neutron.conf。

  a. 配置数据库访问。
    1 2 [database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

  b. 修改[DEFAULT]模块内容。
    1 2 3 4 5 6 7 [DEFAULT] core_plugin = ml2 service_plugins = transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true

    service_plugins为赋空值，<PASSWORD>为openstack用户名为rabbit的用户密码。

  c. 配置身份访问。
    1 2 3 4 5 6 7 8 9 10 [keystone_authtoken] www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = <PASSWORD>

  d. 配置[nova]模块参数。
    1 2 3 4 5 6 7 8 9 [nova] auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = <PASSWORD>

  e. 配置锁定路径。
    1 2 [oslo_concurrency] lock_path = /var/lib/neutron/tmp

3. 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。

  a. 启用flat和vlan网络。
    1 2 3 4 5 [ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = linuxbridge extension_drivers = port_security

    tenant_network_types为赋空值。

  b. 将Provider配置为flat网络。
    1 2 [ml2_type_flat] flat_networks = provider

  c. 将vlan配置为flat网络。
    1 2 [ml2_type_vlan] network_vlan_ranges = provider

  d. 启用ipset提高安全效率。
    1 2 [securitygroup] enable_ipset = true

4. 配置Linux桥 代理 ，编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件。

  a. 将Provider虚拟网络映射到物理网络。
    1 2 [linux_bridge] physical_interface_mappings = provider:enp3s0

    此处的Provider网络使用的是enp3s0网口，部署时根据实际情况调整。这里不是管理网络所用的物理网卡，是为业务网络准备的网卡。参考组网环境。

  b. 禁用VXLAN覆盖网络。
    1 2 [vxlan] enable_vxlan = false

  c. 启用安全组并配置Linux网桥iptables防火墙驱动程序，然后保存并退出。
    1 2 3 [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

  d. 确保您的Linux操作系统内核支持网桥过滤器。
    在“/etc/sysctl.conf”中添加如下配置后，保存并退出：

    1 2 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

  e. 运行以下命令，添加网桥过滤器：
    1 2 3 modprobe br_netfilter sysctl -p sed -i '$amodprobe br_netfilter' /etc/rc.local

5. 配置DHCP 代理 。
  编辑“/etc/neutron/dhcp_agent.ini”文件，新增如下配置后保存并退出。

  1 2 3 4 [DEFAULT] interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true

6. 配置元数据 代理 。
  1 vim /etc/neutron/metadata_agent.ini

  配置元数据主机和共享密钥。

  1 2 3 [DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

7. 创建网络初始化。
  1 ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

8. 填充数据库。
  1 su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

9. 启动网络服务并配置为系统引导时启动。
  1 2 3 systemctl enable openstack-neutron-server.service openstack-neutron-linuxbridge-agent.service openstack-neutron-dhcp-agent.service openstack-neutron-metadata-agent.service systemctl start openstack-neutron-server.service openstack-neutron-linuxbridge-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service


#### 安装和配置Neutron（Provider-LinuxBridge-计算节点）

在Provider-LinuxBridge-计算节点执行以下操作。

1. 安装组件。
  1 yum -y install openstack-neutron-linuxbridge-agent ebtables ipset

2. 配置公共组件，编辑/etc/neutron/neutron.conf文件。

  a. 在该[database]部分中，注释掉所有connection选项（默认已注释），因为计算节点不直接访问数据库。
  b. 配置RabbitMQ 消息队列访问。
    1 2 [DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

  c. 配置身份访问服务。
    1 2 3 4 5 6 7 8 9 10 11 12 [DEFAULT] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = <PASSWORD>

  d. 配置锁定路径。
    1 2 [oslo_concurrency] lock_path = /var/lib/neutron/tmp

3. 配置Linux桥代理，编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件，添加以下3项。

  a. 提供者虚拟网络映射到提供者物理网络接口。
    1 2 [linux_bridge] physical_interface_mappings = provider:enp3s0

    此处的provider网络使用的是enp3s0网口，部署时请根据实际情况调整。这里不是管理网络所用的物理网卡，是为业务网络准备的网卡。请参见组网环境。

  b. 禁用VXLAN覆盖网络。
    1 2 [vxlan] enable_vxlan = false

  c. 启用安全组并配置Linux网桥iptables防火墙驱动程序。
    1 2 3 [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

4. 确保您的Linux操作系统内核支持网桥过滤器。
  在“/etc/sysctl.conf”中添加：

  1 2 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

  :

5. 运行以下命令，添加网桥过滤器。
  1 2 3 modprobe br_netfilter sysctl -p sed -i '$amodprobe br_netfilter' /etc/rc.local

6. 启动Linux网桥代理并将其配置为在系统引导时启动。
  1 2 systemctl enable openstack-neutron-linuxbridge-agent.service systemctl start openstack-neutron-linuxbridge-agent.service


#### 安装和配置Neutron（Provider-OVS-控制节点）

在Provider-OVS-控制节点执行以下操作。

1. 安装组件。
  1 yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch-agent openstack-neutron-dhcp-agent openstack-neutron-metadata-agent ebtables

2. 修改系统配置文件“/etc/sysctl.conf”。

  a. 添加如下内容：
    1 2 3 net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

  b. 使配置生效。
    1 sysctl -p

3. 编辑配置文件/etc/neutron/neutron.conf。

  a. 配置数据库访问。
    1 2 [database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

  b. 启用ML2插件，禁用其他插件。
    1 2 3 4 5 6 7 [DEFAULT] core_plugin = ml2 service_plugins = transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true

  c. 配置身份访问。
    1 2 3 4 5 6 7 8 9 10 [keystone_authtoken] www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = <PASSWORD>

  d. 配置nova参数。
    1 2 3 4 5 6 7 8 9 [nova] auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = <PASSWORD>

  e. 配置锁定路径。
    1 2 [oslo_concurrency] lock_path = /var/lib/neutron/tmp

4. 编辑ML2插件“/etc/neutron/plugins/ml2/ml2_conf.ini”。

  a. 启用flat和vlan网络。
    1 2 3 4 5 6 7 8 9 10 11 [ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = openvswitch extension_drivers = port_security [ml2_type_flat] flat_networks = provider [ml2_type_vlan] network_vlan_ranges = provider [securitygroup] enable_ipset = true

5. 配置DHCP代理。
  编辑“/etc/neutron/dhcp_agent.ini”文件。

  1 2 3 4 5 [DEFAULT] dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true interface_driver = openvswitch force_metadata = true

6. 配置元数据代理。
  编辑“/etc/neutron/metadata_agent.ini”。

  配置元数据主机和共享密钥。

  1 2 3 [DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

  <PASSWORD>为Neutron数据库的密码。

7. 创建网络初始化。
  1 ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

8. 填充数据库。
  1 2 su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

9. 启动网络服务并配置为系统引导时启动。
  1 2 3 4 5 6 systemctl enable openstack-neutron-server.service \ openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service systemctl start openstack-neutron-server.service \ openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service


#### 安装和配置Neutron（Provider-OVS-计算节点）

在Provider-OVS-计算节点执行以下操作。

1. 安装组件。
  1 yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch-agent openstack-neutron-dhcp-agent openstack-neutron-metadata-agent ebtables ipset

2. 修改系统配置文件 /etc/sysctl.conf。

  a. 添加如下内容：
    1 2 3 net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

  b. 使配置生效。
    1 sysctl -p

3. 配置公共组件，编辑/etc/neutron/neutron.conf文件。

  a. 配置RabbitMQ消息队列访问。
    1 2 [DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

    <PASSWORD>为RabbitMQ服务为openstack用户设置的密码。

  b. 配置身份访问服务。
    1 2 3 4 5 6 7 8 9 10 11 12 [DEFAULT] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = <PASSWORD>

    <PASSWORD>为Neutron数据库的密码。

  c. 配置锁定路径。
    1 2 [oslo_concurrency] lock_path = /var/lib/neutron/tmp

4. 配置openstack agent，编辑文件“/etc/neutron/plugins/ml2/openvswitch_agent.ini”，新增[linux_openvswitch]、[vxlan]、[ovs]和[securitygroup]。
  1 2 3 4 5 6 7 8 9 [linux_openvswitch] physical_interface_mappings = provider:enp3s0 [vxlan] enable_vxlan = false [ovs] bridge_mappings = provider:br-provider [securitygroup] enable_security_group=true firewall_driver = iptables_hybrid

5. 配置DHCP代理，编辑“/etc/neutron/dhcp_agent.ini”文件。
  1 2 3 4 [DEFAULT] interface_driver = openvswitch enable_isolated_metadata = true force_metadata = true

6. 配置metadata代理，编辑“/etc/neutron/metadata_agent.ini”文件。
  1 2 3 [DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

  <PASSWORD>为Neutron数据库的密码。

7. 启动OVS代理并将其配置为在系统引导时启动。
  1 2 3 4 systemctl enable openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service systemctl start openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service

8. 创建ovs provider。
  1 2 ovs-vsctl add-br br-provider ovs-vsctl add-port br-provider enp3s0

  openvswitch-agent如果拿不到root权限会导致Open vSwitch服务启动失败，需要升级sudo软件包。 yum update sudo


#### 验证Neutron

在控制节点执行以下操作。

1. 列出成功启动的Neutron代理。
  1 openstack network agent list


**表1 Neutron常用命令**

| 命令行 | 功能描述 |
| --- | --- |
| openstack network create \-\-share \-\-external \ \-\-provider\-physical\-network provider \ \-\-provider\-network\-type flat enp3s0 | 创建共享虚拟网络 |
| openstack subnet create \-\-network provider \ \-\-allocation\-pool start=172.168.204.50,end=172.168.204.100 \ \-\-dns\-nameserver 8.8.8.8 \-\-gateway 172.168.204.1 \ \-\-subnet\-range 172.168.204.0/24 subnet1 | 创建子网络 说明： 该命令中的参数意为：网络名称为subnet1，DHCP范围为172.168.204.50～172.168.204.100，DNS为8.8.8.8，网关为172.168.204.1，网络为172.168.204.0/24。 |
| openstack network list | 查看当前网络 |
| openstack subnet list | 查看子网络 |
| openstack port list | 查看网络端口 |
