Wie stelle ich Apache Virtualhost für die Arbeit mit IPv6 ein?

10

Ich habe einen Server mit 1 IPv4-Adresse und einigen IPv6-Adressen. Eine Domain wird auf ipv4 umgeleitet. Ein Datensatz, den ich wie folgt eingerichtet habe: apache ports.conf:

Listen ip.v4.address:80
NameVirtualHost ip.v4.address:80

und virtualhost Datei:

<VirtualHost ip.v4.address:80>
DocumentRoot /var/www/first/
ServerName first.domain
ServerAlias www.first.domain
ErrorLog ...
CustomLog ...
</VirtualHost>

Und alles funktioniert gut.

Jetzt möchte ich einen neuen virtuellen Host für die zweite Domain mit der zweiten IP erstellen. Ich habe die zweite Domain zum IPv6-AAAA-Datensatz umgeleitet und zur ports.conf hinzugefügt:

Listen [ip.v6.address]:80
NameVirtualHost [ip.v6.address]:80

Neue VirtualHost-Datei erstellen:

<VirtualHost [ip.v6.address]:80>
DocumentRoot /var/www/second/
ServerName second.domain
ServerAlias www.second.domain
ErrorLog ...
CustomLog ...
</VirtualHost>

und starten Sie Apache neu. Beim Serverstart gab es keine Fehler, aber es funktioniert nicht. Wenn ich im Browser eine zweite Domain eingebe, wird der Server nicht gefunden. Wenn ich die [ip.v6.address]Seite betrete, wird sie angezeigt.

Irgendeine Hilfe?

schäbig
quelle
Vielen Dank für die Hilfe an alle. IPv6 ist korrekt und ich benötige zwei verschiedene Sites. Ich habe meinen Domain-Anbieter kontaktiert, bei dem ich diesen AAAA-Eintrag eingerichtet habe. Sie sagten, es könne 24 Stunden dauern, um es einzurichten, und vielleicht liegt hier das Problem. Als ich A Record aufstellte, war der Effekt fast sofort und ich dachte, AAAA funktioniert genauso.
Sheldy
Es wäre schön, wenn Sie Ihre Lieblingsantwort als solche markieren würden, damit die Leute, die Ihnen helfen
Sander Steffann

Antworten:

12

Ihre Apache-Konfiguration sieht korrekt aus, ist jedoch etwas komplexer als nötig, wenn eine Site sowohl über IPv4 als auch über IPv6 (Dual Stack) erreichbar sein soll.

Anstatt

<VirtualHost ip.v4.address:80>
...
</VirtualHost>

<VirtualHost [ip.v6.address]:80>
...
</VirtualHost>

du kannst tun

<VirtualHost ip.v4.address:80 [ip.v6.address]:80>
...
</VirtualHost>

Auf diese Weise hören die einzelnen virtuellen Hosts beide IP-Adressen ab. Es ist viel einfacher zu warten!

Wenn Sie wirklich eine andere Site unter IPv6 möchten, ist Ihre Konfiguration natürlich korrekt.

Sander Steffann
quelle
2
Oder vielleicht <VirtualHost *: 80>?
Koos van den Hout
2
Das könnte sicherlich auch funktionieren, aber da er die IP-Adressen in seinem Beispiel explizit angegeben hat, habe ich dies auch getan. Wenn Sie sich nicht wirklich für die IP-Adresse interessieren und einfach alles über den Host: -Header erledigen möchten, ist Ihre Lösung viel einfacher. Achten Sie jedoch auf SSL / TLS-Sites. Sie müssen sicherstellen, dass die Servernamenanzeige (TLS / SNI) für Ihre Benutzerbasis funktioniert.
Sander Steffann
4

Dies klingt eher nach einem IPv6-Namensauflösungsfehler als nach einem Apache-Fehler. Überprüfen Sie, ob der Name korrekt in die Adresse aufgelöst wurde.

user9517
quelle
3

Wird der Name in die richtige IPv6-Adresse aufgelöst? Dies scheint ein Problem bei der Domänenauflösung zu sein.

Martin Vejmelka
quelle