ROUTER-OPENSTACK-VPN-OPENSTACK-001 -- Consideraciones para montar routers y servidores openvpn en instancias openstack


#1

1. Introducción

A continuación se reflejan notas sobre cómo montar servidores OpenVpn o IPsec o routers firewalls linux de segmentación sobre OpenStack.

2. Pasos

  1. Dar de alta servidor OpenStack con las interfaces que se necesiten sin nada en particular:
  • Si es un servidor openvpn: con una interfaz es suficiente ya que el propio servicio OpenVpn genera interfaces adiconales (tun0) para hacer el routing

  • Si es un servidor router completo con interfaces a redes independientes, crear tantas interfaces como sea necesario.

  1. La clave está en configurar los puertos (interfaces) de la instancia con:

    >> openstack port set --no-security-group --disable-port-security

  2. Confirmar que no funciona ni aporta nada configurar los binding profiles como:

    Esto no funciona, además puede activar un bug de state=Down
    >> openstack port set --no-security-group --disable-port-security --binding-profile trusted=true

    # [ –binding-profile trusted=true ] => no funciona

    Nota importante: activar esta opción puede dejar el puerto con state=Down sin que sea posible recuperarlo hasta reiniciar la instancia:

    >> openstack port show 99af5bf2-5505-45c1-a231-c81b3208e0a4
    ±----------------------±---------------------------------------------------------------------------+
    | Field | Value |
    ±----------------------±---------------------------------------------------------------------------+
    | admin_state_up | UP |

    | binding_profile | trusted=‘true’ |

    | fixed_ips | ip_address=‘172.26.0.11’, subnet_id=‘3a980e92-11be-423d-ac43-6d40d7077657’ |


    | status | DOWN |

  3. Una vez asignadas distintas ips a un puerto, se pueden activar todas ellas como alias de interfaz (ens3:1) pero también como ips adicionales (ip addr add ip2/mask). Es indiferente.

3. Resumen y notas sobre OpenVpn

IMPORTANTE: si hay problemas de rutado para uno o algunos de los segmentos de red, revisar la tabla de rutas de la instancia:

>> ip route show table main

==> Asegurarse de que no haya rutas inyectadas a los tuneles VPN y que sean redes físicas. Ejemplo Openvpn:

# Redes internas (ejemplo openvpn server.conf mal configurado):
push "route 172.26.0.0 255.255.255.0 "
route 172.26.0.0 255.255.255.0

# Redes internas (ejemplo openvpn server.conf corregido):
push "route 172.26.0.0 255.255.255.0 "
# route 172.26.0.0 255.255.255.0

¿Por qué? La razón es que al declarar la ruta de manera explícita dentro del openvpn, configura el rutado del sistema, para dirigir el tráfico de red vía tunel openvpn, cuando es una red física a la que da acceso openvpn.

Esto es muy importante para descartar problemas: si no ruta o no llega parte del tráfico, centrar los esfuerzos en revisar las rutas del sistema, evitando añadir/configurar más opciones en el OpenStack.

4. Conclusión

Un puerto OpenStack configurado con “–no-security-group --disable-port-security” es más que suficiente para conseguir rutar tráfico para routers, firewalls y servidores openvpn/vpn montados sobre openstack.