Skip to main content

Gestión de redes en OpenStack

Procedimientos

  1. Crea una nueva red (llamada red-externa) y una subred con DHCP, DNS el 192.168.202.2 y direccionamiento 192.168.0.0/24. Crea un nuevo router. Conecta la nueva red al router, y el router a red pública.

Para una red:

openstack network create red-externa

openstack subnet create --network red-externa --dhcp --dns-nameserver 192.168.202.2 --subnet-range 192.168.0.0/24 subred-externa

Para crear un router:

openstack router create routersin

openstack router set routersin --external-gateway ext-net
openstack router add subnet routersin subred-externa
  1. Crea una instancia (llamada maquina-router) conectada a la nueva red. Comprueba que la IP fija está en el direccionamiento de la nueva red. ¿Puedes añadirle una IP flotante a la nueva instancia? ¿Por qué?.

Para crear la instancia:

 openstack server create --flavor m1.mini \
--image "Debian 11 Bullseye" \
--security-group default \
--key-name nazareth_local \
--network red-externa \
maquina-router

Para añadir la IP flotante:

 openstack floating ip create ext-net
openstack server add floating ip maquina-router {ip}
  1. Crea una nueva red (llamada red-interna) y una subred con DHCP, DNS el 192.168.202.2 y direccionamiento 10.0.100.0/24.
openstack network create red-interna --internal

openstack subnet create --network red-interna --dhcp --dns-nameserver 192.168.202.2 --subnet-range 10.0.100.0/24 subred-interna
  1. Conecta la instancia maquina-router a la nueva red y asígnale la primera dirección: 10.0.100.1.
  1. Crea una instancia llamada maquina-cliente conectada a la red red-interna. Usando puertos de red asígnale la dirección 10.0.100.200. Comprueba que su puerta de enlace es la instancia maquina-router. ¿Puedes asignarle a esta instancia una IP flotante? ¿Por qué?.
  1. A continuación vamos a configurar la instancia maquina-router para que haga de router-nat. Sin embargo, las restricciones y la seguridad del cortafuegos que tenemos configurado en cada una de las interfaces de las instancias no van a permitir que funcione de forma adecuada. Por lo tanto, desactiva la seguridad de la interfaz de maquina-router y maquina-cliente conectadas a la red-interna.
  1. Configura la instancia maquina-router para que funcione como router-nat. Comprueba que el cliente tiene acceso a internet. Instala un servidor web en el cliente.
  1. Accede desde el exterior con un navegador web al servidor web del cliente.

Entrega

1. Los comandos OSC para crear la red red-externa.

openstack network create red-externa

openstack subnet create --network red-externa --dhcp --dns-nameserver 192.168.202.2 --subnet-range 192.168.0.0/24 subred-externa

2. Los comandos OSC y sus salidas, para visualizar las redes que tienes en tu proyecto y los routers.

(RedLine)  nazare@ThousandSunny  ~$  openstack network list

+--------------------------------------+--------------------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+--------------------------+--------------------------------------+
| 2ebd4d15-00e3-44c6-a9a7-aeebef5f6540 | ext-net | fedce2ca-083e-4df8-bf1c-abbf4ab19cd1 |
| 705f009c-06ec-4b44-82c9-8492713f0a1f | red de nazaret.duran | c51bfa29-134c-4b8e-b1e0-e409a677cd56 |
| 98c1cf52-b499-44fc-bcb1-47c1e1fc5872 | Red DMZ de nazaret.duran | 5c49862b-4cf8-4e18-af20-24a348692a10 |
| fcfaba89-33f9-41f8-9971-72ac95435783 | red-externa | ca685547-1fe3-41a4-bf5b-ce402f807abd |
+--------------------------------------+--------------------------+--------------------------------------+

(RedLine) nazare@ThousandSunny  ~$ openstack subnet list

+--------------------------------------+----------------+--------------------------------------+----------------+
| ID | Name | Network | Subnet |
+--------------------------------------+----------------+--------------------------------------+----------------+
| 5c49862b-4cf8-4e18-af20-24a348692a10 | | 98c1cf52-b499-44fc-bcb1-47c1e1fc5872 | 172.16.0.0/16 |
| c51bfa29-134c-4b8e-b1e0-e409a677cd56 | | 705f009c-06ec-4b44-82c9-8492713f0a1f | 10.0.0.0/24 |
| ca685547-1fe3-41a4-bf5b-ce402f807abd | subred-externa | fcfaba89-33f9-41f8-9971-72ac95435783 | 192.168.0.0/24 |
+--------------------------------------+----------------+--------------------------------------+----------------+

(RedLine) nazare@ThousandSunny  ~$ openstack router list

+--------------------------------------+-------------------------+--------+-------+----------------------------------+
| ID | Name | Status | State | Project |
+--------------------------------------+-------------------------+--------+-------+----------------------------------+
| e6dd515b-321f-431d-8a7f-55ce596a142e | routersin | ACTIVE | UP | cdb0ff7eeae74b1cbb06e4c476c52889 |
| f3f45b48-ec65-4b7f-9e8e-f8034bff6b99 | router de nazaret.duran | ACTIVE | UP | cdb0ff7eeae74b1cbb06e4c476c52889 |
+--------------------------------------+-------------------------+--------+-------+----------------------------------+

3. Cuando crees la instancia maquina-router, accede a ella y comprueba la IP fija que ha tomando. Responde: ¿Has podido añadir una IP flotante a esta nueva instancia? Razona la respuesta.

Como podemos comprobar se ha accedido a la máquina por la IP flotante que se le ha asignado, y si ejecutamos un ip a veremos que la IP fija que ha tomado es de la red:

Term

Sí que se ha podido asignar una IP flotante a la instancia debido a que la red creada está conectada por medio de un router a la red ext-net, la cual es la encargada de proporcionar las IP flotantes y asignarlas.

Term

4. Comandos OSC para conectar la maquina-router a la red-interna y que tenga la dirección 10.0.100.1.

Lo primera será crear un puerto con la dirección que se le quiere asignar a la máquina:

openstack port create --network red-interna --fixed-ip ip-address=10.0.100.1 puertesito

Para conectar la instancia maquina-router añadimos el puerto creado:

openstack server add port maquina-router puertesito

Term

5. Comandos OSC para crear la maquina-cliente con la dirección 10.0.100.200. Responde: ¿Has podido añadir una IP flotante a esta nueva instancia? Razona la respuesta.

Para crear la maquina-cliente, primero es necesario crear un puerto con el que asignaremos la ip y después creamos la máquina usando la opción --port donde se le indica el puerto creado con la ip 10.0.100.200:

openstack port create --network red-interna --fixed-ip ip-address=10.0.100.200 puertete 

openstack server create --flavor m1.mini \
--image "Debian 11 Bullseye" \
--security-group default \
--key-name nazareth_local \
--port puertete \
maquina-cliente

No se ha podido añadir una ip flotante ya que es una red interna y por lo tanto solo se puede acceder a esta por el router haciendo un puente:

ssh -AJ debian@172.22.201.235 debian@10.0.100.200

Como se puede comprobar se ha creado la máquina con maquina-router como gateway:

Term

6. Comandos OSC para deshabilitar la seguridad de los puertos de la red-interna.

Hay que deshabilitar la seguridad de los puertos de la maquina-router y de maquina-cliente, quitando primero los grupos de seguridad a ambas:

openstack server remove security group maquina-router default
openstack server remove security group maquina-cliente default

openstack port set --disable-port-security puertete
openstack port set --disable-port-security puertesito
openstack port set --disable-port-security ccd331c7-2b6e-408e-9f9b-0a3295cd4d1a
openstack port set --disable-port-security 6055d0d0-f199-4db3-b359-cb27f1d12a37

7. Comprobación de que la maquina-cliente tiene conexión al exterior.

Primero hay que configurar la instancia maquina-router para que haga de router-nat:

iptables -t nat -A POSTROUTING -s 10.0.100.0/24 -o ens3 -j SNAT --to 192.168.0.127
iptables -t nat -A PREROUTING -p tcp --dport 80 -i ens3 -j DNAT --to 10.0.100.200:80

Term

Para comprobar que la máquina-cliente tiene conexión con el exterior hacemos un traceroute a la ip de google:

traceroute 8.8.8.8

Term

8. Comprobación del acceso al servidor web de la maquina-cliente desde el exterior.

Montamos el servidor web en la máquina-cliente:

sudo apt update
sudo apt install apache2
sudo systemctl start apache2

Y añadimos un archivo html para comprobar que funciona:

echo "Hola caracola \(= * u * =)/" > /var/www/html/index.html

Luego accedemos a la máquina-router y hacemos un curl a la ip de la máquina-cliente:

Term

Para poder entrar a la misma desde nuestra máquina local se edita el fichero /etc/hosts y se añade la ip de la máquina-router y el nombre que queramos ponerle:

# openstack
172.22.201.235 maquina-cliente.org

Y luego accedemos desde el navegador:

Term

Notas

-Para poder acceder al entorno:

  • Primero ejecutamos el entorno virtual:

    source RedLine/bin/activate

  • Luego dentro ejecutamos:

    source Proyecto\ de\ nazaret.duran-openrc.sh

-IMPORTANTE ACORDARSE DE ACTIVAR EL BIT DE FORWARDING EN EL ROUTER (maquina-router):

sysctl -w net.ipv4.ip_forward=1

or

nano /proc/sys/net/ipv4/ip_forward

-Si da error al hacer update en la maquina-cliente editamos el fichero /etc/apt/sources.list y cambiamos http://deb.debian.org/debian por https://deb.debian.org/debian/ (así con todos) y luego hacemos update y upgrade:

sudo nano /etc/apt/sources.list
sudo apt update
sudo apt upgrade