IPv6

From Univention Wiki

Revision as of 10:03, 27 January 2010 by Crunchy (talk | contribs)
Jump to: navigation, search

Internet Protokoll Version 6

Auf dieser Seite wird erläutert, welche Anpassungen im Univention Corporate Server (UCS) vorgenommen werden müssen, damit IPv6 bestmöglich unterstützt wird.

Dabei wird zunächst erläutert, welche Änderungen manuell auf einem bestehenden UCS-System vorgenommen werden müssten. Zusätzlich wird auf die Komponente ipv6-experimental eingegangen, mit der sich diese Änderungen über Univention Configuration Registry-Variablen steuern lassen und die das Anlegen von IPv6-Adressen und IPv6 DNS-Zonen im Univention Directory Manager ermöglicht.

Der Status der Entwicklung der Unterstützung von IPv6 ist im Bugzilla über den Meta-Bug #17387 festgehalten (https://forge.univention.org/bugzilla/show_bug.cgi?id=17387)

Einleitung

IPv6 wird vom Linux Kernel schon lange unterstützt. Der Befehl ifconfig zeigt auf einem normalen Linux-System mit Kernel 2.6 immer zumindest auch eine lokale inet6-Adresse pro Schnittstelle an, wenn das Kernel-Modul ipv6 geladen ist. Dies ist auch auf Standard UCS-Systemen der Fall.

Im Unterschied zu den 32 Bit-langen IPv4 Adressen sind IPv6-Adressen 128 Bit lang. Die ersten Bits kennzeichnen das Adresspräfix und werden zum Beispiel zur Aufteilung in Subnetze genutzt, die weiteren Bits werden als Interface Identifier bezeichnet. Eine IPv6-Adresse könnte beispielsweise 2001:db8:0100:0000:0000:0000:0000:0002 lauten. Die führenden Nullen können weggelassen werden und mehrere aufeinander folgende Blöcke mit Nullen können durch :: abgekürzt werden. So verkürzt sich die Schreibweise in diesem Fall auf 2001:db8:100::2. Die grösstmögliche Vereinfachung ergibt sich bei der localhost-Adresse, die ::1 lautet.

Es gibt verschiedene Möglichkeiten, private IPv6-Adressen zu erstellen, bei Beispielen in dieser Dokumentation wird das Präfix 2001:db8</tt> verwendet, das für Dokumentationszwecke gedacht ist und nicht ins Internet geroutet werden sollte.

Viele Dienste benutzen 'auf IPv6 abgebildete IPv4-Adressen' (IPv4-mapped IPv6 addresses), die sich aus dem Präfix ::ffff: und der IPv4-Adresse zusammensetzen. So wird zum Beispiel aus der IPv4-Adresse 1.2.3.4 die IPv6-Adresse ::ffff:1.2.3.4.

Im Prinzip gibt es drei Möglichkeiten, das Internetprotokoll einzusetzen: nur IPv4, nur IPv6 oder beides gemischt (dual-stack). Der momentane Stand der vorherrschenden Netzstrukturen lässt meistens eine gemischte Struktur sinnvoll erscheinen, da viele Netzkomponenten (Hard- und Software) IPv6 noch nicht oder nur unvollständig unterstützen.

Pakete

Im Folgenden wird auf eine Auswahl von Diensten eingegangen und kurz beschrieben, welche Anpassungen auf einem UCS System vorzunehmen sind, um IPv6 bestmöglich zu unterstützen.

Für jeden Dienst werden im ersten Teil der nächsten Kapitel die manuellen Anpassungen erläutert. So kann in einem bestehenden UCS-System ohne die Nutzung der Komponente IPv6 genutzt werden.

Im zweiten Teil der nächsten Kapitel wird auf die Komponente ipv6-experimental eingegangen. Die darin enthaltenen Pakete nehmen einige Anpassungen vor, um IPv6-Funktionen über Univention Configuration Registry-Variablen steuern und IPv6-Adressen und IPv6 DNS-Zonen im Univention Directory Manager anlegen und bearbeiten zu können.

Falls auf dem UCS 2.3 Zielsystem das Online Repository apt.univention.de eingetragen ist, lassen sich mit folgendem Kommando die notwendigen Repository-Einträge für die ipv6-Einbindung in die apt-Quelllisten eintragen:

ucr set repository/online/component/ipv6-experimental=yes \
       repository/online/component/ipv6-experimental/parts=unmaintained

Mehr Informationen dazu gibt es im UCS 2.3-Handbuch unter Hinzufügen von Komponenten -Repositories. Alternativ können folgende Zeilen manuell in die Datei /etc/apt/sources.list eingetragen werden:

deb http://apt.univention.de/2.3/unmaintained/component/ ipv6-experimental/all/
deb http://apt.univention.de/2.3/unmaintained/component/ ipv6-experimental/i386/
deb http://apt.univention.de/2.3/unmaintained/component/ ipv6-experimental/amd64/
deb http://apt.univention.de/2.3/unmaintained/component/ ipv6-experimental/extern/
deb-src http://apt.univention.de/2.3/unmaintained/component/ ipv6-experimental/source/

Anschließend kann das System mit dem folgenden Kommando aktualisiert werden:

univention-actualise --dist-upgrade

Netzwerkschnittstellen

Manuelle Anpassungen

Zum Anlegen einer statischen IPv6-Adresse - zum Beispiel 2001:db8:100::2 für die Schnittstelle eth0 - muss in der Datei /etc/univention/templates/files/etc/network/interfaces am Ende Folgendes angefügt werden:

# statische IPv6-Adresse
iface eth0 inet6 static
address 2001:db8:100::2
# optional: Netzmaske
netmask 64

Danach sollten die Änderungen angewendet werden:

ucr commit /etc/network/interfaces

und die Netzwerkschnittstelle oder das Netzwerk neu gestartet werden mit:

invoke-rc.d networking restart

Im Anschluss zeigt der Befehl ifconfig dann zusätzlich eine globale IPv6-Adresse, in diesem Beispiel also:

inet6 addr: 2001:db8:100::2/64 Scope:Global


Komponente ipv6-experimental

Paket: univention-config-registry

Nach der Installation können diese neuen Univention Configuration Registry-Variablen verwendet werden:

UCR-Variable Erklärung
interfaces/eth.*/ipv6/address statische IPv6-Adresse für diese Schnittstelle in /etc/network/interfaces anlegen
interfaces/eth.*/ipv6/netmask IPv6-Netzmaske für diese Schnittstelle in /etc/network/interfaces anlegen
ipv6/gateway Standard IPv6-Gateway in /etc/network/interfaces anlegen

Apache2

Manuelle Anpassungen

IPv6 wird beim Apache Webserver seit der Version 2.0.14 unterstützt und ist in der Voreinstellung aktiviert. Apache verwendet intern IPv4-mapped IPv6 Adressen, um sowohl IPv4 als auch IPv6 unterstützen zu können.

Um Apache das Antworten auf IPv6-Anfragen zu verbieten, müssen die Listen-Einträge in den folgenden Dateien geändert werden:

/etc/univention/templates/files/etc/apache2/ports.conf

# Listen 80 = http-port IPv4 and IPv6
Listen 0.0.0.0:80

/etc/univention/templates/files/etc/apache2/mods-available/ssl.conf

# Listen 443 = https-port IPv4 and IPv6
Listen 0.0.0.0:443

Nach der Aktivierung der Änderungen mit

ucr commit /etc/apache2/ports.conf /etc/apache2/mods-available/ssl.conf

sollte der Webserver neu gestartet werden:

invoke-rc.d apache2 restart

Komponente ipv6-experimental

Paket: univention-apache

Nach der Installation steht die neue Univention Configuration-Variable apache2/ipv6 zur Verfügung. Die Variable ist zunächst auf yes gesetzt und bildet damit das normale Verhalten von Apache ab. Dadurch wird Listen 80 in /etc/apache2/ports.conf und Listen 443 in /etc/apache2/mods-available/ssl.conf eingetragen.

Das Setzen der Univention Configuration-Variable apache2/ipv6 auf no zwingt Apache dazu, nur noch auf IPv4-Anfragen zu hören, indem den oben genannten Ports 0.0.0.0: vorangestellt wird.

Nachdem die Variable geändert wurde, muss Apache neu gestartet werden:

invoke-rc.d apache2 restart

Informationen zur IPv6-Notation

In den Konfigurationsdateien von Apache für spezielle Listen-Einträge oder in Virtual Host-Einträgen und in Web-Browsern muss die IPv6-Adresse in eckige Klammern gesetzt werden.

Beispiele:

http://[2001:db8:100::3]/index.html
Listen [2001:db8::a00:20ff:fea7:ccea]:80

DNS: Bind

Manuelle Anpassungen

Damit der ISC Nameserver bind9 IPv6 versteht, muss in den Konfigurationsdateien die Option listen-on-v6 hinzugefügt werden:

/etc/univention/templates/files/etc/bind/named.conf

options {
  directory "/var/cache/bind";
  also-notify {
    127.0.0.1;
  }
  listen-on-v6 { any; };
 };

/etc/univention/templates/files/etc/bind/named.conf.proxy

options {
  directory "/var/cache/bind";
  listen-on-v6 { any; };
};

Damit horcht der Nameserver auf Port 53 auf IPv6 Adressen. Der Eintrag lässt sich noch verfeinern, zum Beispiel:

listen-on-v6 { any; };
listen-on-v6 port 1234 { ;!2001:db8::/32; any; };

Damit horcht er auf Port 53 auf beliebige IPv6-Adressen und auf Port 1234 auf IPv6-Adressen, die nicht dem Präfix 2001:db8::/32 entsprechen.

Die IPv6-Funktionalität lässt sich auch komplett unterbinden:

listen-on-v6 { none; };

Neue Zonendateien können wie üblich angelegt und zum Beispiel mit

include "/etc/bind/neue_zone.conf";

am Ende der Datei /etc/univention/templates/files/etc/bind/named.conf einbezogen werden. Danach sollten die Änderungen wie gewohnt mit

ucr commit /etc/bind/named.conf /etc/bind/named.conf.proxy

übernommen werden.

Nachdem das Template geändert wurde, muss bind neu gestartet werden:

invoke-rc.d univention-bind restart

und

invoke-rc.d univention-bind-proxy restart

Komponente ipv6-experimental

Pakete: univention-bind

Die neue Univention Configuration-Variable bind/ipv6 wird bei der Installation angelegt und auf no gesetzt. Das Setzen der Univention Configuration-Variable bind/ipv6 auf yes aktiviert IPv6 in bind9.

Nachdem die Variable geändert wurde, muss der Nameserver neu gestartet werden:

invoke-rc.d univention-bind restart

und

invoke-rc.d univention-bind-proxy restart

Mail: Cyrus

Manuelle Anpassungen

Der Cyrus IMAP Server unterstützt IPv6 laut Changelog seit Version 2.2, für die Unterstützung sind keine Änderungen notwendig.

Um die IPv6-Unterstützung abzuschalten, muss in der Datei /etc/imapd/cyrus.conf den Diensten imap, imaps, pop, pops und sieve unter SERVICES die Option proto=tcp4 angehängt werden. Die Änderung betrifft die folgenden Dateien.

Wenn univention-mail-cyrus-kolab2 installiert ist:

/etc/univention/templates/files/etc/imapd/cyrus.conf.d/20_SERVICES_spool

Wenn univention-mail-cyrus installiert ist:

/etc/univention/templates/files/etc/cyrus.conf

In diesen Dateien müssen die entsprechenden Zeilen gesucht werden, für imap lautet sie zum Beispiel:

print '\timap cmd="/usr/lib/cyrus/bin/imapd -C /etc/imapd/imapd.conf \
   -U 30" listen="%simap" prefork=0 maxchild=%s' % (bindprefix, maxchild)

Für diese Zeile sollte dann diese Änderung vorgenommen werden:

print '\timap cmd="/usr/lib/cyrus/bin/imapd -C /etc/imapd/imapd.conf \
   -U 30" listen="%simap" prefork=0 maxchild=%s proto=tcp4;% (bindprefix, maxchild)

Um alle Fälle zu berücksichtigen, müssen alle Zeilen geändert werden, die folgendermassen beginnen:

print '\timap
print '\timaps
print '\tpop3
print '\tpop3s
print'\tsieve bzw. print' sieve

Danach sollten die Änderungen übernommen werden:

ucr commit /etc/cyrus.conf

Und im Anschluss muss cyrus neu gestartet werden:

invoke-rc.d cyrus2.2 restart


Komponente ipv6-experimental

Pakete: univention-mail-cyrus / univention-mail-cyrus-kolab2

Die Univention Configuration-Variable mail/cyrus/ipv6 wird bei der Installation angelegt und auf yes gesetzt. Das Setzen der Univention Configuration-Variable mail/cyrus/ipv6 auf no deaktiviert IPv6 in Cyrus.

Nachdem die Variable geändert wurde, muss cyrus neu gestartet werden:

invoke-rc.d cyrus2.2 restart

Informationen zur Option 'proto'

Es gibt für proto= diese Werte: tcp, udp, tcp4, udp4, tcp6 und udp6. Mit der Option proto=tcp6 kann cyrus also zum Beispiel auch dazu gezwungen werden, nur IPv6 zu nutzen.

DHCP

Der ISC DHCP-Server unterstützt IPv6 erst ab Version 4. Da es noch keine stabilen Debian-Pakete dieser Version gibt und mit der Umstellung umfangreiche weitere Änderungen notwendig werden, wird damit vorerst kein DHCPv6 möglich sein.

Der Router Advertisement Daemon (radvd) ist auf UCS-Systemen nicht als DHCP-Ersatz geeignet, da er nur Präfix, MTU und Router-Adresse verteilt und somit nicht alle Funktionalitäten des Managementsystems abgebildet werden können.

LDAP

OpenLDAP unterstützt seit Version 2.1.22 IPv6, somit also auch auf aktuellen UCS Systemen.

Dem LDAP Daemon slapd können die folgenden Optionen mitgegeben werden, um das Verhalten zu beeinflussen:

-4 nur auf IPv4-Adressen hören
-6 nur auf IPv6-Adressen hören

Der Einsatz dieser Optionen ist nicht getestet worden und wird zur Zeit nicht empfohlen.

Mail: Postfix

Manuelle Anpassungen

In Postfix ist IPv6 zunächst deaktiviert, es kann aber in der Konfigurationsdatei eingeschaltet werden.

Zum Aktivieren von IPv6 muss zum Beispiel folgender Parameter in der Konfigurationsdatei main.cf gesetzt werden:

inet_protocols = all

Die zu ändernden Vorlagen von main.cf befinden sich je nach installiertem Postfix-Paket an folgenden Stellen:

Pakete univention-mail-postfix und univention-mail-postfix-forward:

/etc/univention/templates/files/etc/postfix/main.cf

Paket univention-mail-postfix-kolab2:

/etc/univention/templates/files/etc/postfix/main.cf.d/10_general

Zunächst müssen die Änderungen übernommen werden:

ucr commit /etc/postfix/main.cf

Danach sollte Postfix neu gestartet werden:

invoke-rc.d postfix restart

Komponente ipv6-experimental

Pakete: univention-mail-postfix / univention-mail-postfix-forward / univention-mail-postfix-kolab2

Eine neue Univention Configuration-Variable postfix/ipv6 wird bei der Installation angelegt und auf no gesetzt. Das Setzen der Univention Configuration-Variable postfix/ipv6 auf yes aktiviert IPv6 in Postfix.

Nachdem die Variable geändert wurde, muss Postfix neu gestartet werden:

invoke-rc.d postfix restart

Hinweis: Mit Setzen der Univention Configuration-Variable postfix/ipv6 auf yes wird die Option inet_protocols=all in der Datei /etc/postfix/main.cf gesetzt.

Informationen zum Parameter inet_protocols

Für den Parameter inet_protocols in der main.cf gibt es folgende Optionen:

inet_protocols = ipv4 Standard: nur IPv4 aktivieren
inet_protocols = all IPv4 aktivieren; IPv6 aktivieren, falls unterstützt
inet_protocols = ipv4, ipv6 IPv4 und IPv6 aktivieren
inet_protocols = ipv6 nur IPv6 aktivieren

Samba

Manuelle Anpassungen

Laut Release Notes sind die Netzwerkfunktionen seit Samba 3.2 voll IPv6-fähig und in Microsoft Windows und Unix IPv6 - Umgebungen getestet worden. Auch Samba nutzt intern IPv4-mapped IPv6 Adressen.

Damit sollte Samba als Memberserver in einer Active Directory - Domäne mit IPv6 kommunizieren können. Da Windows in einer NT-Domäne aber selbst nur IPv4 unterstützt, wird Windows wohl immer auf IPv4 zurückfallen.

Wenn Samba dazu gezwungen werden soll, nur auf IPv4-Anfragen zu antworten, muss Folgendes am Ende der smb.conf - Vorlage angefügt werden:

/etc/univention/templates/files/etc/samba/smb.conf.d/01univention-samba_main

; only IPv4-addresses will serve SMB requests:
interfaces = 255.255.255.255/0 127.0.0.1
bind interfaces only = yes

Damit wird Samba nur an die gefundenen IPv4 Adressen gebunden.

Achtung: Diese Modifikation darf nur vorgenommen werden, wenn die Univention Configuration Registry-Variablen samba/interfaces oder samba/interfaces/bindonly nicht gesetzt sind.

127.0.0.1 ist für smbpasswd und swat notwendig.

Die Änderungen sollen übernommen werden mit:

ucr commit /etc/samba/smb.conf

Auch Samba muss zur Aktivierung neu gestartet werden:

invoke-rc.d samba restart

Komponente ipv6-experimental

Paket: univention-samba

Die Univention Configuration-Variable samba/ipv6 wird angelegt und auf yes gesetzt. Das Setzen der Univention Configuration-Variable samba/ipv6 auf no zwingt Samba dazu, SMB-Anfragen nur noch auf IPv4-Adressen zu bearbeiten, wenn die Variablen samba/interfaces oder samba/interfaces/bindonly nicht gesetzt sind.

Nachdem die Variable geändert wurde, muss samba neu gestartet werden:

invoke-rc.d samba restart

Hinweis: Das Setzen der Univention Configuration-Variable samba/ipv6 auf no fügt in der Datei /etc/samba/smb.conf die oben genannten Zeilen hinzu.

Weitere Informationen zu Samba

Durch die beschriebenen Anpassungen ändert sich Sambas Verhalten folgendermassen:

Standard-Verhalten (Univention Configuration-Variable samba/ipv6=yes):

# netstat -anp| grep smbd
tcp 0 0 10.200.2.2:45407 10.200.2.2:389 VERBUNDEN
26783/smbd
tcp6 0 0 :::139 :::* LISTEN
26783/smbd
tcp6 0 0 :::445 :::* LISTEN
26783/smbd

Nur IPv4 (Univention Configuration-Variable samba/ipv6=no):

# netstat -anp| grep smbd
tcp 0 0 10.200.2.2:139 0.0.0.0:* LISTEN
27092/smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* LISTEN
27092/smbd
tcp 0 0 10.200.2.2:445 0.0.0.0:* LISTEN
27092/smbd
tcp 0 0 127.0.0.1:445 0.0.0.0:* LISTEN
27092/smbd
tcp 0 0 10.200.2.2:58839 10.200.2.2:389 VERBUNDEN
27092/smbd

Univention Directory Manager

Pakete: univention-directory-manager / univention-directory-manager-modules

Abhängig von: python2.4

Nach der Installation der Pakete lassen sich IPv6-Adressen mit der Univention Directory Manager Kommandozeilenschnittstelle (CLI) oder im Web-Interface anlegen oder ändern, dabei wird auf gültige IPv4, IPv6 und IPv4-mapped IPv6 - Adressen geprüft. Beim Erstellen und Bearbeiten von IP-Adressen mit dem Univention Directory Manager wird bei erkannter IPv4-Adresse das LDAP Attribut aRecord und bei erkannter IPv6-Adresse das Attribut aAAARecord gesetzt.

Im Univention Directory Manager CLI findet also bei folgenden Befehlen eine Prüfung auf IPv4 oder IPv6 statt:

udm dns/host_record create [...]
udm dns/host_record modify [...] --append
udm dns/host_record modify [...] --remove

Ein Ersetzen der alten Einträge wird erreicht durch:

dm dns/host\_record modify [...] --set

In folgendem Beispiel wird ein Managed Client mit IPv6-Adresse angelegt:

udm computers/managedclient create \
  --position="cn=computers,dc=firma,dc=de" \
  --set name="testclient101" \
  --set ip="2001:db8:100::101"

Einen Eintrag für die Vorwärtsauflösung kann mittels folgendem Befehl angelegt werden:

udm dns/host_record create \
  --superordinate="zoneName=ucs.local,cn=dns,dc=firma,dc=de" \
  --set name="testclient101" \
  --set a="2001:db8:100::101"

Auch die DNS Zonen-Einstellungen für IPv6-Adressen können im Univention Directory Manager Web-Interface im Modul Rechnerverwaltung, Karteikarte DNS vorgenommen werden. Die entsprechendende Zone muss vorher im Modul DNS hinzugefügt werden. Als Typ sollte Reverse Lookup Zone ausgewählt werden, als Subnetz kann zum Beispiel der Teil einer IPv6-Adresse eingetragen werden: 2001:db8:100. Damit die Reverse Zone berechnet und angelegt (in diesem Beispiel also: 0.0.0.0.0.0.1.0.8.b.d.0.1.0.0.2.ip6.arpa), die dann in der Rechnerverwaltung genutzt werden kann.

Die entsprechenden Module im Univention Directory Manager CLI lauten:

dns/forward_zone
dns/reverse_zone
dns/ptr_record
dns/alias
Personal tools