Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
vc5 — Un bilanciatore di carico di livello 4 orizzontalmente scalabile con Direct Server Return per Linux che utilizza XDP/eBPF | Kitploit
Strumenti/GitHubGitHub/davidcoles/vc5
Sicurezza dell'Infrastruttura CloudSicurezza di ReteDevSecOpsAnalisi DNS
GitHubdavidcoles/vc5

vc5

Un bilanciatore di carico di livello 4 orizzontalmente scalabile con Direct Server Return per Linux che utilizza XDP/eBPF

Vedi Repository
12512271 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

VC5

Questo README è in fase di aggiornamento per riflettere le modifiche recenti – alcune informazioni potrebbero non corrispondere al codice attuale. Questa iterazione del codice non è ancora pronta per ambienti di produzione – utilizza una release v0.2 per ambienti reali

Un bilanciatore di carico di livello 4 (L4LB) orizzontalmente scalabile con Direct Server Return (DSR) per Linux che utilizza XDP/eBPF.

Se pensi che possa essere utile o hai domande/suggerimenti, sentiti libero di contattarmi a [email protected] o aprire un'issue su GitHub.

Ora supporta IPv6 e distribuzione a livello 3 (noto anche come tunneling)! La libreria XVS è stata aggiornata per includere queste funzionalità e inoltre elimina la necessità di eseguire controlli di salute da un namespace di rete, semplificando notevolmente il codice. Questo porrà fine al requisito che tutti i backend condividano una VLAN con il bilanciatore di carico.

Le restrizioni attuali del codice impediscono di abilitare il tunneling per servizio. Utilizzare l'opzione -tunnel consente di abilitare globalmente il tunneling di livello 3 utilizzando uno schema singolo (IP-in-IP, GRE, FOU o GUE). In futuro, il codice verrà aggiornato per consentire la configurazione del tunneling a livello di servizio.

Il bilanciamento del carico di livello 2 continuerà ad essere supportato – la ragione principale per cui è stato avviato il progetto è stata la mancanza di supporto di livello 2 da parte del bilanciatore di carico Katran di Facebook.

Un file di configurazione di esempio per IPv6/L3 è incluso – seguirà una documentazione più dettagliata.

Informazioni

VC5 è un bilanciatore di carico di rete progettato per sostituire gli apparecchi hardware legacy. Permette di distribuire servizi con indirizzi IP virtuali (VIP) a gruppi di server backend ("reali"). I server reali possono eseguire i servizi stessi o agire come proxy per un altro livello di server (ad es. HAProxy che funge da router HTTP/offload SSL di livello 7 quando è necessario prendere decisioni a livello applicativo). L'unico requisito è che i VIP siano configurati su un dispositivo loopback su ciascun server reale, ad es.: ip addr add 192.168.101.1/32 dev lo

I servizi e i server reali sono specificati in un file di configurazione, insieme alle definizioni dei controlli di salute. Quando i server backend superano i controlli e sono disponibili in numero sufficiente per fornire un servizio, gli indirizzi IP virtuali vengono annunciati ai router tramite BGP.

Ora è supportata la distribuzione del traffico sia a livello 2 che a livello 3. La distribuzione a livello 2 richiede che i server reali condividano una VLAN con il bilanciatore di carico; quando riceve un pacchetto da distribuire, il bilanciatore aggiorna gli indirizzi hardware ethernet nel pacchetto utilizzando l'indirizzo MAC del server reale come destinazione e il proprio indirizzo MAC come sorgente, e inoltra il pacchetto attraverso l'interfaccia appropriata, aggiornando l'ID VLAN 802.1Q se i pacchetti sono con tag VLAN.

La distribuzione a livello 3 richiede che i pacchetti vengano incapsulati in un protocollo di tunneling indirizzato all'IP del server reale e inoltrati tramite un router (a meno che il server e il bilanciatore di carico non condividano una VLAN). Se, una volta incapsulato, un pacchetto supera la dimensione massima di trasmissione della rete, viene inviato un messaggio ICMP alla sorgente con indicazioni sull'MTU appropriato da utilizzare. I server backend devono solo decapsulare i pacchetti – non è richiesta la tunneling bidirezionale con i bilanciatori di carico.

Un server con un'interfaccia di rete da 10 Gbit/s dovrebbe essere in grado di supportare un servizio HTTP con larghezza di banda in egress superiore a 100 Gbit/s grazie alla natura asimmetrica della maggior parte del traffico Internet. Per servizi più piccoli, una o due macchine virtuali modeste saranno probabilmente sufficienti per gestire un servizio che genera alcuni gigabit/s di traffico in uscita.

Se un'istanza non è sufficiente, è possibile aggiungere più server per scalare orizzontalmente la capacità (e fornire ridondanza) utilizzando la funzionalità ECMP del router. Sono supportate interfacce in bonding 802.3ad e trunking VLAN 802.1Q (vedi directory examples/).

Non sono richiesti moduli del kernel o configurazioni complesse, anche se per ottenere le migliori prestazioni si consiglia un driver per scheda di rete con supporto della modalità nativa XDP (ad es.: mlx4, mlx5, i40e, ixgbe, ixgbevf, nfp, bnxt, thunder, dpaa2, qede). Un elenco completo è disponibile nella pagina di supporto dei driver del progetto XDP.

Obiettivi/stato

  • ✅ Distribuzione semplice con un singolo binario
  • ✅ Selezione stabile del backend con l'algoritmo di hashing Maglev
  • ✅ Iniezione automatica della salute del percorso; non è necessario eseguire altro software come ExaBGP
  • ✅ Minimamente invasivo; non richiede alcuna modifica delle regole iptables sul bilanciatore
  • ✅ Nessuna modifica ai server backend oltre all'aggiunta del VIP su un dispositivo loopback/terminazione del tunnel con distribuzione L3
  • ✅ I controlli di salute vengono eseguiti sul VIP sui server backend, non sui loro indirizzi reali
  • ✅ Controlli di salute HTTP/HTTPS, sonda SYN half-open e UDP/TCP DNS integrati
  • ✅ Commutazione dei pacchetti nel kernel con eBPF/XDP; i driver in modalità nativa evitano l'allocazione di sk_buff
  • ✅ Supporto di più VLAN
  • ✅ Supporto di più NIC per applicazioni a larghezza di banda ridotta/sviluppo
  • ✅ Dispositivi di rete con tag/bonding per supportare alta disponibilità/alta larghezza di banda
  • ✅ Osservabilità tramite console web, logging Elasticsearch (in sviluppo) e metriche Prometheus
  • ✅ Supporto IPv6 e possibilità di mescolare backend IPv4 e IPv6 con qualsiasi tipo di VIP.
  • ✅ Distribuzione del traffico di livello 3 con supporto IP-in-IP, GRE, FOU e GUE.

Avvio rapido

Per ottenere i migliori risultati, si consiglia di disabilitare/disinstallare irqbalance.

Dovrai selezionare un IP primario da passare al bilanciatore. Viene utilizzato come ID del router BGP.

Un semplice esempio su un server con una singola interfaccia ethernet senza tag:

  • apt-get install git make libelf-dev golang-1.20 libyaml-perl libjson-perl ethtool (o l'equivalente della tua distribuzione)
  • ln -s /usr/lib/go-1.20/bin/go /usr/local/bin/go (assicurati che il binario Go sia nel tuo PATH)
  • git clone https://github.com/davidcoles/vc5.git
  • cd vc5/cmd
  • cp config.sample.yaml config.yaml (modifica config.yaml in base alle tue esigenze)
  • make (scarica la libreria libbpf, compila il binario e il file JSON di configurazione)
  • ./vc5 10.1.10.100 config.json eth0 (modifica utilizzando l'indirizzo IP del tuo server e l'interfaccia ethernet)
  • Una console web sarà disponibile sulla porta 80 del tuo server bilanciatore per impostazione predefinita
  • Aggiungi il tuo VIP sul dispositivo loopback dei tuoi server backend (ad es.: ip addr add 192.168.101.1/32 dev lo)
  • Configura la tua rete/client per inviare il traffico per il tuo VIP al bilanciatore, tramite BGP (vedi file di configurazione) o routing statico
Scarica lo strumento