Wer auf seinen Servern bereits IPv6 eingerichtet hat und somit im Dual-Stack Betrieb fährt, kann mitunter auf folgendes Problem stoßen: bei den VirtualHost-Einträgen des Webservers Apache müssen pro Host neben den IPv4-Adressen zusätzlich auch die IPv6-Adressen eingetragen werden, damit das System korrekt zuordnen kann.
Beim Betrieb von Admin-Panels, welche (noch) keine IPv6-Unterstützung haben (zB ISPConfig 2), hat man dazu keine Möglichkeit.
Abhilfe schafft hier, einen Reverse-Proxy HAProxy aufzusetzen, der alle Anfrangen über IPv6 an eine IPv4-Adresse weiterleitet und somit die bisherige Apache-Konfiguration ohne Änderungen weiter verwendet werden kann.
Installation von HAProxy
apt-get install haproxy
Konfiguration von HAProxy
Die Standard-Konfiguration in der Datei /etc/haproxy/haproxy.cfg kann übernommen werden.
- beim Block "global" - keine Änderung
- beim Block "defaults" die beiden Zeilen zufügen:
option http-server-close option forwardfor
- die nachfolgenden Blöcke entfernen
- diese Blöck hinzufügen (die IPv4 und IPv6 IP-Adressen jeweils duch seine eigene ersetzen; der erste Block ist für Post 80, der zweite optional für Port 443):
listen ipv6proxy80 2a01:xxx:xxx:82a4::2:80 mode http server ipv4server80 176.x.x.182:80 maxconn 4000 listen ipv6proxy443 2a01:xxx:xxx:82a4::2:443 mode tcp server ipv4server443 176.x.x.182:443 maxconn 4000
In der Datei /etc/default/haproxy muss noch der Parameter ENABLED von 0 auf 1 gesetzt werden.
Danach den Proxy starten mit /etc/init.d/haproxy restart
Falls beim Starten eine Fehlermeldung auftaucht, dass Adressen nicht gebunden werden können muss in der Datei /etc/sysctl.conf "net.ipv4.ip_nonlocal_bind=1" eingetragen werden und die Änderungen mit sysctl -p übernommen werden.
Konfiguration von Apache
- In der Datei ports.conf muss nun definiert werden , dass Apache nur noch auf IPv4-Adressen lauscht und nicht (wie standardmäßig eingestellt) auch auf IPv6.
Dazu werden die Einträge 80 und 443 geändert auf 0.0.0.0:80 und 0.0.0.0:443. - Nach einem Neustart wird man feststellen, dass in den Logfiles die eigene IPv6-Adresse (des Proxies) anstatt der IP-Adresse des Benutzers geloggt wird. Um dies zu ändern, aktiviert man das Modul RPAF mittels a2enmod rpaf und trägt in der Datei rpaf.conf bei RPAFproxy_ips seine eigene(n) IPv6-Adresse(n durch Space getrennt) ein.
- Nach einem Neustart des Apache sollte das Setup abgeschlossen sein. Mit einem Online-Tool wie zB www.ipv6proxy.net kann nun geprüft werden, ob die IPv6-Weiterleitung funktioniert, es sollte der entsprechende Host angezeigt werden.