Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
vc5 — Un balanceador de carga de capa 4 escalable horizontalmente con retorno directo del servidor para Linux que utiliza XDP/eBPF | Kitploit
Herramientas/GitHubGitHub/davidcoles/vc5
Seguridad de Infraestructura en la NubeSeguridad de RedesDevSecOpsAnálisis de DNS
GitHubdavidcoles/vc5

vc5

Un balanceador de carga de capa 4 escalable horizontalmente con retorno directo del servidor para Linux que utiliza XDP/eBPF

Ver Repositorio
1251227hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

VC5

Este README se está actualizando actualmente para reflejar cambios recientes; es posible que alguna información no refleje el código base actual. Esta iteración del código aún no está lista para producción; use una versión v0.2 para entornos de producción.

Un balanceador de carga de capa 4 (L4LB) de Retorno Directo al Servidor (DSR) horizontalmente escalable para Linux que utiliza XDP/eBPF.

Si cree que esto puede ser útil o tiene alguna pregunta/sugerencia, no dude en contactarme en [email protected] o abrir un issue en GitHub.

¡Ahora compatible con IPv6 y distribución en capa 3 (también conocido como tunelización)! La biblioteca XVS se ha actualizado para incluir estas funciones, y también elimina la necesidad de ejecutar comprobaciones de salud desde un namespace de red, simplificando considerablemente el código. Esto eliminará el requisito de que todos los backends compartan una VLAN con el balanceador de carga.

Las restricciones del código actualmente significan que no se admite habilitar la tunelización por servicio. Usar la opción -tunnel permite habilitar globalmente la tunelización de capa 3 utilizando un solo esquema (IP-in-IP, GRE, FOU o GUE). En el futuro, el código se actualizará para permitir configurar la tunelización a nivel de servicio.

El balanceo de carga de capa 2 continuará siendo compatible; la razón principal para iniciar el proyecto fue la falta de soporte de capa 2 por parte del balanceador de carga Katran de Facebook.

Se incluye un archivo de configuración de ejemplo IPv6/L3; mejor documentación próximamente.

Acerca de

VC5 es un balanceador de carga de red diseñado para funcionar como reemplazo de dispositivos de hardware heredados. Permite que los servicios con direcciones IP virtuales (VIP) se distribuyan a conjuntos de servidores backend ("reales"). Los servidores reales pueden ejecutar los servicios ellos mismos o actuar como proxies para otra capa de servidores (por ejemplo, HAProxy que actúa como enrutador HTTP de capa 7/descarga SSL cuando se deben tomar decisiones a nivel de aplicación). El único requisito es que las VIP deben configurarse en un dispositivo loopback en cada servidor real, por ejemplo: ip addr add 192.168.101.1/32 dev lo

Los servicios y servidores reales se especifican en un archivo de configuración, junto con definiciones de comprobaciones de salud. Cuando los servidores backend pasan las comprobaciones y hay suficientes disponibles para proporcionar un servicio, las direcciones IP virtuales se anuncian a los enrutadores mediante BGP.

Ahora se admite la distribución de tráfico tanto en capa 2 como en capa 3. La distribución de capa 2 requiere que los servidores reales compartan una VLAN con el balanceador de carga; al recibir un paquete que debe distribuirse, el balanceador de carga actualiza las direcciones de hardware Ethernet en el paquete para usar la dirección MAC del servidor real como destino y su propia dirección MAC como origen, y reenvía el paquete a través de la interfaz adecuada, actualizando el ID de VLAN 802.1Q si los paquetes están etiquetados con VLAN.

La distribución de capa 3 requiere que los paquetes se encapsulen en un protocolo de tunelización dirigido a la IP del servidor real y se reenvíen a través de un enrutador (a menos que el servidor y el balanceador de carga compartan una VLAN). Si, al encapsularse, un paquete supera el tamaño máximo de transmisión de la red, se envía un mensaje ICMP al origen con consejo sobre la MTU adecuada a utilizar. Los servidores backend solo necesitan desencapsular paquetes; no se requiere tunelización bidireccional con balanceadores de carga.

Un servidor con una interfaz de red de 10 Gbit/s debería ser capaz de soportar un servicio HTTP con un ancho de banda de salida superior a 100 Gbit/s debido a la naturaleza asimétrica de la mayor parte del tráfico de Internet. Para servicios más pequeños, una máquina virtual modesta o dos probablemente manejarán un servicio que genere varios Gbit/s de tráfico de salida.

Si una instancia no es suficiente, se pueden agregar más servidores para escalar horizontalmente la capacidad (y proporcionar redundancia) utilizando la función ECMP de su enrutador. Se admite el enlace de interfaces 802.3ad y el trunking de VLAN 802.1Q (consulte el directorio examples/).

No se requieren módulos de kernel ni configuraciones complejas, aunque para un mejor rendimiento se recomienda un controlador de tarjeta de red con soporte de modo nativo XDP (por ejemplo: mlx4, mlx5, i40e, ixgbe, ixgbevf, nfp, bnxt, thunder, dpaa2, qede). Una lista completa está disponible en la página de soporte de controladores del Proyecto XDP.

Objetivos/estado

  • ✅ Implementación simple con un solo binario
  • ✅ Selección de backend estable con el algoritmo de hash Maglev
  • ✅ Inyección de salud de ruta manejada automáticamente; no es necesario ejecutar otro software como ExaBGP
  • ✅ Mínimamente invasivo; no requiere ninguna modificación de las reglas de iptables en el balanceador
  • ✅ Sin modificación de los servidores backend más allá de agregar la VIP a un dispositivo loopback/terminación de túnel con distribución L3
  • ✅ Las comprobaciones de salud se ejecutan contra la VIP en los servidores backend, no en sus direcciones reales
  • ✅ Comprobaciones de salud HTTP/HTTPS, sonda SYN semiabierta y UDP/TCP DNS incorporadas
  • ✅ Conmutación de paquetes en el kernel con eBPF/XDP; los controladores en modo nativo evitan la asignación de sk_buff
  • ✅ Soporte de múltiples VLAN
  • ✅ Soporte de múltiples NIC para aplicaciones de menor ancho de banda/desarrollo
  • ✅ Dispositivos de red etiquetados/enlazados para soportar alta disponibilidad/alto ancho de banda
  • ✅ Observabilidad a través de una consola web, registro en Elasticsearch (en desarrollo) y métricas de Prometheus
  • ✅ Soporte de IPv6 y capacidad de mezclar backends IPv4 e IPv6 con cualquier tipo de VIP.
  • ✅ Distribución de tráfico de capa 3 con soporte para IP-in-IP, GRE, FOU y GUE.

Inicio rápido

Para mejores resultados, debe deshabilitar/desinstalar irqbalance.

Deberá seleccionar una IP principal para pasar al balanceador. Esta se utiliza para el ID del enrutador BGP.

Un ejemplo simple en un servidor con una única interfaz Ethernet sin etiquetar:

  • apt-get install git make libelf-dev golang-1.20 libyaml-perl libjson-perl ethtool (o el equivalente de su distribución)
  • ln -s /usr/lib/go-1.20/bin/go /usr/local/bin/go (asegúrese de que el binario de Go esté en su PATH)
  • git clone https://github.com/davidcoles/vc5.git
  • cd vc5/cmd
  • cp config.sample.yaml config.yaml (edite config.yaml para que coincida con sus requisitos)
  • make (descarga la biblioteca libbpf, compila el binario y el archivo de configuración JSON)
  • ./vc5 10.1.10.100 config.json eth0 (ajuste para usar la dirección IP de su servidor y la interfaz Ethernet)
  • Una consola web estará en el puerto 80 de su servidor balanceador de carga por defecto.
  • Agregue su VIP al dispositivo loopback en sus servidores backend (por ejemplo: ip addr add 192.168.101.1/32 dev lo)
  • Configure su red/cliente para enviar tráfico para su VIP al balanceador de carga, ya sea mediante BGP (consulte el archivo de configuración) o enrutamiento estático.
Descargar herramienta