Common Address Redundancy Protocol: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K (Textersetzung - „float-right“ durch „float“)
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{| class="wikitable float-right" style="margin-top:0;"
'''Common Address Redundancy Protocol''' ('''CARP''') - [[Netzwerkprotokoll]] zur Erhöhung der [[Verfügbarkeit]] von [[Internet Protocol|IP]]-Systemen
 
== Beschreibung ==
{| class="wikitable float" style="margin-top:0;"
|-
|-
! colspan="2" style="background:#C0C0FF; font-size:larger;"| CARP (Common Address Redundancy Protocol)
! colspan="2" style="background:#C0C0FF; font-size:larger;"| CARP (Common Address Redundancy Protocol)
|-
|-
| '''Familie:'''
| '''Familie:'''
| [[Internetprotokollfamilie]]
| [[Internetprotokolle]]
|-
|-
| '''Einsatzgebiet:'''
| '''Einsatzgebiet:'''
Zeile 15: Zeile 18:
|-
|-
| '''Standards:'''
| '''Standards:'''
|  
|
|}
|}


Das '''Common Address Redundancy Protocol''' ('''CARP''') ist ein [[Netzwerkprotokoll]], mit dessen Hilfe sich die [[Verfügbarkeit]] von [[Internet Protocol|IP]]-Systemen erhöhen lässt.  
Das '''Common Address Redundancy Protocol''' ('''CARP''') ist ein [[Netzwerkprotokoll]], mit dessen Hilfe sich die [[Verfügbarkeit]] von [[Internet Protocol|IP]]-Systemen erhöhen lässt.
* Dies wird dadurch erreicht, dass mehrere Rechner innerhalb eines lokalen Netzes dieselben virtuellen [[IP-Adresse|IP]]-/[[MAC-Adresse]]n für die Kommunikation mit anderen Systemen nutzen können.  
* Dies wird dadurch erreicht, dass mehrere Rechner innerhalb eines lokalen Netzes dieselben virtuellen [[IP-Adresse|IP]]-/[[MAC-Adresse]]n für die Kommunikation mit anderen Systemen nutzen können.
* Haupteinsatzgebiet von CARP ist die Erstellung [[Hochverfügbarkeit|hochverfügbarer]] [[Gateway (Informatik)|Gateways]] ([[Router]]/[[Firewall]]); mit CARP lassen sich aber auch Applikationsserver hochverfügbar machen.  
* Haupteinsatzgebiet von CARP ist die Erstellung [[Hochverfügbarkeit|hochverfügbarer]] [[Gateway (Informatik)|Gateways]] ([[Router]]/[[Firewall]]); mit CARP lassen sich aber auch Applikationsserver hochverfügbar machen.
* In der [[Internetprotokollfamilie]] ist es das Protokoll Nummer 112.  
* In der [[Internetprotokolle]] ist es das Protokoll Nummer 112.


Entwickelt wurde CARP vom [[OpenBSD]]-Team.  
; Entwickelt wurde CARP vom [[OpenBSD]]-Team.
* Die Entwicklung war nötig, weil es (aus patentrechtlichen Gründen) nicht möglich ist, im Rahmen eines [[Open Source|Open-Source]]-Projektes [[Virtual Router Redundancy Protocol|VRRP]] einzusetzen.  
* Die Entwicklung war nötig, weil es (aus patentrechtlichen Gründen) nicht möglich ist, im Rahmen eines [[Open Source|Open-Source]]-Projektes [[Virtual Router Redundancy Protocol|VRRP]] einzusetzen.
* Dadurch war es nötig, ein eigenes Protokoll zu schreiben.  
* Dadurch war es nötig, ein eigenes Protokoll zu schreiben.
* Zusätzlich konnten auf diese Weise grundlegende Fehler des VRRP und [[Hot Standby Router Protocol|HSRP]] vermieden werden.  
* Zusätzlich konnten auf diese Weise grundlegende Fehler des VRRP und [[Hot Standby Router Protocol|HSRP]] vermieden werden.
* Die erste OpenBSD-Version, bei der CARP integriert war, war Version 3.5.
* Die erste OpenBSD-Version, bei der CARP integriert war, war Version 3.5.


Inzwischen ist CARP auch auf andere Plattformen portiert worden.  
; Inzwischen ist CARP auch auf andere Plattformen portiert worden.
* Eine freie [[Ring (CPU)|Userland]]-Portierung ist UCARP (zurzeit erhältlich für [[Linux]] 2.4/2.6, OpenBSD und [[NetBSD]]).  
* Eine freie [[Ring (CPU)|Userland]]-Portierung ist UCARP (zurzeit erhältlich für [[Linux]] 2.4/2.6, OpenBSD und [[NetBSD]]).
* Für [[DragonFly BSD]], [[FreeBSD]]<ref>{{Internetquelle |url=https://www.freebsd.org/cgi/man.cgi?query=carp&apropos=0&sektion=4&manpath=FreeBSD+11.2-RELEASE&arch=default&format=html |titel=carp(4) |zugriff=2018-10-08}}</ref> und NetBSD existieren [[Kernel (Betriebssystem)|Kernel]]-Implementierungen.
* Für [[DragonFly BSD]], [[FreeBSD]] und NetBSD existieren [[Kernel (Betriebssystem)|Kernel]]-Implementierungen.


== Abgrenzung zu VRRP ==
== Abgrenzung zu VRRP ==
Die grundsätzliche Aufgabe und Funktionsweise von CARP ähnelt VRRP.
; Aufgabe und Funktionsweise von CARP ähnelt [[VRRP]]
* Es gibt aber einige grundlegende Unterschiede:
 
; Unterschiede
* Der wichtigste Vorteil von CARP ist, dass es, im Gegensatz zu VRRP, [[patent]]frei von jedermann genutzt werden kann.
* Der wichtigste Vorteil von CARP ist, dass es, im Gegensatz zu VRRP, [[patent]]frei von jedermann genutzt werden kann.
* Ein grundsätzlicher Unterschied zu VRRP ist die protokollunabhänge Arbeitsweise von CARP.  
* Ein grundsätzlicher Unterschied zu VRRP ist die protokollunabhänge Arbeitsweise von CARP.
* Damit ist CARP für [[IPv4]] und [[IPv6]] nutzbar.
* Damit ist CARP für [[IPv4]] und [[IPv6]] nutzbar.
* Des Weiteren wurde bei der Entwicklung von CARP sehr viel Wert auf Sicherheit gelegt, so sind beispielsweise die zwischen den [[Rechnerverbund|Cluster]]-Rechnern ausgetauschten Nachrichten prinzipiell [[Kryptographie|kryptographisch]] mit [[Secure Hash Algorithm|SHA-1]] bzw. [[Keyed-Hash Message Authentication Code|HMAC]] signiert.
* Des Weiteren wurde bei der Entwicklung von CARP sehr viel Wert auf Sicherheit gelegt, so sind beispielsweise die zwischen den [[Rechnerverbund|Cluster]]-Rechnern ausgetauschten Nachrichten prinzipiell [[Kryptografie|kryptographisch]] mit [[Secure Hash Algorithm|SHA-1]] bzw.&nbsp;[[Keyed-Hash Message Authentication Code|HMAC]] signiert.
* CARP nutzt ein Feature namens ''arpbalance''.  
* CARP nutzt ein Feature namens ''arpbalance''.
* Dabei nutzen alle Rechner dieselbe virtuelle IP-Adresse, aber jeder Rechner bekommt noch eine eigene virtuelle MAC-Adresse.  
* Dabei nutzen alle Rechner dieselbe virtuelle IP-Adresse, aber jeder Rechner bekommt noch eine eigene virtuelle MAC-Adresse.
* Dadurch ist [[Lastverteilung (Informatik)|Lastverteilung]] zwischen den Rechnern möglich.  
* Dadurch ist [[Lastverteilung (Informatik)|Lastverteilung]] zwischen den Rechnern möglich.
* Dieses Merkmal funktioniert bisher nur unter [[OpenBSD]] sowie auf [[FreeBSD]] bis Version 9.3<ref>{{Internetquelle |url=https://www.freebsd.org/releases/10.0R/relnotes.html |titel=FreeBSD 10.0-RELEASE Release Notes |zugriff=2018-10-08}}</ref>, userland CARP (UCARP) implementiert diese Funktion für andere Plattformen, z.&nbsp;B. [[Linux]] bisher nicht.
* Dieses Merkmal funktioniert bisher nur unter [[OpenBSD]] sowie auf [[FreeBSD]] bis Version 9.3, userland CARP (UCARP) implementiert diese Funktion für andere Plattformen, z.&nbsp;B.&nbsp;[[Linux]] bisher nicht.


== Funktionsweise ==
== Funktionsweise ==
Um CARP zu nutzen, braucht man mindestens zwei Systeme, die die gleiche Aufgabe erfüllen und im selben [[Subnetz]] liegen.  
; Mindestens zwei Systeme
* Diese Systeme haben jeweils eine eindeutige IP- und MAC-Adresse und bilden einen Cluster.
Welche die gleiche Aufgabe erfüllen und im selben [[Subnetz]] liegen.
* Zusätzlich wird diesem Cluster jetzt eine virtuelle IP- und MAC-Adresse zugewiesen. Über diese virtuelle IP/MAC kommuniziert der Cluster mit anderen Systemen.
* Damit das funktioniert, wird ein Cluster-Rechner Master und die anderen Slaves, wobei der Master die Kommunikation mit der Außenwelt übernimmt. Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die anderen Maschinen noch arbeiten.
* Wenn der Master ausfällt, übernimmt einer der Slaves sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse.<ref>{{Internetquelle |autor=heise online |url=https://www.heise.de/newsticker/meldung/OPNsense-Firewall-20-1-mit-VXLAN-IPsec-public-key-und-kompletter-Doku-4654216.html |titel=OPNsense-Firewall 20.1 mit VXLAN, IPsec Public Key und kompletter Doku |sprache=de |abruf=2021-11-26}}</ref>


Besonders interessant ist CARP im Zusammenhang mit hoch verfügbaren Firewalls.  
; Diese Systeme haben jeweils eine eindeutige IP- und MAC-Adresse und bilden einen Cluster
* Dabei ist es zusätzlich nötig, die Zustandstabellen zu synchronisieren, um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners zu verhindern.  
* Zusätzlich wird diesem Cluster jetzt eine virtuelle IP- und MAC-Adresse zugewiesen. Über diese virtuelle IP/MAC kommuniziert der Cluster mit anderen Systemen.
* Damit das funktioniert, wird ein Cluster-Rechner Master und die anderen Slaves, wobei der Master die Kommunikation mit der Außenwelt übernimmt.
** Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die anderen Maschinen noch arbeiten.
* Wenn der Master ausfällt, übernimmt einer der Slaves sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse
 
; Besonders interessant ist CARP im Zusammenhang mit hochverfügbaren Firewalls.
* Dabei ist es zusätzlich nötig, die Zustandstabellen zu synchronisieren, um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners zu verhindern.
* Bei der Kombination [[OpenBSD]]/[[Pf (Paketfilter)|pf]] wird hierfür pfsync eingesetzt, unter [[Linux]]/[[Netfilter]] ist diese Funktion mit conntrackd umsetzbar.
* Bei der Kombination [[OpenBSD]]/[[Pf (Paketfilter)|pf]] wird hierfür pfsync eingesetzt, unter [[Linux]]/[[Netfilter]] ist diese Funktion mit conntrackd umsetzbar.


== Weblinks ==
<noinclude>
* [http://www.openbsd.org/cgi-bin/man.cgi?query=carp&sec=4 Man page-Eintrag Beschreibung der Original OpenBSD-Implementation]
== Anhang ==
* https://ucarp.wordpress.com/
=== Siehe auch ===
* [http://www.kernel-panic.it/openbsd/carp/carp4.html Firewall Failover with pfsync and CARP] ([[OpenBSD]])
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
 
==== Sicherheit ====
== Einzelnachweise ==
==== Dokumentation ====
<references />
==== Links ====
===== Projekt =====
===== Weblinks =====
# [http://www.openbsd.org/cgi-bin/man.cgi?query=carp&sec=4 Man page-Eintrag Beschreibung der Original OpenBSD-Implementation]
# https://ucarp.wordpress.com/
# [http://www.kernel-panic.it/openbsd/carp/carp4.html Firewall Failover with pfsync and CARP] ([[OpenBSD]])
</noinclude>


[[Kategorie:Netzwerkprotokoll]]
[[Kategorie:IP]]
[[Kategorie:OpenBSD]]
[[Kategorie:OpenBSD]]
[[Kategorie:FreeBSD]]
[[Kategorie:FreeBSD]]

Aktuelle Version vom 22. Februar 2024, 12:21 Uhr

Common Address Redundancy Protocol (CARP) - Netzwerkprotokoll zur Erhöhung der Verfügbarkeit von IP-Systemen

Beschreibung[Bearbeiten | Quelltext bearbeiten]

CARP (Common Address Redundancy Protocol)
Familie: Internetprotokolle
Einsatzgebiet:

Steigerung der Verfügbarkeit
von Gateways

Vorlage:Netzwerk-UDP-IP-Anwendungsprotokoll

Standards:

Das Common Address Redundancy Protocol (CARP) ist ein Netzwerkprotokoll, mit dessen Hilfe sich die Verfügbarkeit von IP-Systemen erhöhen lässt.

  • Dies wird dadurch erreicht, dass mehrere Rechner innerhalb eines lokalen Netzes dieselben virtuellen IP-/MAC-Adressen für die Kommunikation mit anderen Systemen nutzen können.
  • Haupteinsatzgebiet von CARP ist die Erstellung hochverfügbarer Gateways (Router/Firewall); mit CARP lassen sich aber auch Applikationsserver hochverfügbar machen.
  • In der Internetprotokolle ist es das Protokoll Nummer 112.
Entwickelt wurde CARP vom OpenBSD-Team.
  • Die Entwicklung war nötig, weil es (aus patentrechtlichen Gründen) nicht möglich ist, im Rahmen eines Open-Source-Projektes VRRP einzusetzen.
  • Dadurch war es nötig, ein eigenes Protokoll zu schreiben.
  • Zusätzlich konnten auf diese Weise grundlegende Fehler des VRRP und HSRP vermieden werden.
  • Die erste OpenBSD-Version, bei der CARP integriert war, war Version 3.5.
Inzwischen ist CARP auch auf andere Plattformen portiert worden.

Abgrenzung zu VRRP[Bearbeiten | Quelltext bearbeiten]

Aufgabe und Funktionsweise von CARP ähnelt VRRP
Unterschiede
  • Der wichtigste Vorteil von CARP ist, dass es, im Gegensatz zu VRRP, patentfrei von jedermann genutzt werden kann.
  • Ein grundsätzlicher Unterschied zu VRRP ist die protokollunabhänge Arbeitsweise von CARP.
  • Damit ist CARP für IPv4 und IPv6 nutzbar.
  • Des Weiteren wurde bei der Entwicklung von CARP sehr viel Wert auf Sicherheit gelegt, so sind beispielsweise die zwischen den Cluster-Rechnern ausgetauschten Nachrichten prinzipiell kryptographisch mit SHA-1 bzw. HMAC signiert.
  • CARP nutzt ein Feature namens arpbalance.
  • Dabei nutzen alle Rechner dieselbe virtuelle IP-Adresse, aber jeder Rechner bekommt noch eine eigene virtuelle MAC-Adresse.
  • Dadurch ist Lastverteilung zwischen den Rechnern möglich.
  • Dieses Merkmal funktioniert bisher nur unter OpenBSD sowie auf FreeBSD bis Version 9.3, userland CARP (UCARP) implementiert diese Funktion für andere Plattformen, z. B. Linux bisher nicht.

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

Mindestens zwei Systeme

Welche die gleiche Aufgabe erfüllen und im selben Subnetz liegen.

Diese Systeme haben jeweils eine eindeutige IP- und MAC-Adresse und bilden einen Cluster
  • Zusätzlich wird diesem Cluster jetzt eine virtuelle IP- und MAC-Adresse zugewiesen. Über diese virtuelle IP/MAC kommuniziert der Cluster mit anderen Systemen.
  • Damit das funktioniert, wird ein Cluster-Rechner Master und die anderen Slaves, wobei der Master die Kommunikation mit der Außenwelt übernimmt.
    • Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die anderen Maschinen noch arbeiten.
  • Wenn der Master ausfällt, übernimmt einer der Slaves sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse
Besonders interessant ist CARP im Zusammenhang mit hochverfügbaren Firewalls.
  • Dabei ist es zusätzlich nötig, die Zustandstabellen zu synchronisieren, um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners zu verhindern.
  • Bei der Kombination OpenBSD/pf wird hierfür pfsync eingesetzt, unter Linux/Netfilter ist diese Funktion mit conntrackd umsetzbar.


Anhang[Bearbeiten | Quelltext bearbeiten]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Sicherheit[Bearbeiten | Quelltext bearbeiten]

Dokumentation[Bearbeiten | Quelltext bearbeiten]

Links[Bearbeiten | Quelltext bearbeiten]

Projekt[Bearbeiten | Quelltext bearbeiten]
Weblinks[Bearbeiten | Quelltext bearbeiten]
  1. Man page-Eintrag Beschreibung der Original OpenBSD-Implementation
  2. https://ucarp.wordpress.com/
  3. Firewall Failover with pfsync and CARP (OpenBSD)