Apache2 Listen-Direktive unterschiedliches Verhalten zwischen Stretch und Buster

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
GTAzoccer
Beiträge: 13
Registriert: 25.08.2018 23:03:02
Wohnort: Baden-Württemberg
Kontaktdaten:

Apache2 Listen-Direktive unterschiedliches Verhalten zwischen Stretch und Buster

Beitrag von GTAzoccer » 09.09.2020 23:05:17

Hallo! :)

Ich habe auf meinem Server mehrere Apache-Instanzen laufen. Sinn und Zweck ist es, diese unter unterschiedlichen Benutzern laufen zu lassen. Rechtetrennung zwischen den gehosteten Webprojekten. Die Hauptinstanz läuft normal als www-data und dient als Proxy um die eigentlichen Webprojekte zu erreichen.

Die Hauptinstanz bindet sich, durch das weglassen von IP-Adressen in der ports.conf, an [::]:80 und [::]:443.

Code: Alles auswählen

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 443

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Die Webprojekte binden sich an 127.0.0.2:443 und aufwärts.

Code: Alles auswählen

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 127.0.0.2:443

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Das hat jetzt lange Zeit in Stretch so funktioniert. Seit dem Upgrade auf Buster stoße ich hier aber auf ein Problem: Wenn sich die Hauptinstanz an [::]:443 bindet, können die Webprojekt-Instanzen nicht mehr starten, weil der Socket bereits belegt ist. Workaround ist es, die Hauptinstanz an jede IP explizit/einzeln binden zu lassen statt einfach auf [::]:443.

Code: Alles auswählen

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 127.0.0.1:80
Listen 127.0.0.1:443

Listen 37.000.000.000:80
Listen 37.000.000.000:443

Listen [::1]:80
Listen [::1]:443

Listen [2a03:0000:0000::1]:80
Listen [2a03:0000:0000::1]:443

Listen [2a03:0000:0000::2]:80
Listen [2a03:0000:0000::2]:443

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Das mag jetzt evt. einfach nur an mir liegen, aber das erscheint mir unschön. Ich weiß jetzt auch nicht, ob sich hier das Verhalten in Apache selbst geändert hat, oder ob der Kernel das Binden seit Buster anders handhabt.

TL;DR: Warum ist seit Buster beim Binden an [::]:443 auch 127.0.0.2:443 belegt?

DeletedUserReAsG

Re: Apache2 Listen-Direktive unterschiedliches Verhalten zwischen Stretch und Buster

Beitrag von DeletedUserReAsG » 09.09.2020 23:23:18

GTAzoccer hat geschrieben: ↑ zum Beitrag ↑
09.09.2020 23:05:17
Ich habe auf meinem Server mehrere Apache-Instanzen laufen. Sinn und Zweck ist es, diese unter unterschiedlichen Benutzern laufen zu lassen. Rechtetrennung zwischen den gehosteten Webprojekten.
Viele Leute nehmen dafür das suEXEC-Modul.
GTAzoccer hat geschrieben: ↑ zum Beitrag ↑
09.09.2020 23:05:17
Warum ist seit Buster beim Binden an [::]:443 auch 127.0.0.2:443 belegt?
Ich kenne [::] eigentlich eher als Platzhalter für IPv6 – das sollte auf keinen Fall mit IPv4 interferieren. Allerdings hast du, wie du schreibst, Listen 443 in der ports.conf, und das hat ebenso eigentlich schon immer™ zur Folge gehabt, dass sich der httpd alle verfügbaren Interfaces genommen hat.

Benutzeravatar
GTAzoccer
Beiträge: 13
Registriert: 25.08.2018 23:03:02
Wohnort: Baden-Württemberg
Kontaktdaten:

Re: Apache2 Listen-Direktive unterschiedliches Verhalten zwischen Stretch und Buster

Beitrag von GTAzoccer » 09.09.2020 23:53:34

niemand hat geschrieben: ↑ zum Beitrag ↑
09.09.2020 23:23:18
Ich kenne [::] eigentlich eher als Platzhalter für IPv6 – das sollte auf keinen Fall mit IPv4 interferieren. Allerdings hast du, wie du schreibst, Listen 443 in der ports.conf, und das hat ebenso eigentlich schon immer™ zur Folge gehabt, dass sich der httpd alle verfügbaren Interfaces genommen hat.
Ja und nein. -> https://httpd.apache.org/docs/2.4/de/bind.html#ipv6
Er bindet sich (laut netstat) bei der Angabe von Listen 443 tatsächlich nur an [::]:443, ist aber dennoch auch über IPv4 erreichbar. In Stretch war er dann auch über 127.0.0.1 erreichbar, aber eben nicht über 127.0.0.2. Diese war für andere Instanzen frei.
Seit Buster allerdings nicht mehr. Nun ist die erste Instanz, die sich an [::]:443 bindet über die komplette 127.0.0.0/8 Range erreichbar und blockiert damit die anderen.

Antworten