Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
vc5 — Ein horizontal skalierbarer Direct-Server-Return-Layer-4-Load-Balancer für Linux mit XDP/eBPF | Kitploit
Tools/GitHubGitHub/davidcoles/vc5
Cloud-Infrastruktur-SicherheitNetzwerksicherheitDevSecOpsDNS-Analyse
GitHubdavidcoles/vc5

vc5

Ein horizontal skalierbarer Direct-Server-Return-Layer-4-Load-Balancer für Linux mit XDP/eBPF

Repository anzeigen
1251227vor 1 MonatVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

VC5

Diese README wird derzeit aktualisiert, um die jüngsten Änderungen zu berücksichtigen – einige Informationen entsprechen möglicherweise nicht dem aktuellen Codestand. Diese Codeiteration ist noch nicht produktionsreif – für den Produktionseinsatz eine v0.2-Version verwenden

Ein horizontal skalierbarer Layer-4-Lastverteiler (L4LB) mit Direct Server Return (DSR) für Linux mit XDP/eBPF.

Wenn Sie glauben, dass dies nützlich sein könnte, oder Fragen/Anregungen haben, können Sie mich gerne unter [email protected] kontaktieren oder ein GitHub-Issue eröffnen.

Unterstützt jetzt IPv6 und Verteilung auf Schicht 3 (auch Tunneling genannt)! Die XVS-Bibliothek wurde aktualisiert, um diese Funktionen zu enthalten, und macht zudem die Notwendigkeit überflüssig, Health Checks aus einem Network Namespace auszuführen, was den Code erheblich vereinfacht. Dies beendet die Anforderung, dass alle Backends ein VLAN mit dem Lastverteiler teilen.

Aktuelle Codeeinschränkungen bedeuten, dass die Aktivierung von Tunneling pro Dienst nicht unterstützt wird. Die Verwendung der Option -tunnel ermöglicht ein global aktiviertes Layer-3-Tunneling mit einem einzigen Schema (IP-in-IP, GRE, FOU oder GUE). In Zukunft wird der Code aktualisiert, um Tunneling auf Dienstebene konfigurieren zu können.

Layer-2-Lastverteilung wird weiterhin unterstützt – der Hauptgrund für den Start des Projekts war das Fehlen von Layer-2-Unterstützung beim Lastverteiler von Facebook's Katran.

Eine Beispielkonfigurationsdatei für IPv6/L3 ist enthalten – bessere Dokumentation folgt.

Über

VC5 ist ein Netzwerk-Lastverteiler, der als Ersatz für legacy Hardware-Appliances entwickelt wurde. Er ermöglicht es, Dienste mit virtuellen IP-Adressen (VIPs) auf Gruppen von Backend-("echten") Servern zu verteilen. Echte Server können die Dienste selbst ausführen oder als Proxys für eine weitere Serverebene fungieren (z. B. HAProxy als Layer-7- HTTP-Router/SSL-Offload, wenn Entscheidungen auf Anwendungsebene getroffen werden müssen). Die einzige Anforderung ist, dass VIPs auf einem Loopback-Gerät auf jedem echten Server konfiguriert werden müssen, z. B.: ip addr add 192.168.101.1/32 dev lo

Dienste und echte Server werden in einer Konfigurationsdatei zusammen mit Health-Check-Definitionen angegeben. Wenn die Backend-Server die Prüfungen bestehen und genügend davon verfügbar sind, um einen Dienst bereitzustellen, werden die virtuellen IP-Adressen über BGP an Router angekündigt.

Die Verteilung von Datenverkehr auf sowohl Schicht 2 als auch Schicht 3 wird jetzt unterstützt. Die Verteilung auf Schicht 2 erfordert, dass echte Server ein VLAN mit dem Lastverteiler teilen; beim Empfang eines zu verteilenden Pakets aktualisiert der Lastverteiler die Ethernet-Hardwareadressen im Paket, um die MAC-Adresse des echten Servers als Ziel und seine eigene MAC-Adresse als Quelle zu verwenden, und leitet das Paket über die entsprechende Schnittstelle weiter, wobei die 802.1Q-VLAN-ID aktualisiert wird, wenn Pakete VLAN-getaggt sind.

Die Verteilung auf Schicht 3 erfordert, dass Pakete in einem Tunnelprotokoll gekapselt werden, das an die IP-Adresse des echten Servers adressiert ist, und über einen Router weitergeleitet wird (sofern Server und Lastverteiler kein VLAN teilen). Wenn ein gekapseltes Paket die maximale Netzwerkübertragungsgröße überschreitet, wird eine ICMP-Nachricht an die Quelle gesendet, mit einem Hinweis auf die geeignete MTU. Backend-Server müssen Pakete nur entkapseln – bidirektionales Tunneling mit Lastverteilern ist nicht erforderlich.

Ein Server mit einer 10-Gbit/s-Netzwerkschnittstelle sollte in der Lage sein, einen HTTP-Dienst mit einer Egress-Bandbreite von über 100 Gbit/s zu unterstützen, aufgrund der asymmetrischen Natur des meisten Internetverkehrs. Für kleinere Dienste dürften ein oder zwei bescheidene virtuelle Maschinen einen Dienst bewältigen, der einige Gigabit/s an Egress-Verkehr erzeugt.

Wenn eine Instanz nicht ausreicht, können weitere Server hinzugefügt werden, um die Kapazität horizontal zu skalieren (und Redundanz zu bieten), mithilfe der ECMP-Funktion Ihres Routers. 802.3ad-gebondete Schnittstellen und 802.1Q-VLAN- Trunking werden unterstützt (siehe Verzeichnis examples/).

Es werden keine Kernelmodule oder komplexen Einrichtungen benötigt, obwohl für beste Leistung ein Netzwerkkartentreiber mit nativer XDP-Modus-Unterstützung empfohlen wird (z. B.: mlx4, mlx5, i40e, ixgbe, ixgbevf, nfp, bnxt, thunder, dpaa2, qede). Eine vollständige Liste ist auf The XDP Project's driver support page verfügbar.

Ziele/Status

  • ✅ Einfache Bereitstellung mit einer einzigen Binärdatei
  • ✅ Stabile Backend-Auswahl mit dem Maglev-Hashing-Algorithmus
  • ✅ Automatische Injektion von Routen-Health-Checks; keine Notwendigkeit, andere Software wie ExaBGP auszuführen
  • ✅ Minimalinvasiv; erfordert keine Änderung von iptables-Regeln auf dem Balancer
  • ✅ Keine Änderung an Backend-Servern außer dem Hinzufügen der VIP zu einem Loopback-Gerät/Tunnelabschluss bei L3-Verteilung
  • ✅ Health Checks werden gegen die VIP auf Backend-Servern ausgeführt, nicht gegen deren echte Adressen
  • ✅ Integrierte HTTP/HTTPS-, Half-Open-SYN-Probe- und UDP/TCP-DNS-Health-Checks
  • ✅ Paketvermittlung im Kernel mit eBPF/XDP; Treiber im nativen Modus vermeiden die sk_buff-Zuweisung
  • ✅ Unterstützung mehrerer VLANs
  • ✅ Unterstützung mehrerer NICs für Anwendungen mit geringerer Bandbreite/Entwicklung
  • ✅ Getaggte/gebondete Netzwerkgeräte zur Unterstützung von Hochverfügbarkeit/Hoher Bandbreite
  • ✅ Beobachtbarkeit über eine Weboberfläche, Elasticsearch-Logging (in Entwicklung) und Prometheus-Metriken
  • ✅ IPv6-Unterstützung und die Möglichkeit, IPv4- und IPv6-Backends mit beiden VIP-Typen zu mischen.
  • ✅ Layer-3-Datenverkehrsverteilung mit IP-in-IP-, GRE-, FOU- und GUE-Unterstützung.

Schnellstart

Für beste Ergebnisse sollten Sie irqbalance deaktivieren/deinstallieren.

Sie müssen eine primäre IP auswählen, die Sie dem Balancer übergeben. Diese wird für die BGP-Router-ID verwendet.

Ein einfaches Beispiel auf einem Server mit einer einzelnen, ungetaggten Ethernet-Schnittstelle:

  • apt-get install git make libelf-dev golang-1.20 libyaml-perl libjson-perl ethtool (oder das Äquivalent Ihrer Distribution)
  • ln -s /usr/lib/go-1.20/bin/go /usr/local/bin/go (stellen Sie sicher, dass sich die Go-Binärdatei in Ihrem PATH befindet)
  • git clone https://github.com/davidcoles/vc5.git
  • cd vc5/cmd
  • cp config.sample.yaml config.yaml (bearbeiten Sie config.yaml entsprechend Ihren Anforderungen)
  • make (lädt die libbpf-Bibliothek herunter, erstellt die Binärdatei und die JSON-Konfigurationsdatei)
  • ./vc5 10.1.10.100 config.json eth0 (passen Sie die IP-Adresse und Ethernet-Schnittstelle Ihres Servers an)
  • Eine Weboberfläche ist standardmäßig auf Port 80 Ihres Lastverteiler-Servers verfügbar
  • Fügen Sie Ihre VIP zum Loopback-Gerät auf Ihren Backend-Servern hinzu (z. B.: ip addr add 192.168.101.1/32 dev lo)
  • Konfigurieren Sie Ihr Netzwerk/Ihren Client so, dass Datenverkehr für Ihre VIP an den Lastverteiler gesendet wird, entweder über BGP (siehe Konfigurationsdatei) oder statisches Routing
Tool herunterladen