Cette section explique comment créer un réseau virtuel qui représente un réseau externe. Sur ce réseau virtuel, le DHCP n'est pas utilisé. A la place, des adresses IP flottantes sont créées. Ces adresses IP flottantes sont affectées à un locataire spécifique et peuvent être affectées à des instances de machine virtuelle Nova en vue de leur utilisation par les utilisateurs dépendant de ce locataire. L'agent Neutron L3 crée automatiquement des mappages NAT bi-univoques entre les adresses affectées aux instances Nova et les adresses IP flottantes.
L'implémentation Oracle Solaris 11.2 de OpenStack Neutron prend en charge un routeur de fournisseur avec modèle de déploiement de réseaux privés. Dans cet un modèle de déploiement, chaque locataire peut disposer d'au moins un réseau privé, et tous les réseaux locataires partagent le même routeur. L'administrateur de données crée, possède et gère le routeur. Le routeur n'est pas visible dans la vue de la topologie réseau du locataire. Etant donné qu'il n'y a qu'un routeur, les réseaux locataires ne peuvent pas utiliser le chevauchement des adresses IP. L'administrateur crée les réseaux privés pour le compte des locataires.
Par défaut, le routeur, dans ce modèle, empêche le routage entre les réseaux privés qui font partie d'un même locataire : les instances de machine virtuelle à l'intérieur d'un réseau privé ne peuvent pas communiquer avec les instances de machine virtuelle d'un autre réseau privé, même en faisant partie du même locataire. Pour modifier ce comportement, définissez allow_forwarding_between_networks sur True dans le fichier de configuration /etc/neutron/l3_agent.ini et redémarrez le service SMF neutron-l3-agent.
Dans ce modèle, le routeur fournit la connectivité des instances de machine virtuelle du locataire au monde extérieur. Le routeur effectue une NAT bidirectionnelle sur l'interface qui connecte le routeur au réseau externe. Les locataires créent autant d'adresses IP flottantes que nécessaire ou qu'autorisées par le quota d'IP flottantes, puis associent ces IP flottantes aux instances de machine virtuelle qui requièrent une connectivité avec l'extérieur.
La figure suivante illustre le modèle de déploiement Neutron {ENT :OS11u2}. Une description suit la figure.
Figure 9 Routeur de fournisseur avec modèle de réseaux privés
Dans le modèle présenté dans la figure précédente, chaque locataire dispose de deux réseaux internes et de deux instances de machine virtuelle.
Réseau HR avec sous-réseau 192.168.100.0/24 et passerelle 192.168.100.1
Réseau ENG sous-réseau 192.168.101.0/24 et passerelle 192.168.101.1
VM1 connectée à HR avec une adresse IP fixe de 192.168.100.3
VM2 connectée à ENG avec une adresse IP fixe de 192.168.101.3
Réseau IT avec sous-réseau 192.168.102.0/24 et passerelle 192.168.102.1
Réseau ACCT avec sous-réseau 192.168.103.0/24 et passerelle 192.168.103.1
VM3 connectée à IT avec une adresse IP fixe de 192.168.102.3
VM4 connectée à ACCT avec une adresse IP fixe de 192.168.103.3
Le tableau NAT bidirectionnelle est configuré comme indiqué dans le tableau suivant.
|
Toutes les interfaces de passerelle sont instanciées sur le noeud qui exécute le service SMF neutron-l3-agent. Bien qu'un Cloud puisse avoir plusieurs instances Neutron, seul un neutron-l3-agent par Cloud est nécessaire.
Le réseau externe est un réseau fournisseur associé au sous-réseau qui 10.134.13.0/24, qui est accessible par l'extérieur. Les locataires créeront les adresses IP flottantes à partir de ce réseau et les associeront à leurs instances de machine virtuelle. VM1 et VM2 ont des adresses IP flottantes 10.134.13.40 et 10.134.13.9 qui leur sont associées respectivement. VM1 et VM2 sont accessibles par l'extérieur via ces adresses IP.
Le diagramme suivant illustre la façon dont les ressources de locataire sont configurées dans un noeud de réseau et deux noeuds de calcul. Les descriptions de certaines fonctions suivent la figure.
Figure 10 Configuration de l'agent Neutron L3
Interface réseau virtuelle.
L'agent L3 a créé une VNIC sur le réseau externe ("e") où la NAT bidirectionnelle se produit.
L'agent L3 a créé une VNIC sur le réseau interne ("i") qui dispose de l'adresse IP de la passerelle par défaut.
La liste ci-dessous présent les modalités d'utilisation des adresses IP dans cet exemple de configuration.
Passerelle par défaut
Adresses IP réservées pour exposer les APIs {ENT :OST} (telles que Nova, Cinder, Glance) aux locataires.
Adresses IP flottantes pour les instances de machine virtuelle du locataire
Cette procédure explique comment utiliser le locataire de servicea fin de créer un routeur, un réseau externe et un sous-réseau externe qui seront utilisés par tous les locataires du centre de données.
Cette procédure est exécutée par l'administrateur de centre de données. Vous devez utiliser la ligne de commande pour configurer le routeur unique partagé et associer des réseaux et des sous-réseaux de différents locataires, car le tableau de bord OpenStack vous permet de gérer les ressources d'un seul locataire à la fois.
Reportez-vous à la Figure 10 pendant l'exécution des opérations ci-après.
Avant de commencer
Vous devez terminer la configuration des réseaux internes avant d'effectuer cette procédure.
network# svcadm enable ipfilter
network# ipadm set-prop -p forwarding=on ipv4 network# ipadm set-prop -p forwarding=on ipv6
Dans l'exemple suivant, l'ID et les valeurs de plage VLAN sont basées sur la configuration EVS effectuée à l'Step 9.
network# evsadm show-controlprop -p vlan-range,l2-type PROPERTY PERM VALUE DEFAULT HOST l2-type rw vlan vlan -- vlan-range rw 13,1000-2000 -- --
network# keystone tenant-list
Le routeur de fournisseur est créé comme l'utilisateur neutron OpenStack sous le locataire de service.
Notez l'UUID (id) du nouveau routeur. Vous en aurez besoin à l'étape suivante.
network# export OS_USERNAME=neutron network# export OS_PASSWORD=neutron-password network# export OS_TENANT_NAME=service network# export OS_AUTH_URL=http://controller-name:5000/v2.0 network# neutron router-create provider_router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | 181543df-40d1-4514-ea77-fddd78c389ff | | name | provider_router | | status | ACTIVE | | tenant_id | f164220cb02465db929ce520869895fa | +-----------------------+--------------------------------------+
Mettez à jour la valeur de routeur_id dans le fichier /etc/neutron/l3_agent.ini, à l'aide de l'UUID (id) de routeur de l'étape précédente.
router_id = 181543df-40d1-4514-ea77-fddd78c389ff
network# svcadm enable neutron-l3-agent
Le réseau virtuel est créé en tant qu'utilisateur neutron {ENT :OST} sous le locataire de service.
network# neutron net-create --provider:network_type=vlan \ --provider:segmentation_id=13 --router:external=true external_network Created a new network: +--------------------------+--------------------------------------+ | Field | Value | +--------------------------+--------------------------------------+ | admin_state_up | True | | id | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f | | name | external_network | | provider:network_type | vlan | | provider:segmentation_id | 13 | | router:external | True | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | f164220cb02465db929ce520869895fa | +--------------------------+--------------------------------------+
Créez un réseau de sous-réseau associé pour le réseau extérieur, en indiquant que le DHCP est désactivé et que le sous-réseau sera utilisé pour le routage externe. Indiquez un sous-réseau IP routable à partir de l'emplacement où les adresses IP seront affectées. Dans cet exemple, le sous-réseau est associé à l'ID de VLAN 13.
network# neutron subnet-create --enable-dhcp=False \ --allocation-pool start=10.134.13.8,end=10.134.13.254 \ --name external_subnet external_network 10.134.13.0/24 Created a new subnet: +------------------+--------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------+ | allocation_pools | {"start": "10.134.13.8", "end": "10.134.13.254"} | | cidr | 10.134.13.0/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 10.134.13.1 | | host_routes | | | id | 5d9c8958-0de0-11e4-9d96-e1f29f417e2f | | ip_version | 4 | | name | external_subnet | | network_id | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f | | tenant_id | f164220cb02465db929ce520869895fa | +------------------+--------------------------------------------------+
Dans la commande suivante, la première UUID est l'UUID du provider_router, et la seconde UUID est celle du external_network.
network# neutron router-gateway-set \ 181543df-40d1-4514-ea77-fddd78c389ff \ f67f0d72-0ddf-11e4-9d95-e1f29f417e2f Set gateway for router 181543df-40d1-4514-ea77-fddd78c389ff network# neutron router-list -c name -c external_gateway_info +-----------------+--------------------------------------------------------+ | name | external_gateway_info | +-----------------+--------------------------------------------------------+ | provider_router | {"network_id": "f67f0d72-0ddf-11e4-9d95-e1f29f417e2f"} | +-----------------+--------------------------------------------------------+
Les réseaux affichés par la commande neutron net-list ont été configurés précédemment.
network# keystone tenant-list +----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | 511d4cb9ef6c40beadc3a664c20dc354 | demo | True | | f164220cb02465db929ce520869895fa | service | True | +----------------------------------+---------+---------+ network# neutron net-list --tenant-id=511d4cb9ef6c40beadc3a664c20dc354 +-------------------------------+------+------------------------------+ | id | name | subnets | +-------------------------------+------+------------------------------+ | c0c15e0a-0def-11e4-9d9f- | HR | c0c53066-0def-11e4-9da0- | | e1f29f417e2f | | e1f29f417e2f 192.168.100.0/24| | ce64b430-0def-11e4-9da2- | ENG | ce693ac8-0def-11e4-9da3- | | e1f29f417e2f | | e1f29f417e2f 192.168.101.0/24| +-------------------------------+------+------------------------------+
Dans la commande suivante, la première UUID est celle du provider_router, et la seconde UUID est celle du sous-réseau HR.
network# neutron router-interface-add \ 181543df-40d1-4514-ea77-fddd78c389ff \ c0c53066-0def-11e4-9da0-e1f29f417e2f (HR subnet UUID) Added interface 7843841e-0e08-11e4-9da5-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.
Dans la commande suivante, la première UUID est celle du provider_router, et la seconde UUID celle du sous-réseau ENG.
network# neutron router-interface-add \ 181543df-40d1-4514-ea77-fddd78c389ff \ ce693ac8-0def-11e4-9da3-e1f29f417e2f Added interface 89289b8e-0e08-11e4-9da6-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.
Voir aussi
Cette procédure est effectuée par un utilisateur locataire avec le tableau de bord Horizon {ENT :OST}.
Connectez-vous, comme indiqué dans la section Accès au tableau de bord OpenStack, avec les informations d'identification de l'utilisateur locataire.
L'onglet IP flottantes indique que l'adresse IP flottante 10.134.13.9 est allouée.
La fenêtre Projet ->Instances indique que l'adresse IP flottante est associée à l'instance de machine virtuelle.
Si vous avez sélectionné une paire de clés (clé publique SSH) lors du lancement d'une instance de machine virtuelle, cette clé SSH sera ajoutée dans le fichier authorized_keys pour l'utilisateur root de l'instance de machine virtuelle.
global# ssh root@10.134.13.9 Last login: Fri Jul 18 00:37:39 2014 from 10.132.146.13 Oracle Corporation SunOS 5.11 11.2 June 2014 root@host-192-168-101-3:~# uname -a SunOS host-192-168-101-3 5.11 11.2 i86pc i386 i86pc root@host-192-168-101-3:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 2 instance-00000001 running / solaris excl root@host-192-168-101-3:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/dhcp inherited ok -- 192.168.101.3/24
Vous pouvez utiliser des commandes de filtre IP, telles que ipf, ippool, et ipnat et des commandes de mise en réseau , telles que dladm et ipadm pour respecter et résoudre les problèmes de la configuration effectuée par neutron-l3-agent.
network# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VIDS l3i7843841e_0_0 net1 1000 2:8:20:42:ed:22 fixed 200 l3i89289b8e_0_0 net1 1000 2:8:20:7d:87:12 fixed 201 l3ed527f842_0_0 net0 100 2:8:20:9:98:3e fixed 0
network# ipadm NAME CLASS/TYPE STATE UNDER ADDR l3ed527f842_0_0 ip ok -- -- l3ed527f842_0_0/v4 static ok -- 10.134.13.8/24 l3ed527f842_0_0/v4a static ok -- 10.134.13.9/32 l3i7843841e_0_0 ip ok -- -- l3i7843841e_0_0/v4 static ok -- 192.168.100.1/24 l3i89289b8e_0_0 ip ok -- -- l3i89289b8e_0_0/v4 static ok -- 192.168.101.1/24
network# ipfstat -io empty list for ipfilter(out) block in quick on l3i7843841e_0_0 from 192.168.100.0/24 to pool/4386082 block in quick on l3i89289b8e_0_0 from 192.168.101.0/24 to pool/8226578 network# ippool -l table role = ipf type = tree number = 8226578 { 192.168.100.0/24; }; table role = ipf type = tree number = 4386082 { 192.168.101.0/24; };
network# ipnat -l List of active MAP/Redirect filters: bimap l3ed527f842_0_0 192.168.101.3/32 -> 10.134.13.9/32 List of active sessions: BIMAP 192.168.101.3 22 <- -> 10.134.13.9 22 [10.132.146.13 36405]