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

  1. 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.
  2. 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.
  3. 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.