Subsections

4.12 IPv6 - Internet Protokoll Version 6

4.12.1 Einleitung

Dieses Paket ermöglicht es, den fli4l-Router in vielerlei Hinsicht IPv6-tauglich zu machen. Dazu gehören Angaben über die IPv6-Adresse des Routers, die verwalteten IPv6-(Sub-)Netze, vordefinierte IPv6-Routen und Firewall-Regeln bzgl. IPv6-Paketen. Des Weiteren lassen sich IPv6-Dienste wie DHCPv6 konfigurieren. Schließlich ist es möglich, Tunnel zu IPv6-Anbietern automatisch aufbauen zu lassen. Dies funktioniert momentan aber leider nur mit so genannten 6in4-Tunneln, wie sie etwa der Anbieter ``Hurricane Electric'' unterstützt. Andere Technologien (AYIYA, 6to4, Teredo) werden zur Zeit nicht unterstützt.

IPv6 ist der Nachfolger des Internet-Protokolls IPv4. Hauptsächlich wurde es entwickelt, um die relativ kleine Menge von eindeutigen Internet-Adressen zu vergrößern: Während IPv4 ungefähr 232 Adressen unterstützt,4.10 sind es bei IPv6 bereits 2128 Adressen. Dadurch kann mit IPv6 jedem kommunizierenden Host eine eindeutige Adresse zugeordnet werden, und man ist nicht mehr auf Techniken wie NAT, PAT, Masquerading etc. angewiesen.

Neben diesem Aspekt spielten bei der Entwicklung des IPv6-Protokolls auch Themen wie Selbstkonfiguration und Sicherheit eine Rolle. Dies wird in späteren Abschnitten aufgegriffen.

Das größte Problem bei IPv6 ist dessen Verbreitung: Momentan wird IPv6 - verglichen mit IPv4 - nur sehr spärlich verwendet. Das liegt daran, dass IPv6 und IPv4 technisch nicht miteinander kompatibel sind und somit alle Software- und Hardware-Komponenten, die an der Paket-Weiterleitung im Internet beteiligt sind, für IPv6 nachgerüstet werden müssen. Auch bestimmte Dienste wie DNS (Domain Name System) müssen für IPv6 entsprechend aufgebohrt werden.

Hier tut sich also ein Teufelskreis auf: Die geringe Verbreitung von IPv6 bei Dienstanbietern im Internet führt zu Desinteresse seitens der Router-Hersteller, ihre Geräte mit IPv6-Funktionalität auszustatten, was wiederum dazu führt, dass Dienstanbieter die Umstellung auf IPv6 scheuen, weil sie fürchten, dass sich der Aufwand nicht lohnt. Erst langsam wendet sich das Blatt zugunsten von IPv6, nicht zuletzt unter dem immer stärkeren Druck der knappen Adressvorräte.4.11

4.12.2 Adressformat

Eine IPv6-Adresse besteht aus acht Zwei-Byte-Werten, die hexadezimal notiert werden:

Beispiel 1: 2001:db8:900:551:0:0:0:2

Beispiel 2: 0:0:0:0:0:0:0:1 (IPv6-Loopback-Adresse)

Um die Adressen etwas übersichtlicher zu gestalten, werden aufeinander folgende Nullen zusammengelegt, indem sie entfernt werden und lediglich zwei unmittelbar aufeinander folgende Doppelpunkte verbleiben. Die obigen Adressen können also auch so geschrieben werden:

Beispiel 1 (kompakt): 2001:db8:900:551::2

Beispiel 2 (kompakt): ::1

Eine solche Kürzung ist aber nur höchstens einmal erlaubt, um Mehrdeutigkeiten zu vermeiden. Die Adresse 2001:0:0:1:2:0:0:3 kann also entweder zu 2001::1:2:0:0:3 oder zu 2001:0:0:1:2::3 verkürzt werden, nicht aber zu 2001::1:2::3, da jetzt unklar wäre, wie die vier Nullen jeweils auf die zusammengezogenen Bereiche verteilt werden sollen.

Eine weitere Mehrdeutigkeit existiert, wenn eine IPv6-Adresse mit einem Port (TCP oder UDP) kombiniert werden soll: In diesem Fall darf man den Port nicht unmittelbar mit Doppelpunkt und Wert anschließen, weil der Doppelpunkt bereits innerhalb der Adresse verwendet wird und somit in manchen Fällen unklar wäre, ob die Port-Angabe nicht vielleicht doch eine Adress-Komponente darstellt. Deshalb muss in solchen Fällen die IPv6-Adresse in eckigen Klammern angegeben werden. Dies ist auch die Syntax, wie sie in URLs gefordert wird (etwa wenn im Web-Browser eine numerische IPv6-Adresse verwendet werden soll).

Beispiel 3: [2001:db8:900:551::2]:1234

Ohne die Verwendung von Klammern entsteht die Adresse 2001:db8:900:551::2:1234, die unverkürzt der Adresse 2001:db8:900:551:0:0:2:1234 entspricht und somit keine Port-Angabe besitzt.

4.12.3 Konfiguration

4.12.3.1 Allgemeine Einstellungen

Die allgemeinen Einstellungen beinhalten zum einen die Aktivierung der IPv6-Unterstützung und zum anderen die optionale Vergabe einer IPv6-Adresse an den Router.

OPT_IPV6
Aktiviert die IPv6 Unterstützung.

Standard-Einstellung: OPT_IPV6='no'

HOSTNAME_IP6
(optional) Diese Variable stellt explizit die IPv6-Adresse des Routers ein. Falls die Variable nicht gesetzt wird, wird die IPv6-Adresse auf die Adresse des ersten konfigurierten IPv6-Subnetzes gesetzt (IPV6_NET_x, siehe unten).

Beispiel: HOSTNAME_IP6='IPV6_NET_1_IPADDR'

4.12.3.2 Subnetz-Konfiguration

In diesem Abschnitt wird die Konfiguration von einem oder mehreren IPv6-Subnetzen vorgestellt. Ein IPv6-Subnetz ist ein IPv6-Adressraum, der über ein so genanntes Präfix spezifiziert wird und an eine bestimmte Netzwerk-Schnittstelle gebunden ist. Weitere Einstellungen betreffen das Veröffentlichen des Präfixes und des DNS-Dienstes innerhalb des Subnetzes sowie einen optionalen Router-Namen innerhalb dieses Subnetzes.

IPV6_NET_N
Diese Variable enthält die Anzahl der verwendeten IPv6-Subnetze. Mindestens ein IPv6-Subnetz sollte definiert werden, um IPv6 im lokalen Netz nutzen zu können.

Standard-Einstellung: IPV6_NET_N='0'

IPV6_NET_x
Diese Variable enthält für ein bestimmtes IPv6-Subnetz die IPv6-Adresse des Routers sowie die Größe der Netzmaske in CIDR-Notation. Soll das Subnetz öffentlich geroutet werden, so stammt es in der Regel vom Internet- bzw. Tunnel-Anbieter.


Wichtig: Soll in dem Subnetz die zustandslose Selbstkonfiguration (siehe den Abschnitt zu IPV6_NET_x_ADVERTISE weiter unten) aktiviert werden, dann muss die Länge des Subnetz-Präfixes 64 Bit betragen!


Wichtig: Ist das Subnetz an einen Tunnel angeschlossen (siehe IPV6_NET_x_TUNNEL weiter unten), dann darf hier nur der Teil der Router-Adresse angegeben werden, der nicht zum dem Tunnel zugeordneten Subnetz-Präfix (zu finden in IPV6_TUNNEL_x_PREFIX) gehört, da jenes Präfix und diese Adresse miteinander kombiniert werden! In früheren Versionen des IPv6-Pakets gab es die Variable IPV6_TUNNEL_x_PREFIX noch nicht, und Subnetz-Präfix sowie Router-Adresse wurden zusammen in IPV6_NET_x festgelegt. Das funktioniert aber nicht, wenn das vom Tunnelanbieter zugeordnete Subnetz-Präfix erst dynamisch beim Tunnelaufbau mitgeteilt wird. Außerdem bleibt dabei die Länge des Subnetz-Präfixes (hier: /48) im Dunkeln, so dass bestimmte vordefinierte Routen nicht ordentlich gesetzt werden können, was beim Routen zu bestimmten Zieladressen dann zu seltsamen Effekten führt. Deswegen wurde die Konfiguration entsprechend aufgetrennt.

Beispiele:

IPV6_NET_1='2001:db8:1743:42::1/64'       # ohne Tunnel: komplette Adresse
IPV6_NET_1_TUNNEL=''

IPV6_NET_2='0:0:0:42::1/64'               # mit Tunnel: partielle Adresse
IPV6_NET_2_TUNNEL='1'
IPV6_TUNNEL_1_PREFIX='2001:db8:1743::/48' # s. Abschnitt "Tunnel-Konfiguration"

IPV6_NET_x_DEV
Diese Variable enthält für ein bestimmtes IPv6-Subnetz den Namen der Netzwerk-Schnittstelle, an welche das IPv6-Netz gebunden wird. Dies kollidiert nicht mit den in der Basis-Konfiguration (base.txt) vergebenen Netzwerk-Schnittstellen, da einer Netzwerk-Schnittstelle sowohl IPv4- als auch IPv6-Adressen zugeordnet werden dürfen.

Beispiel: IPV6_NET_1_DEV='eth0'

IPV6_NET_x_TUNNEL
Diese Variable enthält für ein bestimmtes IPv6-Subnetz den Index des zugehörigen Tunnels. Das Präfix des angegebenen Tunnels wird mit der Router-Adresse kombiniert, um die vollständige IPv6-Adresse des Routers zu erhalten. Wenn die Variable leer oder nicht definiert ist, dann gehört zu dem Subnetz kein Tunnel, und in IPV6_NET_x muss die vollständige IPv6-Adresse des Routers inklusive Netzmaske angegeben werden (siehe oben).

Ein Tunnel kann mehreren Subnetzen zugeordnet werden, da ein Tunnel-Subnetzpräfix normalerweise groß genug ist, dass er in mehrere Subnetze aufgeteilt werden kann (/56 oder größer). Andersherum ist es natürlich nicht möglich, einem Subnetz mehrere Tunnel-Subnetzpräfixe zuzuordnen, da die Adresse des Subnetzes in diesem Fall mehrdeutig wäre.

Beispiel: IPV6_NET_1_TUNNEL='1'

IPV6_NET_x_ADVERTISE
Diese Variable legt fest, ob das eingestellte Subnetz-Präfix im LAN mittels ``Router Advertisements'' verbreitet wird. Dies wird für die so genannte ``stateless autoconfiguration'' (zustandslose Selbstkonfiguration) verwendet und ist nicht mit DHCPv6 zu verwechseln. Mögliche Werte sind ``yes'' und ``no''.

Es ist empfehlenswert, diese Einstellung zu aktivieren, es sei denn, alle Adressen im Netz werden statisch vergeben oder ein anderer Router ist bereits dafür zuständig, das Subnetz-Präfix anzukündigen.


Wichtig: Die automatische Verteilung des Subnetzes funktioniert nur, wenn das Subnetz ein /64-Netz ist, d.h. wenn die Länge des Subnetz-Präfixes 64 Bit beträgt! Der Grund hierfür ist, dass die anderen Hosts im Netzwerk ihre IPv6-Adresse aus dem Präfix und ihrer Host-MAC-Adresse berechnen und dies nicht funktioniert, wenn der Host-Anteil nicht 64 Bit beträgt. Wenn die Selbstkonfiguration fehlschlägt, sollte also geprüft werden, ob das Subnetz-Präfix nicht vielleicht falsch angegeben worden ist (z.B. als /48).

Standard-Einstellung: IPV6_NET_1_ADVERTISE='yes'

IPV6_NET_x_ADVERTISE_DNS
Diese Variable legt fest, ob auch der lokale DNS-Dienst im IPv6-Subnetz mittels ``Router Advertisements'' angekündigt werden soll. Dies funktioniert aber nur, wenn die IPv6-Funktionalität des DNS-Dienstes mit Hilfe der Variable DNS_SUPPORT_IPV6='yes' aktiviert ist. Mögliche Werte sind ``yes'' und ``no''.

Standard-Einstellung: IPV6_NET_1_ADVERTISE_DNS='no'

IPV6_NET_x_DHCP
Diese Variable aktiviert den DHCPv6-Dienst für dieses IPv6-Subnetz. Mögliche Werte sind ``yes'' und ``no''. DHCPv6 wird dabei nur verwendet, um Hosts in diesem Subnetz Informationen zum Domänen-Namen und zur Adresse des zu verwendenden DNS-Servers zukommen zu lassen. Die Zuordnung von IPv6-Adressen ist über DHCPv6 mit fli4l momentan nicht möglich.

Die Adresse des DNS-Servers wird nur dann via DHCPv6 veröffentlicht, wenn die IPv6-Unterstützung des DNS-Dienstes via DNS_SUPPORT_IPV6 im dns_dhcp-Paket eingeschaltet ist.


Wichtig: Die Variablen IPV6_NET_x_ADVERTISE_DNS und IPV6_NET_x_DHCP schließen sich nicht gegenseitig aus, sondern können beide aktiviert sein. In diesem Fall kann die Adresse des DNS-Servers auf zweierlei Weise von Hosts im lokalen Netzwerk in Erfahrung gebracht werden.


Pro Netzwerkschnittstelle darf höchstens ein gebundenes IPv6-Subnetz für DHCPv6 konfiguriert werden!

Standard-Einstellung: IPV6_NET_1_DHCP='no'

IPV6_NET_x_NAME
(optional) Diese Variable legt einen Interface-spezifischen Hostnamen für den Router in diesem IPv6-Subnetz fest.

Beispiel: IPV6_NET_1_NAME='fli4l-subnet1'

4.12.3.3 Tunnel-Konfiguration

Dieser Abschnitt stellt die Konfiguration von 6in4-IPv6-Tunneln vor. Ein solcher Tunnel bietet sich an, wenn der eigene Internet-Anbieter kein IPv6 von Haus aus unterstützt. In diesem Fall wird mit einem bestimmten Internet-Host eines Tunnel-Brokers, dem so genannten PoP (Point of Presence), via IPv4 eine bidirektionale Verbindung aufgebaut, über die dann alle IPv6-Pakete verpackt geroutet werden (deswegen 6 ``in'' 4, weil die IPv6-Pakete innerhalb von IPv4-Paketen gekapselt werden).4.12 Damit das funktioniert, muss zum einen der Tunnel aufgebaut und zum anderen der Router so konfiguriert werden, dass die IPv6-Pakete, die ins Internet sollen, auch über den Tunnel geroutet werden. Der erste Teil wird in diesem Abschnitt konfiguriert, der zweite Teil wird im nächsten Abschnitt beschrieben.

IPV6_TUNNEL_N
Diese Variable enthält die Anzahl der aufzubauenden 6in4-Tunnel.

Beispiel: IPV6_TUNNEL_N='1'

IPV6_TUNNEL_x_TYPE
Diese Variable bestimmt den Typ des Tunnels. Momentan werden die Werte ``raw'' für ``rohe'' Tunnel, ``static'' für statische Tunnel und ``he'' für Tunnel des Anbieters Hurricane Electric unterstützt. Mehr zu Heartbeat-Tunneln steht im nächsten Absatz.

Beispiel: IPV6_TUNNEL_1_TYPE='he'

IPV6_TUNNEL_x_DEFAULT
Diese Variable legt fest, ob IPv6-Pakete, die nicht an das lokale bzw. die lokalen Netze adressiert sind, über diesen Tunnel geroutet werden sollen. Es kann nur einen solchen Tunnel geben (weil nur eine Default-Route existieren kann). Mögliche Werte sind ``yes'' und ``no''.


Wichtig: Genau ein Tunnel sollte ein Default-Gateway für nausgehende IPv6-Daten sein, da andernfalls eine Kommunikation mit IPv6-Hosts im Internet nicht möglich ist! Die ausschließliche Verwendung von Nicht-Default-Tunneln ist nur sinnvoll, wenn ausgehende IPv6-Daten über eine separat konfigurierte Default-Route geschickt werden, die nicht mit einem Tunnel zusammenhängt. Siehe hierzu auch die Einleitung zum Unterabschnitt ``Routen-Konfiguration'' sowie die Beschreibung der Variable IPV6_ROUTE_x weiter unten.

Standard-Konfiguration: IPV6_TUNNEL_1_DEFAULT='no'

IPV6_TUNNEL_x_PREFIX
Diese Variable enthält den IPv6-Subnetzpräfix des Tunnels in CIDR-Notation, d.h. es wird sowohl eine IPv6-Adresse als auch die Länge des Präfixes angegeben. Diese Angabe wird in der Regel vom Tunnelanbieter vorgegeben. Bei Tunnelanbietern, die den Präfix beim Tunnelaufbau jedes Mal neu vergeben, ist diese Angabe unnötig. (Momentan werden solche Anbieter aber noch nicht unterstützt.) Diese Variable muss auch bei rohen (``raw'') Tunneln leer bleiben.


Wichtig: Diese Variable darf leer bleiben, wenn dem Tunnel noch kein Subnetz-Präfix zugewiesen worden ist. Allerdings kann dieser Tunnel dann nicht einem IPv6-Subnetz (IPV6_NET_x) zugeordnet werden, weil die IPv6-Adressen im Subnetz nicht berechnet werden können. Sinnvoll ist eine solche Konfiguration also nur übergangsweise, etwa wenn der Tunnel einige Zeit aktiv sein muss, bevor der Tunnelanbieter einem ein Subnetz-Präfix zuweist.

Beispiele:

IPV6_TUNNEL_1_PREFIX='2001:db8:1743::/48'      # /48-Subnetz
IPV6_TUNNEL_2_PREFIX='2001:db8:1743:5e00::/56' # /56-Subnetz

IPV6_TUNNEL_x_LOCALV4
Diese Variable enthält die lokale IPv4-Adresse des Tunnels oder den Wert `dynamic', wenn die dynamisch zugewiesene IPv4-Adresse des aktiven WAN-Circuits verwendet werden soll. Letzteres ist nur sinnvoll, wenn es sich um einen Heartbeat-Tunnel handelt (siehe IPV6_TUNNEL_x_TYPE weiter unten).

Beispiele:

IPV6_TUNNEL_1_LOCALV4='172.16.0.2'
IPV6_TUNNEL_2_LOCALV4='dynamic'

IPV6_TUNNEL_x_REMOTEV4
Diese Variable enthält die entfernte IPv4-Adresse des Tunnels. Diese Angabe wird in der Regel vom Tunnel-Anbieter vorgegeben.

Beispiel (entspricht dem PoP deham01 von Easynet):

IPV6_TUNNEL_1_REMOTEV4='212.224.0.188'


Wichtig: Wenn PF_INPUT_ACCEPT_DEF auf ``no'' steht, d.h. wenn die IPv4-Firewall manuell konfiguriert wird, dann wird eine Regel benötigt, die alle IPv6-in-IPv4-Pakete (IP-Protokoll 41) vom Tunnelendpunkt akzeptiert. Für den o.g. Tunnelendpunkt sähe die entsprechende Regel wie folgt aus:

PF_INPUT_x='prot:41 212.224.0.188 ACCEPT'

IPV6_TUNNEL_x_LOCALV6
Diese Variable legt die lokale IPv6-Adresse des Tunnels inklusive verwendeter Netzmaske in CIDR-Notation fest. Diese Angabe wird vom Tunnelanbieter vorgegeben. Bei Tunnelanbietern, welche die Tunnelendpunkte beim Tunnelaufbau jedes Mal neu vergeben, ist diese Angabe unnötig. (Momentan werden solche Anbieter aber noch nicht unterstützt.)

Beispiel: IPV6_TUNNEL_1_LOCALV6='2001:db8:1743::2/112'

IPV6_TUNNEL_x_REMOTEV6
Diese Variable legt die entfernte IPv6-Adresse des Tunnels fest. Diese Angabe wird vom Tunnelanbieter vorgegeben. Eine Netzmaske wird nicht benötigt, da sie der Variable IPV6_TUNNEL_x_LOCALV6 entnommen wird. Bei Tunnelanbietern, welche die Tunnelendpunkte beim Tunnelaufbau jedes Mal neu vergeben, ist diese Angabe unnötig. (Momentan werden solche Anbieter aber noch nicht unterstützt.)

Beispiel: IPV6_TUNNEL_1_REMOTEV6='2001:db8:1743::1'

IPV6_TUNNEL_x_DEV
(optional) Diese Variable enthält den Namen der zu erstellenden Tunnel-Netzwerkschnittstelle. Verschiedene Tunnel müssen unterschiedlich benannt werden, damit alles funktioniert. Falls die Variable nicht definiert ist, wird ein Tunnelname automatisch generiert (``v6tun'' + Tunnelindex).

Beispiel: IPV6_TUNNEL_1_DEV='6in4'

IPV6_TUNNEL_x_MTU
(optional) Diese Variable enthält die Größe der MTU (Maximum Transfer Unit) in Bytes, d.h. des größten Pakets, das noch getunnelt werden kann. Diese Angabe wird in der Regel vom Tunnelanbieter vorgegeben. Die Standard-Einstellung, falls nichts angegeben wird, lautet ``1280'' und sollte mit allen Tunneln funktionieren.

Standard-Konfiguration: IPV6_TUNNEL_1_MTU='1280'

Einige Tunnelanbieter verlangen, dass über den Tunnel permanent ein Lebenszeichen vom Router an den Anbieter gesandt wird, um zu verhindern, dass ein Host einen Tunnel in Anspruch nimmt, obwohl er ihn nicht nutzt. Dazu wird ein so genanntes Heartbeat-Protokoll (dt. ``Herzschlag'') verwendet. Zusätzlich verlangen Anbieter in der Regel eine erfolgreiche Anmeldung mit Benutzernamen und Passwort, um Missbrauch zu vermeiden. Soll ein solcher Heartbeat-Tunnel genutzt werden, dann müssen entsprechende Angaben gemacht werden, die im Folgenden beschrieben werden.

IPV6_TUNNEL_x_USERID
Diese Variable enthält den Namen des Benutzers, der beim Tunnel-Login erforderlich ist.

Beispiel: IPV6_TUNNEL_1_USERID='USERID'

IPV6_TUNNEL_x_PASSWORD
Diese Variable enthält das Passwort für den oben angegebenen Benutzernamen. Es darf keine Leerzeichen enthalten.

Beispiel: IPV6_TUNNEL_1_PASSWORD='passwort'

IPV6_TUNNEL_x_TUNNELID
Diese Variable enthält den Identifikator des Tunnels.

Beispiel: IPV6_TUNNEL_1_TUNNELID='TunnelID'

IPV6_TUNNEL_x_TIMEOUT
(optional) Diese Variable enthält die Zeitspanne in Sekunden, die beim Tunnelaufbau maximal gewartet wird. Der Standard-Wert ist abhängig vom eingestellten Tunnelanbieter.

Beispiel: IPV6_TUNNEL_1_TIMEOUT='30'

4.12.3.4 Routen-Konfiguration

Routen sind Wege für IPv6-Pakete. Damit der Router weiß, welches eingehende Paket er wohin schicken soll, greift er auf eine Routing-Tabelle zurück, in der genau diese Informationen zu finden sind. Im Falle von IPv6 ist es wichtig zu wissen, wohin IPv6-Pakete geschickt werden, die nicht ins lokale Netz sollen. Eine Default-Route, die alle Pakete an das andere Ende eines IPv6-Tunnels schickt, wird automatisch konfiguriert, wenn IPV6_TUNNEL_x_DEFAULT für den entsprechenden Tunnel gesetzt ist. Andere Routen, die etwa benachbarte IPv6-Subnetze miteinander verbinden, können hier konfiguriert werden.

IPV6_ROUTE_N
Diese Variable legt die Anzahl der zu spezifizierenden IPv6-Routen fest. In der Regel werden keine zusätzlichen IPv6-Routen benötigt.

Standard-Einstellung: IPV6_ROUTE_N='0'

IPV6_ROUTE_x
Diese Variable enthält die Route in der Form `Zielnetz Gateway', wobei das Zielnetz in der CIDR-Notation erwartet wird. Für die Default-Route muss als Zielnetz ::/0 verwendet werden. Es ist aber nicht nötig, Default-Routen, die über einen Tunnel gehen, hier zu konfigurieren (siehe Einleitung zu diesem Abschnitt).

Beispiel: IPV6_ROUTE_1='2001:db8:1743:44::/64 2001:db8:1743:44::1'

4.12.3.5 IPv6-Firewall

Wie für IPv4 wird auch für IPv6-Netzwerke eine Firewall benötigt, damit nicht jeder von außen jeden Rechner im lokalen Netz erreichen kann. Dies ist um so wichtiger, als dass jeder Rechner im Normalfall eine weltweit eindeutige IPv6-Adresse erhält, die dem Rechner permanent zugeordnet werden kann, da sie auf der MAC-Adresse der verwendeten Netzwerkkarte aufbaut.4.13 Deshalb verbietet die Firewall erst einmal jegliche Zugriffe von außen und kann dann durch entsprechende Einträge in diesem Abschnitt Stück für Stück - je nach Bedarf - geöffnet werden.

Die Konfiguration der IPv6-Firewall entspricht im Großen und Ganzen der Konfiguration der IPv4-Firewall. Auf Besonderheiten und Unterschiede wird gesondert eingegangen.

PF6_LOG_LEVEL
Für alle folgenden Ketten gilt die in PF6_LOG_LEVEL vorgenommene Einstellung der Protokoll-Stufe, deren Inhalt auf einen der folgenden Werte gesetzt werden kann: debug, info, notice, warning, err, crit, alert, emerg.

PF6_INPUT_POLICY
Diese Variable legt die Standard-Strategie für auf dem Router eingehende Pakete fest (INPUT-Kette). Mögliche Werte sind ``REJECT'' (Standard, weist alle Pakete ab), ``DROP'' (verwirft klammheimlich alle Pakete) und ``ACCEPT'' (akzeptiert alle Pakete). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_INPUT_POLICY.

Standard-Einstellung: PF6_INPUT_POLICY='REJECT'

PF6_INPUT_ACCEPT_DEF
Diese Variable aktiviert die voreingestellten Regeln für die INPUT-Kette der IPv6-Firewall. Mögliche Werte sind ``yes'' und ``no''.

Die voreingestellten Regeln öffnen die Firewall für eingehende ICMPv6-Pings (ein Ping pro Sekunde als Limit) sowie für NDP-Pakete (Neighbour Discovery Procotol), das zur zustandslosen Selbstkonfiguration von IPv6-Netzen benötigt wird. Verbindungen von localhost sowie Antwortpakete zu lokal initiierten Verbindungen werden ebenfalls erlaubt. Schließlich wird die IPv4-Firewall dahingehend angepasst, dass für jeden Tunnel gekapselte IPv6-in-IPv4-Pakete vom Tunnelendpunkt akzeptiert werden.

Standard-Einstellung: PF6_INPUT_ACCEPT_DEF='yes'

PF6_INPUT_LOG
Diese Variable aktiviert das Logging aller zurückgewiesenen eingehenden Pakete. Mögliche Werte sind ``yes'' und ``no''. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_INPUT_LOG.

Standard-Einstellung: PF6_INPUT_LOG='no'

PF6_INPUT_LOG_LIMIT
Diese Variable konfiguriert das Log-Limit der INPUT-Kette der IPv6-Firewall, um die Log-Datei lesbar zu halten. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_INPUT_LOG_LIMIT.

Standard-Einstellung: PF6_INPUT_LOG_LIMIT='3/minute:5'

PF6_INPUT_REJ_LIMIT
Diese Variable stellt das Limit für das Zurückweisen von eingehenden TCP-Paketen ein. Überschreitet ein solches Paket dieses Limit, wird das Paket klammheimlich verworfen (DROP). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_INPUT_REJ_LIMIT.

Standard-Einstellung: PF6_INPUT_REJ_LIMIT='1/second:5'

PF6_INPUT_UDP_REJ_LIMIT
Diese Variable stellt das Limit für das Zurückweisen von eingehenden UDP-Paketen ein. Überschreitet ein solches UDP-Paket dieses Limit, wird es klammheimlich verworfen (DROP). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_INPUT_UDP_REJ_LIMIT.

Standard-Einstellung: PF6_INPUT_UDP_REJ_LIMIT='1/second:5'

PF6_INPUT_ICMP_ECHO_REQ_LIMIT
Definiert, wie häufig auf eine ICMPv6-Echo-Anfrage reagiert werden soll. Die Häufigkeit wird analog zur Limit-Einschränkung als `n/Zeiteinheit' mit Bursts beschrieben, also z.B. '3/minute:5'. Ist das Limit überschritten, wird das Paket einfach ignoriert (DROP). Ist dieser Eintrag leer, wird der Standardwert '1/second:5' verwendet; enhält er 'none', wird keine Limitierung durchgeführt.

Standard-Einstellung: PF6_INPUT_ICMP_ECHO_REQ_LIMIT='1/second:5'

PF6_INPUT_ICMP_ECHO_REQ_SIZE
Definiert, wie groß eine empfangene ICMPv6-Echo-Anfrage sein darf (in Bytes). In dieser Angabe sind neben den ``Nutzdaten'' auch die Paket-Header mit zu berücksichtigen. Der Standard-Wert liegt bei 150 Bytes.

Standard-Einstellung: PF6_INPUT_ICMP_ECHO_REQ_SIZE='150'

PF6_INPUT_N
Diese Variable enthält die Anzahl der IPv6-Firewallregeln für eingehende Pakete (INPUT-Kette). Standardmäßig werden zwei Regeln aktiviert: Die erste erlaubt allen lokalen Hosts Zugriff auf den Router über so genannte Link-Level-Adressen, und die zweite erlaubt die Kommunikation von Hosts aus dem ersten definierten IPv6-Subnetz mit dem Router.

Falls mehrere lokale IPv6-Subnetze definiert werden, muss die zweite Regel entsprechend oft vervielfältigt werden. Siehe hierzu die Konfigurationsdatei.

Beispiel: PF6_INPUT_N='2'

PF6_INPUT_x
Diese Variable spezifiziert eine Regel für die INPUT-Kette der IPv6-Firewall. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_INPUT_x.

Unterschiede zur IPv4-Firewall:

Beispiele:

PF6_INPUT_1='[fe80::0/10] ACCEPT'
PF6_INPUT_2='IPV6_NET_1 ACCEPT'
PF6_INPUT_3='tmpl:samba DROP NOLOG'

PF6_INPUT_x_COMMENT
Diese Variable enthält eine Beschreibung bzw. einen Kommentar zur zugehörigen INPUT-Regel.

Beispiel: PF6_INPUT_3_COMMENT='no samba traffic allowed'

PF6_FORWARD_POLICY
Diese Variable legt die Standard-Strategie für von dem Router weiterzuleitenden Pakete fest (FORWARD-Kette). Mögliche Werte sind ``REJECT'' (Standard, weist alle Pakete ab), ``DROP'' (verwirft klammheimlich alle Pakete) und ``ACCEPT'' (akzeptiert alle Pakete). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_FORWARD_POLICY.

Standard-Einstellung: PF6_FORWARD_POLICY='REJECT'

PF6_FORWARD_ACCEPT_DEF
Diese Variable aktiviert die voreingestellten Regeln für die FORWARD-Kette der IPv6-Firewall. Mögliche Werte sind ``yes'' und ``no''.

Die voreingestellten Regeln öffnen die Firewall für ausgehende ICMPv6-Pings (ein Ping pro Sekunde als Limit). Antwortpakete zu bereits erlaubten Verbindungen werden ebenfalls erlaubt.

Standard-Einstellung: PF6_FORWARD_ACCEPT_DEF='yes'

PF6_FORWARD_LOG
Diese Variable aktiviert das Logging aller zurückgewiesenen weterzuleitenden Pakete. Mögliche Werte sind ``yes'' und ``no''. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_FORWARD_LOG.

Standard-Einstellung: PF6_FORWARD_LOG='no'

PF6_FORWARD_LOG_LIMIT
Diese Variable konfiguriert das Log-Limit der FORWARD-Kette der IPv6-Firewall, um die Log-Datei lesbar zu halten. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_FORWARD_LOG_LIMIT.

Standard-Einstellung: PF6_FORWARD_LOG_LIMIT='3/minute:5'

PF6_FORWARD_REJ_LIMIT
Diese Variable stellt das Limit für das Zurückweisen von weiterzuleitenden TCP-Paketen ein. Überschreitet ein solches TCP-Paket dieses Limit, wird es klammheimlich verworfen (DROP). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_FORWARD_REJ_LIMIT.

Standard-Einstellung: PF6_FORWARD_REJ_LIMIT='1/second:5'

PF6_FORWARD_UDP_REJ_LIMIT
Diese Variable stellt das Limit für das Zurückweisen von weiterzuleitenden UDP-Paketen ein. Überschreitet ein solches UDP-Paket dieses Limit, wird es klammheimlich verworfen (DROP). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_FORWARD_UDP_REJ_LIMIT.

Standard-Einstellung: PF6_FORWARD_UDP_REJ_LIMIT='1/second:5'

PF6_FORWARD_N
Diese Variable enthält die Anzahl der IPv6-Firewallregeln für weiterzuleitende Pakete (FORWARD-Kette). Standardmäßig werden zwei Regeln aktiviert: Die erste verhindert die Weiterleitung aller lokalen Samba-Pakete in nicht-lokale Netze, und die zweite erlaubt letzteres für alle anderen lokalen Pakete aus dem ersten definierten IPv6-Subnetz.

Falls mehrere lokale IPv6-Subnetze definiert werden, muss die letzte Regel entsprechend oft vervielfältigt werden. Siehe hierzu die Konfigurationsdatei.

Beispiel: PF6_FORWARD_N='2'

PF6_FORWARD_x
Diese Variable spezifiziert eine Regel für die FORWARD-Kette der IPv6-Firewall. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_FORWARD_x.

Unterschiede zur IPv4-Firewall:

Beispiele:

PF6_FORWARD_1='tmpl:samba DROP'
PF6_FORWARD_2='IPV6_NET_1 ACCEPT'

PF6_FORWARD_x_COMMENT
Diese Variable enthält eine Beschreibung bzw. einen Kommentar zur zugehörigen FORWARD-Regel.

Beispiel: PF6_FORWARD_1_COMMENT='no samba traffic allowed'

PF6_OUTPUT_POLICY
Diese Variable legt die Standard-Strategie für vom Router ausgehende Pakete fest (OUTPUT-Kette). Mögliche Werte sind ``REJECT'' (Standard, weist alle Pakete ab), ``DROP'' (verwirft klammheimlich alle Pakete) und ``ACCEPT'' (akzeptiert alle Pakete). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_OUTPUT_POLICY.

Standard-Einstellung: PF6_OUTPUT_POLICY='REJECT'

PF6_OUTPUT_ACCEPT_DEF
Diese Variable aktiviert die voreingestellten Regeln für die OUTPUT-Kette der IPv6-Firewall. Mögliche Werte sind ``yes'' und ``no''. Momentan existieren keine voreingestellten Regeln.

Standard-Einstellung: PF6_OUTPUT_ACCEPT_DEF='yes'

PF6_OUTPUT_LOG
Diese Variable aktiviert das Logging aller zurückgewiesenen ausgehenden Pakete. Mögliche Werte sind ``yes'' und ``no''. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_OUTPUT_LOG.

Standard-Einstellung: PF6_OUTPUT_LOG='no'

PF6_OUTPUT_LOG_LIMIT
Diese Variable konfiguriert das Log-Limit der OUTPUT-Kette der IPv6-Firewall, um die Log-Datei lesbar zu halten. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_OUTPUT_LOG_LIMIT.

Standard-Einstellung: PF6_OUTPUT_LOG_LIMIT='3/minute:5'

PF6_OUTPUT_REJ_LIMIT
Diese Variable stellt das Limit für das Zurückweisen von ausgehenden TCP-Paketen ein. Überschreitet ein solches Paket dieses Limit, wird das Paket klammheimlich verworfen (DROP). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_OUTPUT_REJ_LIMIT.

Standard-Einstellung: PF6_OUTPUT_REJ_LIMIT='1/second:5'

PF6_OUTPUT_UDP_REJ_LIMIT
Diese Variable stellt das Limit für das Zurückweisen von ausgehenden UDP-Paketen ein. Überschreitet ein solches UDP-Paket dieses Limit, wird es klammheimlich verworfen (DROP). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_OUTPUT_UDP_REJ_LIMIT.

Standard-Einstellung: PF6_OUTPUT_UDP_REJ_LIMIT='1/second:5'

PF6_OUTPUT_N
Diese Variable enthält die Anzahl der IPv6-Firewallregeln für eingehende Pakete (OUTPUT-Kette). Standardmäßig werden zwei Regeln aktiviert: Die erste erlaubt allen lokalen Hosts Zugriff auf den Router über so genannte Link-Level-Adressen, und die zweite erlaubt die Kommunikation von Hosts aus dem ersten definierten IPv6-Subnetz mit dem Router.

Falls mehrere lokale IPv6-Subnetze definiert werden, muss die zweite Regel entsprechend oft vervielfältigt werden. Siehe hierzu die Konfigurationsdatei.

Beispiel: PF6_OUTPUT_N='1'

PF6_OUTPUT_x
Diese Variable spezifiziert eine Regel für die OUTPUT-Kette der IPv6-Firewall. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_OUTPUT_x.

Unterschiede zur IPv4-Firewall:

Beispiele:

PF6_OUTPUT_1='tmpl:ftp IPV6_NET_1 ACCEPT HELPER:ftp'

PF6_OUTPUT_x_COMMENT
Diese Variable enthält eine Beschreibung bzw. einen Kommentar zur zugehörigen OUTPUT-Regel.

Beispiel: PF6_OUTPUT_3_COMMENT='no samba traffic allowed'

PF6_USR_CHAIN_N
Diese Variable enthält die Anzahl der vom Benutzer definierten IPv6-Firewall-Tabellen. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_USR_CHAIN_N.

Standard-Einstellung: PF6_USR_CHAIN_N='0'

PF6_USR_CHAIN_x_NAME
Diese Variable enthält den Namen der entsprechenden benutzerdefinierten IPv6-Firewall-Tabelle. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_USR_CHAIN_x_NAME.

Beispiel: PF6_USR_CHAIN_1_NAME='usr-myvpn'

PF6_USR_CHAIN_x_RULE_N
Diese Variable enthält die Anzahl der IPv6-Firewallregeln in der zugehörigen benutzerdefinierten IPv6-Firewall-Tabelle. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_USR_CHAIN_x_RULE_N.

Beispiel: PF6_USR_CHAIN_1_RULE_N='0'

PF6_USR_CHAIN_x_RULE_x
Diese Variable spezifiziert eine Regel für die benutzerdefinierte IPv6-Firewall-Tabelle. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_USR_CHAIN_x_RULE_x.

Unterschiede zur IPv4-Firewall:

PF6_USR_CHAIN_x_RULE_x_COMMENT
Diese Variable enthält eine Beschreibung bzw. einen Kommentar zur zugehörigen Regel.

Beispiel: PF6_USR_CHAIN_1_RULE_1_COMMENT='some user-defined rule'

PF6_POSTROUTING_N
Diese Variable enthält die Anzahl der IPv6-Firewallregeln fürs Maskieren (POSTROUTING-Kette). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_POSTROUTING_N.

Beispiel: PF6_POSTROUTING_N='2'

PF6_POSTROUTING_x PF6_POSTROUTING_x_COMMENT

Eine Liste der Regeln, die beschreiben, welche IPv6-Pakete vom Router maskiert werden (bzw. unmaskiert weitergeleitet werden). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_POSTROUTING_x.

PF6_PREROUTING_N
Diese Variable enthält die Anzahl der IPv6-Firewallregeln fürs Weiterleiten an ein anderes Ziel (PREROUTING-Kette). Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_PREROUTING_N.

Beispiel: PF6_PREROUTING_N='2'

PF6_PREROUTING_x PF6_PREROUTING_x_COMMENT

Eine Liste der Regeln, die beschreiben, welche IPv6-Pakete vom Router an ein anderes Ziel weitergeleitet werden sollen. Für eine genauere Beschreibung siehe die Dokumentation der Variable PF_PREROUTING_x.

4.12.4 Web-GUI

Das Paket installiert einen Menüeintrag ``Paketfilter (IPv6)'' im Mini-HTTPD, unter dem die Einträge des für IPv6 konfigurierten Paketfilters eingesehen werden können.


Footnotes

... unterstützt,4.10
nur ungefähr, weil einige Adressen speziellen Zwecken dienen, etwa für Broad- und Multicasting
... Adressvorräte.4.11
Inzwischen sind die letzten IPv4-Adressblöcke von der IANA vergeben worden.
... werden).4.12
Es handelt sich um das IPv4-Protokoll 41, ``IPv6 encapsulation''.
... aufbaut.4.13
Eine Ausnahme existiert, wenn auf den LAN-Hosts die so genannten ``Privacy Extensions'' aktiviert werden, weil dann ein Teil der IPv6-Adresse zufällig generiert wird. Diese Adressen sind jedoch per Definition nicht nach außen hin bekannt und somit für die Firewall-Konfiguration nur bedingt bis gar nicht relevant.
© 2001-2019 Das fli4l-Team - April 28, 2019