Réseau privé au projet

Réseau privé au projet

Si vous choisissez le réseau option 2, vous pouvez aussi créer un réseau virtuel privé au projet qui se connecte à l’infrastructure réseau physique via la couche-3 (routing) et le NAT. Ce réseau inclut un serveur DHCP qui fournit des adresses IP aux instances. Une instance sur ce réseau peut accède automatiquement aux réseaux externes comme internet. Néanmoins, l’accès à une instance de ce réseau à partir d’un réseau externe comme internet nécessite une adresse IP flottante.

L’utilisateur demo ou tout autre utilisateur sans privilèges peut créer ce réseau parce qu’il fournit uniquement la connectivité aux instances du projet demo.

Avertissement

Vous devez créer le réseau fournisseur d’accès public avant le réseau privé au projet.

Note

Les instructions et diagrammes suivants utilisent des exemples de plages d’adresses IP. Vous devez ajuster ces plages à votre environnement.

Networking Option 2: Self-service networks - Overview

Réseau Option 2: Réseaux libre-service - Vue d’ensemble

Networking Option 2: Self-service networks - Connectivity

Réseau Option 2: Réseaux libre-service - Connectivité

Créer le réseau privé au projet

  1. Sur le nœud contrôleur, sourcer les credentials demo pour obtenir l’accès aux commandes en ligne utilisateur:

    $ source demo-openrc.sh
    
  2. Créer le réseau:

    $ neutron net-create private
    Created a new network:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | id                    | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
    | mtu                   | 0                                    |
    | name                  | private                              |
    | port_security_enabled | True                                 |
    | router:external       | False                                |
    | shared                | False                                |
    | status                | ACTIVE                               |
    | subnets               |                                      |
    | tenant_id             | f5b2ccaa75ac413591f12fcaa096aa5c     |
    +-----------------------+--------------------------------------+
    

    Les utilisateurs sans privilège ne peuvent en général pas fournir de paramètres supplémentaires à cette commande. Le service choisit automatiquement les paramètres en utilisant les informations des fichiers suivants:

    ml2_conf.ini:

    [ml2]
    tenant_network_types = vxlan
    
    [ml2_type_vxlan]
    vni_ranges = 1:1000
    
  3. Créer un sous-réseau sur le réseau:

    $ neutron subnet-create private PRIVATE_NETWORK_CIDR --name private \
      --dns-nameserver DNS_RESOLVER --gateway PRIVATE_NETWORK_GATEWAY
    

    Remplacer PRIVATE_NETWORK_CIDR par le sous-réseau que vous voulez utiliser sur le réseau privé. Vous pouvez utiliser n’importe quelle valeur arbitraire, bien que nous recommandions un réseau de la RFC 1918.

    Remplacer DNS_RESOLVER par l’adresse IP d’un DNS. Dans la plupart des cas, vous pouvez utiliser un des serveurs DNS dans le fichier /etc/resolv.conf du host.

    Remplacer PRIVATE_NETWORK_GATEWAY par la passerelle que vous voulez utiliser sur le réseau privé, généralement l’adresse IP en ”.1”.

    Exemple

    Le réseau privé utilise 172.16.1.0/24 avec la passerelle sur 172.16.1.1. Un serveur DHCP attribue à chaque instance une adresse IP entre 172.16.1.2 et 172.16.1.254. Toutes les instances utilisent 8.8.4.4 pour la résolution DNS.

    $ neutron subnet-create private 172.16.1.0/24 --name private \
      --dns-nameserver 8.8.4.4 --gateway 172.16.1.1
    Created a new subnet:
    +-------------------+------------------------------------------------+
    | Field             | Value                                          |
    +-------------------+------------------------------------------------+
    | allocation_pools  | {"start": "172.16.1.2", "end": "172.16.1.254"} |
    | cidr              | 172.16.1.0/24                                  |
    | dns_nameservers   | 8.8.4.4                                        |
    | enable_dhcp       | True                                           |
    | gateway_ip        | 172.16.1.1                                     |
    | host_routes       |                                                |
    | id                | 3482f524-8bff-4871-80d4-5774c2730728           |
    | ip_version        | 4                                              |
    | ipv6_address_mode |                                                |
    | ipv6_ra_mode      |                                                |
    | name              | private                                        |
    | network_id        | 7c6f9b37-76b4-463e-98d8-27e5686ed083           |
    | subnetpool_id     |                                                |
    | tenant_id         | f5b2ccaa75ac413591f12fcaa096aa5c               |
    +-------------------+------------------------------------------------+
    

Créer un routeur

Les réseaux de projets privés se connecte aux réseaux fournisseur d’accès public via un routeur virtuel. Chaque routeur possède une interface dans au moins un réseau de projet privé et une passerelle sur un réseau fournisseur d’accès public.

Le réseau fournisseur d’accès public doit inclure l’option router: external pour permettre aux routeurs de projet de les utiliser pour se connecter aux réseaux externes comme internet. L’utilisateur admin ou autre utilisateur à privilèges doit inclure cette option lors de la création du réseau ou l’ajouter plus tard. Dans ce cas, on peut l’ajouter au réseau fournisseur d’accès public existant.

  1. Sur le nœud contrôleur, sourcer les credentials admin pour obtenir l’accès aux commandes en ligne réservées à l’administrateur:

    $ source admin-openrc.sh
    
  2. Ajouter l’option router: external au réseau fournisseur d’accès public:

    $ neutron net-update public --router:external
    Updated network: public
    
  3. Sourcer les credentials demo pour obtenir l’accès aux commandes en ligne simple-utilisateur:

    $ source demo-openrc.sh
    
  4. Créer le routeur:

    $ neutron router-create router
    Created a new router:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | external_gateway_info |                                      |
    | id                    | 89dd2083-a160-4d75-ab3a-14239f01ea0b |
    | name                  | router                               |
    | routes                |                                      |
    | status                | ACTIVE                               |
    | tenant_id             | f5b2ccaa75ac413591f12fcaa096aa5c     |
    +-----------------------+--------------------------------------+
    
  5. Ajouter le sous-réseau du réseau privé comme interface du routeur:

    $ neutron router-interface-add router private
    Added interface bff6605d-824c-41f9-b744-21d128fc86e1 to router router.
    
  6. Définir une passerelle sur le réseau public sur le routeur:

    $ neutron router-gateway-set router public
    Set gateway for router router
    

Vérifier le fonctionnement

Il est recommandé de vérifier le fonctionnement et régler les problèmes avant de procéder. Les étapes suivantes utilisent les plages d’adresses IP des exemples de création de réseau et sous-réseau.

  1. Sur le nœud contrôleur, sourcer les credentials admin pour obtenir l’accès aux commandes en ligne réservées à l’administrateur:

    $ source admin-openrc.sh
    
  2. Lister les espaces de nommage réseau. Vous devriez voir un espace de nommage qrouter et deux espaces de nommage qdhcp.

    $ ip netns
    qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b
    qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083
    qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
    
  3. Lister les ports sur le routeur pour déterminer l’adresse IP de la passerelle sur le réseau fournisseur d’accès public:

    $ neutron router-port-list router
    +--------------------------------------+------+-------------------+------------------------------------------+
    | id                                   | name | mac_address       | fixed_ips                                |
    +--------------------------------------+------+-------------------+------------------------------------------+
    | bff6605d-824c-41f9-b744-21d128fc86e1 |      | fa:16:3e:2f:34:9b | {"subnet_id":                            |
    |                                      |      |                   | "3482f524-8bff-4871-80d4-5774c2730728",  |
    |                                      |      |                   | "ip_address": "172.16.1.1"}              |
    | d6fe98db-ae01-42b0-a860-37b1661f5950 |      | fa:16:3e:e8:c1:41 | {"subnet_id":                            |
    |                                      |      |                   | "5cc70da8-4ee7-4565-be53-b9c011fca011",  |
    |                                      |      |                   | "ip_address": "203.0.113.102"}           |
    +--------------------------------------+------+-------------------+------------------------------------------+
    
  4. Pinguer cette adresse IP à partir du nœud contrôleur ou de tout autre host sur le réseau physique public.

    $ ping -c 4 203.0.113.102
    PING 203.0.113.102 (203.0.113.102) 56(84) bytes of data.
    64 bytes from 203.0.113.102: icmp_req=1 ttl=64 time=0.619 ms
    64 bytes from 203.0.113.102: icmp_req=2 ttl=64 time=0.189 ms
    64 bytes from 203.0.113.102: icmp_req=3 ttl=64 time=0.165 ms
    64 bytes from 203.0.113.102: icmp_req=4 ttl=64 time=0.216 ms
    
    --- 203.0.113.102 ping statistics ---
    rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms
    

Retourner à Lancer une instance - Créer des réseaux virtuels.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.