@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

mikrotik-networking-containers-routeros

Mikrotik: Networking containers RouterOS

Mikrotik: Networking containers RouterOS

En mi experiencia, con Containers, Docker y Kubernetes, creo que la parte más compleja de entender para la mayoría de personas es el networking para manejar contenedores.

Puedes comprender las capas de abstracción si sabes de virtualización y lo que comprende un contenedor, pero saber como interactuar con él, el host, el resto de la LAN e incluso Internet, suele dar ciertos dolores de cabeza. Esto en RouterOS se vuelve incluso más complejo, por no ser contenedores tan estándar.

Para configurar el networking para un grupo de contenedores que corren en RouterOS de MikroTik, necesitas seguir una serie de pasos detallados que incluyen la configuración de interfaces, bridges, y reglas NAT para gestionar correctamente el tráfico entre tus contenedores y la red exterior.

Ya os di unas pinceladas en esta entrada:

A continuación, os proporciono una tabla con los parámetros esenciales basados en las directrices de la documentación de MikroTik para la configuración de contenedores. Posteriormente, vamos a explicar con ejemplos prácticos como nos manejamos con ellos:

Comando/Configuración Descripción Ejemplo/Especificaciones
/interface/veth/add Agrega una interfaz virtual Ethernet para conectar contenedores. name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
/interface/bridge/add Crea un puente para agrupar interfaces, incluyendo las de contenedores. name=containers
/ip/address/add Asigna una dirección IP al puente para gestionar el acceso a la red de los contenedores. address=172.17.0.1/24 interface=containers
/interface/bridge/port add Añade interfaces al puente. bridge=containers interface=veth1
/ip/firewall/nat/add Establece reglas NAT para el tráfico saliente desde los contenedores hacia la red externa (Internet, por ejemplo). chain=srcnat action=masquerade src-address=172.17.0.0/24
/system/device-mode/update Habilita el modo contenedor en dispositivos RouterOS, necesario antes de iniciar cualquier contenedor. container=yes
/container/add Comando para añadir y configurar un contenedor especificando la imagen, interfaces y configuraciones de almacenamiento. remote-image=your-container-image interface=veth1 root-dir=/usb1/containers/nginx

Voy a lanzar un container NGINX para hacer la prueba:

El router Mikrotik RB5009, que es mi router actual, dispone, una vez configurados los comandos de la tabla, la IP 172.17.0.1, y actúa como gateway de la red que usaré para los containers. Reviso que responde:

Con el container NGINX como ejemplo, revisamos desde el router, que entre el router (gateway) y el propio container que acabamos de generar se ven y responde:

Abrir puerto container RouterOS Mikrotik a LAN

Este container con IP (172.17.0.2) está corriendo por defecto en el puerto 80 el servidor web por defecto de NGINX, para poder acceder a la página web que genera, deberemos crear una regla NAT desde mi red LAN (la IP del router que actúa como host de virtualización):

Abrimos un navegador desde mi LAN, y vamos a la URL del puerto que hemos decidido apuntando al router directamente, en el ejemplo 8081, que nos redirigirá al puerto 80 del container NGINX con IP 172.17.0.2:

mikrotik-networking-containers-routeros-1

Si adicionalmente, queremos conectarnos vía shell al container, lo podéis hacer de la siguiente forma:

Dentro del container podemos revisar que tenemos conectividad hacia Internet:

Permitir tráfico desde Internet al contenedor

Esto no es muy recomendable, pero si queréis abrir el tráfico desde Internet a vuestro container, complementando la regla de NAT anterior, generaremos la siguiente:

  • action=accept: Acción para aceptar el paquete.
  • chain=forward: Aplica la regla a la cadena de reenvío.
  • connection-nat-state=dstnat: Aplica la regla solo a las conexiones que han sido redirigidas.
  • dst-port=8081: El puerto de destino que debe permitirse en las reglas del firewall.

Monitorizar tráfico containers RouterOS

Para monitorear el tráfico de red de los contenedores en RouterOS de MikroTik, puedes utilizar diversas herramientas y funciones integradas en el sistema RouterOS. Estas herramientas te permitirán obtener una visión clara del uso de la red por parte de los contenedores, identificar posibles cuellos de botella y asegurar que los recursos de red se utilicen eficientemente. Aquí te explico algunas de las principales estrategias y comandos que puedes utilizar:

  • Monitoreo con la herramienta Tool Torch de la interfaz asignada al contenedor:
  • Puedes usar Simple Queues para monitorear y, opcionalmente, limitar el tráfico hacia y desde el contenedor:
  • Para un análisis más detallado del tráfico, puedes utilizar la herramienta “Packet Sniffer”:
  • RouterOS también ofrece herramientas gráficas para visualizar el tráfico de red a lo largo del tiempo:
  • Otra buena opción es marcar el tráfico para los containers, lo haremos con una regla MANGLE:
  • action=mark-packet: Esta acción permite marcar los paquetes para su posterior procesamiento.
  • new-packet-mark=container_traffic: Etiqueta que se asigna a los paquetes marcados.
  • chain=prerouting: La cadena prerouting es utilizada para marcar los paquetes antes de que se tomen decisiones de enrutamiento.
  • src-address=172.17.0.2 y dst-address=172.17.0.2: Estas condiciones aseguran que tanto el tráfico de salida como de entrada del contenedor sean marcados.
  • passthrough=yes: Esto permite que el paquete sea procesado por reglas adicionales después de esta.
    • Una vez que los paquetes están marcados, puedes referenciar esta marca en otras reglas, como las Simple Queues, para priorizar, limitar o monitorear específicamente este tráfico:

Activar DHCP para red Containers Mikrotik

Personalmente, es interesante configurar el servidor DHCP para la red de containers, así os olvidáis de mantener IPs manualmente:

mikrotik-networking-containers-routeros-2

mikrotik-networking-containers-routeros-3

Espero que os parezca interesante…

Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

proxmox-integrar-host-en-zabbix-7-lts-16

Proxmox: Integrar host en Zabbix 7 LTS

Proxmox: Integrar host en Zabbix 7 LTS En el mundo de la virtualización y la …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

uno × 3 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu