Instalación del controlador de red
Para la gestión de la red vamos a utilizar Quantum que es un proyecto orientado a crear redes en entornos virtuales.
En Quantum hay 3 recursos principales:
- network: hace referencia a la red de nivel 2, similar a una VLAN
- subnet: es el conjunto de direcciones IP y su configuración asociada
- port: es el punto de conexión de un dispositivo (por ejemplo una máquina virtual) y la red
Los componentes principales son los siguientes:
- quantum-server: servicio en Python encargado de procesar todas las peticiones e interactuar con el resto de servicios de la infraestructura (keystone para la autenticación, nova para la asignación de redes a máquinas durante su creación…)
- plugin agent: se ejecuta en cada servidor hypervisor y depende del plugin que estemos utilizando.
- dhcp agent: encargado de proporcionar el servicio DHCP
- l3 agent: encargado de proporcionar el nivel 3 y el enrutado proporcionando acceso a la red a las máquinas virtuales
Los plugins con los que puede funcionar Quantum son los siguientes:
- Open vSwitch
- Cisco
- Linux Bridge
- Nicira NVP
- Ryu
- NEC OpenFlow
Configuración de la red a nivel de sistema operativo
Configuramos la red editando el archivo /etc/network/interfaces:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Red de administracion auto eth0 iface eth0 inet static address 192.168.3.12 netmask 255.255.255.0 gateway 192.168.3.1 dns-nameservers 8.8.8.8 # Data Network auto eth2 iface eth2 inet static address 192.168.5.12 netmask 255.255.255.0 # Public Bridge auto eth1 iface eth1 inet manual up ifconfig $IFACE 0.0.0.0 up up ip link set $IFACE promisc on down ifconfig $IFACE down |
- Editamos el archivo /etc/sysctl.conf :
1 2 3 |
net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 |
- Reiniciamos el servicio de red:
1 |
sudo service networking restart |
- Instalamos NTP
1 |
sudo apt-get install -y ntp |
- Configuramos el archivo /etc/ntp.conf:
1 |
server 192.168.3.11 |
- Reiniciamos el servicio
1 |
sudo service ntp restart |
Openvswitch
- Instalamos los paquetes
1 |
sudo apt-get install quantum-plugin-openvswitch-agent quantum-dhcp-agent quantum-l3-agent |
- Arrancamos el servicio
1 |
sudo service openvswitch-switch start |
- Creamos el interfaz virtual con openvswitch
1 2 3 4 |
ovs-vsctl add-br br-int ovs-vsctl add-br br-ex ovs-vsctl add-port br-ex eth1 ip link set up br-ex |
- Editamos el archivo /etc/quantum/l3_agent.ini:
1 2 3 4 5 6 |
auth_url = http://192.168.3.11:35357/v2.0 admin_tenant_name = service admin_user = quantum admin_password = password metadata_ip = 192.168.3.11 use_namespaces = False |
- Editamos el archivo /etc/quantum/api-paste.ini:
1 2 3 4 |
auth_host = 192.168.3.11 admin_tenant_name = service admin_user = quantum admin_password = password |
- Editamos el archivo /etc/quantum/quantum.conf:
1 2 3 4 5 6 |
core_plugin = \ quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2 auth_strategy = keystone fake_rabbit = False rabbit_host = 192.168.3.11 rabbit_password = password |
- Editamos el archivo /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini:
1 2 3 4 5 6 7 8 9 |
[DATABASE] sql_connection = mysql://quantum:password@192.168.3.11:3306/quantum [OVS] tenant_network_type = gre tunnel_id_ranges = 1:1000 enable_tunneling = True integration_bridge = br-int tunnel_bridge = br-tun local_ip = 192.168.5.12 |
- Editamos el archivo /etc/quantum/dhcp_agent.ini:
1 |
use_namespaces = False |
- Arrancamos los servicios:
1 2 3 |
sudo service quantum-plugin-openvswitch-agent start sudo service quantum-dhcp-agent restart sudo service quantum-l3-agent restart |
Creamos un archivo con las variables de entorno que nos ayudan en la ejecución de los comandos, por ejemplo quantumrc
1 2 3 4 5 6 |
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=password export OS_AUTH_URL="http://192.168.3.1:5000/v2.0/" export SERVICE_ENDPOINT="http://192.168.3.1:35357/v2.0" export SERVICE_TOKEN=password |
- Las inicializamos
1 2 |
source quantumrc echo "source quantumrc">>.bashrc |
- Ahora vamos a crear las redes y subredes (network y subnet) de Quantum, así como un router para conectarnos al exterior. Antes tenemos que obtener los siguientes datos:
- ID del tenant al que vamos a asociar la red
- Nombre de la red
- Por ejemplo, para crear una red para el tenant demo con nombre “demo-net” ejecutamos
1 |
quantum net-create --tenant_id $tenant_id demo-net --provider:network_type gre --provider:segmentation_id 1 |
- Creamos la subred para la red demo-net
1 |
quantum subnet-create --tenant_id $tenant_id --ip_version 4 $tenant_net_id 192.168.5.0/24 --gateway 192.168.5.1 --dns_nameservers list=true 8.8.8.8 |
- Creamos el router para conectar esa red
1 |
quantum router-create --tenant_id $tenant_id provider-router |
- Añadimos un interfaz al router
1 |
quantum router-interface-add $prov_router_id $tenant_subnet_id |
- Seguimos los mismos pasos para crear un router de acceso a la red externa pública
- Creamos la red ext-net
- Creamos una subred con un rango de ips sin DHCP
1 2 |
quantum net-create ext-net -- --router:external=True --provider:network_type gre --provider:segmentation_id 2 quantum subnet-create --ip_version 4 --allocation-pool start=192.168.4.100,end=192.168.4.150 --gateway 192.168.4.1 $ext_net_id 192.168.4.0/24 --enable_dhcp=False |
- Conectamos el router y la red externa
1 |
quantum router-gateway-set $router_id $ext_net_id |
- Configuramos los interfaces de red
1 2 3 |
ip addr flush dev br-ex ip addr add 192.168.4.12/24 dev br-ex ip link set br-ex up |
- Obtenemos el ID de la red externa ext_net
1 |
quantum net-list |
1 |
gateway_external_network_id = ID |
- Obtenemos el ID del router:
1 |
quantum router-list |
- Y lo copiamos en el archivo /etc/quantum/l3_agent.ini:
1 |
router_id = ID |
- Reiniciamos el servicio
1 |
sudo service quantum-l3-agent restart |
¿Te ha gustado la entrada SÍGUENOS EN TWITTER O INVITANOS A UN CAFE?