IPv4/IPv6 Proxyserver -> to IPV6 only Server Unterstützung (Nice-to-Have)

etron770

Member
Hallo Til,
die IPv4 sind alle vergeben, die User, die immer noch ihre Router auf IPv4 haben, sinken viel langsamer.
Immer wieder gibt es Beschwerden, dass Webseiten auf IPv6-Only-Servern nicht erreichbar sind.

Ich habe mir einen Proxyserver eingerichtet, der je nach Domain die IPv4-/IPv6-Zugriffe dann auf die reinen IPv6-Server weiterleitet.
Eventuell gibt es bessere Lösungen, meine funktioniert für mich aber.
Es wäre schön, wenn man den Proxyserver mit ispconfig verwalten könnte. Viel braucht man nicht:
1. Feld bei der Domain zum Anklicken: IPv4/IPv6-Proxy aktiv
2. Eintrag, welcher der Proxyserver ist.
Auf dem Proxy:
1. Eintrag der Domains mit den ipv6 Adressen in die Datei: /etc/nginx/stream-enabled/443-sni-map.conf
  • Ohne diesen automatischen Eintrag, können ISPConfig-Nutzer keine weiteren Domains oder Subdomains über den Proxyserver weiterleiten lassen.
  • Wenn alle Subdomains auf denselben Server gehen, ist das wenig problematisch.
  • Der Admin muss die DNS Einträge für die Hauptdomain einrichten.
  • Dabei kann er gleich die Wildcard auf dem Proxyserver einrichten

    Die Konfiguration
    Fury -> Proxyserver
    Mary -> stellvertretend für andere Server mit IPV6 only
    Reverse-Proxy-Konfiguration: Fury ↔ Mary (mit teilweiser oder kompletter Migration der URLs)
Dokumentationsstand: 2025-10-11
Systembasis: Debian 12 auf Fury (NGINX stream), Debian 12 auf Mary (Apache 2.4.65, ISPConfig)

1. Zielbild

- Fury fungiert als Reverse-Proxy auf Port 443 (TLS-Passthrough via SNI).
- Mary ist das Apache-Backend mit mod_remoteip und Fail2ban.
- IPv4 und IPv6 sämtlicher Domains zeigen auf Fury, sobald migriert.
- Domains, die noch nicht migriert sind, behalten ihre bisherigen A/AAAA-Einträge (direkter Zugriff auf Mary).
- Fury sendet für migrierte Domains PROXY-Protocol, damit Mary die echte Client-IP kennt.

2. Fury-Konfiguration (NGINX Stream)
Datei: /etc/nginx/stream-enabled/443-sni-map.conf
Code:
map $ssl_preread_server_name $sni_upstream {
    sub1.url1.de    [wwww:xxxx:yyyy:zzzz::32]:443;
    sub2. url1.de   [wwww:xxxx:yyyy:zzzz::33]:443;
   url2.de   [wwww:xxxx:yyyy:zzzz::44]:443;# wildcard für alle subdomains
    .url3.de   [wwww:xxxx:yyyy:zzzz::12]:443;
    url4.de   [wwww:xxxx:yyyy:zzzz::57]:443;
    url5.de   [wwww:xxxx:yyyy:zzzz::57]:443;
    default   [wwww:xxxx:yyyy:zzzz::55]:443;
}

server {
    listen 0.0.0.0:443;
    listen [::]:443;
    ssl_preread on;
    proxy_protocol on;
    proxy_pass $sni_upstream;
    proxy_connect_timeout 10s;
    proxy_timeout 180s;
    access_log /var/log/nginx/stream_access.log stream_fmt;
    error_log  /var/log/nginx/stream_error.log  warn;
}

Das zugehörige Logformat wird im globalen stream-Block in /etc/nginx/nginx.conf definiert:

log_format stream_fmt '$remote_addr [$time_local] $protocol $status '
'$bytes_sent $bytes_received $session_time '
'"$ssl_preread_server_name"';

Nach Änderung: nginx -t && systemctl reload nginx
3. DNS-Konzept

- Migrierte Domains: A=xx.yy.zz.32, AAAA=wwww:xxxx:yyyy:zzzz::111 (Fury)
- Noch nicht migrierte Domains: A/AAAA → bisherige Mary-IPs
- SSH und Admin-Zugänge: gesonderte IPv6-Adresse ohne dns Eintrag, nicht Teil der DNS-Umleitung.

4. Mary-Konfiguration (Apache 2.4.65)
Module prüfen: apachectl -M | grep remoteip

Datei: /etc/apache2/conf-available/10-remoteip-proxyproto.conf
Code:
<IfModule remoteip_module>
    RemoteIPTrustedProxy xx.yy.zz.32
    RemoteIPTrustedProxy wwww:xxxx:yyyy:zzzz::111
    RemoteIPProxyProtocol On
</IfModule>
Aktivieren:
Code:
a2enconf 10-remoteip-proxyproto
a2enmod remoteip 
a2enmod proxy_protocol
systemctl reload apache2
LogFormat für echte Client-IP: /etc/apache2/conf-available/20-logformat-realip.conf
Code:
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" \"%{Host}i\" %{SSL_PROTOCOL}x %{SSL_CIPHER}x" combined_realip

Für Websites, die über Fury laufen:
CustomLog /var/log/ispconfig/httpd/<domain>/access.log combined_realip

Für alte Websites (direkte Zugriffe ohne PROXY):
CustomLog /var/log/ispconfig/httpd/<domain>/access.log combined

5. Teilweise Umleitung (Hybridbetrieb)

Domains werden schrittweise umgestellt:
- Migrierte Domains: DNS → Fury; PROXY-Protokoll aktiv.
- Nicht migrierte Domains: DNS → alte Mary-IP; PROXY-Protokoll wird ignoriert.
Beide Arten können parallel betrieben werden, solange 443 auf Mary direkte Zugriffe zulässt.

6. Fail2ban (Mary) wie bisher


7. Prüfkommandos

# Fury
Code:
nginx -t && systemctl reload nginx

# Mary
Code:
apache2ctl -t && systemctl reload apache2
tail -f /var/log/ispconfig/httpd/<domain>/access.log
# Test
Code:
curl -4 -I https://<domain>
curl -6 -I https://<domain>
8. Nächste Schritte

1. Domains nacheinander per DNS auf Fury umstellen.
2. Backend-Konfiguration (Apache) beibehalten – PROXY-Protocol global aktiv.
3. Sobald alle Domains migriert sind, direkte 443-Zugriffe auf Mary in der Firewall sperren.
4. Eventuell fail2ban der Backends Ban-/Unban-Prozess auf Fury spiegeln und dort gleich bannen/freigeben
5. weitere Sicherheitseinstellungen anpassen.
 

Werbung

Top