ubuntuusers.de

Zwei Apache, ein Netzwerk, zweimal Port 443

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

jm3west

Anmeldungsdatum:
20. Juni 2016

Beiträge: Zähle...

Hallo,

Wie kann ich es bewerkstelligen das zwei Apache in einem Netzwerk an Port 443 öffentlich zu zugänglich werden, und dass ganze ohne Portumleitung?

Mit freundlichen Grüßen Jörg

Seebär

Avatar von Seebär

Anmeldungsdatum:
2. Mai 2009

Beiträge: 833

Ich würd mal sagen: gar nicht. Wie soll das gehen, dass zwei getrennte Applikationen den selben Port gleichzeitig nutzen? Hat auch mit öffentlich nix zu tun. Was willst du denn erreichen? Load-Balancing? Dann muss man einen Load-Balancer davor schalten, der dann die beiden Indianer anspricht. Diese müssen aber auf getrennten Ports lauschen, sonst Kollision.

Die Angabe

in einem Netzwerk

ist übrigens etwas vage: zum Port gehört ja immer noch ne IP, ich bin eben von ein und dem selben Rechner ausgegangen, auf dem die Server laufen.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21852

Wohnort: Lorchhausen im schönen Rheingau

Beschreibe bitte mal näher, was du überhaupt machen willst und wie dein Setting aussieht.

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

redknight schrieb:

Beschreibe bitte mal näher, was du überhaupt machen willst und wie dein Setting aussieht.

Nun, ich betreibe hier einen Desktopserver mit Nextcloud, Samba, Apache (wegen Cloud) und MySQL. Dieser Server hat GBit LAN und USB 3 zum schnellen Daten verschieben.

Bis vor kurzem hat dieser auch DNS- und Mailserver übernommen.

Jetzt habe ich mir einen Pi 3 zugelegt, so dass dieser DNS- und Mailserver und ufw (und vielleicht auch noch DHCP) übernehmen soll. Also keine grossen Datenmengen. Hier reicht ja Fast-Ethernet und USB 2

Da Desktopserver und Pi 3 öffentlich zugänglich sind, sind beide mir einem GeoTrust Multidomain-SSL-Zertifikat verschlüsselt.

Auf Server läuft wie gesagt Nextcloud mit "https" Port 443

Auf Pi 3 soll ja der Mailserver laufen. Da ich hier auch postfixadmin und Roundcube, mit SSL, nutze wollte ich ungern Browsereingaben wie zB. "https://mail.meinedomain.de:8443/roundcube" eingeben bzw. eingeben lassen (Frau, Vater, ...)

Ich hoffe ich konnte mein Konstrukt veranschaulichen

Mit freundlichen Grüßen Jörg

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Ich würde den Apache2 auf dem Desktop-Server als Proxy für die Sachen nutzen, die auf dem Raspi liegen:

<VirtualHost *:443>
  ServerName postfixadmin.example.org
  ...
  ProxyPass / http://postfixadmin.raspi.local/ retry=0
  ProxyPassReverse / http://postfixadmin.raspi.local/
</VirtualHost>

Damit fragt nicht der Client von außen am Raspi an, sondern dein Desktop-Server. Das sollte aber ja kein Problem sein.

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

Man(n) möge mir verzeihen, aber ich habe keine bis gar keine Ahnung was Proxy angeht!

Ich beschreibe mal wie ich das verstanden habe ....

Also alle Anfragen von aussen kommen am Desktop-Server Apache2 (als Proxy) auf Port 443 an und werden dann vom Desktop-Apache2 zum Pi 3 auf Port 80 weitergeleitet und von aussen ist nur Port 443 sprich SSL "https" zu sehen ?

... wie gesagt man möge mir verzeihen

Mit freundlichen Grüßen Jörg

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

jm3west schrieb:

Also alle Anfragen von aussen kommen am Desktop-Server Apache2 (als Proxy) auf Port 443 an und werden dann vom Desktop-Apache2 zum Pi 3 auf Port 80 weitergeleitet und von aussen ist nur Port 443 sprich SSL "https" zu sehen ?

Korrekt. Du kannst den Raspi auch intern via HTTPS ansprechen, brauchst du aber nicht. Du musst auch nicht verschiedene VHosts nutzen, du kannst auch URL-Teile für Proxies verwenden:

<VirtualHost *:443>
  ServerName raspi.example.com
  ...
  ProxyPass        /postfixadmin http://raspi.local/postfixadmin retry=0
  ProxyPassReverse /postfixadmin http://raspi.local/postfixadmin
  ProxyPass        /wasanderes   http://wasanderes.raspi.local   retry=0
  ProxyPassReverse /wasanderes   http://wasanderes.raspi.local
  ...
</VirtualHost>

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

Das wäre ja cool wenn das so geht 💡

Nochmals als Laie gefragt .... ... hat man sowas "erfunden" um eben solche Konstrukte zu realisieren. Oder ist das eher "Na, da bauen wir mal was mit Proxy"

!!!! Die Frage soll bitte KEINE Zweifel an Deiner Empfehlung sein !!!!

Ich will das nur verstehen !

Mit freundlichen Grüßen Jörg

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

jm3west schrieb:

Nochmals als Laie gefragt .... ... hat man sowas "erfunden" um eben solche Konstrukte zu realisieren. Oder ist das eher "Na, da bauen wir mal was mit Proxy"

Ich verstehe nicht genau was du meinst. Das Proxy-Modul des Apachen kann für alles mögliche benutzt werden, inklusive Reverse- oder Forwarding-Proxies. Siehe auch.

Du könntest natürlich auch eine weitere öffentliche IP vom Provider anfordern (mit Kosten verbunden) und diese dann auf den Raspi forwarden. Oder du könntest einfach den Port verlegen. Es gibt meistens mehrere Möglichkeiten das Problem zu lösen. Ich würde die Proxy-Methode nehmen. Die ist sauber und flexibel.

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

Ja, ne ist alles IO

Wie gesagt keine Ahnung!!!

Ich werde das so umsetzten und eine Rückmeldung geben

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

So, ich bin schon sehr weit - Für meine Verhältnisse

Ich habe am Pi 3 einen DNS aufgesetzt mit den Zonen domain.de domain.local

Dann habe ich zunächst mal nur für Port 80 getestet.

Das ist die mail_domain_de.conf am Desktop-Server ...

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<VirtualHost *:80>

    ServerName mail.domain.de

    ProxyPass / http://mail.domain.local/
    ProxyPassReverse / http://mail.domain.local/

    ProxyPass /postfixadmin/ http://mail.domain.local/postfixadmin/
    ProxyPassReverse /postfixadmin/ http://mail.domain.local/postfixadmin/

</VirtualHost>

Das ist die mail_domain.local.conf am Pi 3 ...

1
2
3
4
5
6
7
<VirtualHost *:80>

        ServerName mail.domain.local
        DocumentRoot /var/www/mail_domain_local/


</VirtualHost>

Dann habe ich entsprechende index.html, mit Ortsangaben wie zB.: rasp1 > mail.domain.local > root Damit ich sehe wo der Browser raus kommt

Von aussen - sprich mit dem Notebook und LTE-Stick - klappt die Umleitung, soweit ich sehe. Also http://mail.domain.de kommt an Pi 3 bei mail.domain.local an (Also was ich in der index.html stehen habe die nur am Pi 3 ist) Auch http://mail.domain.de/postfixadmin wird korrekt umgeleitet.

Aber alles nur von aussen!!!

Wenn ich nun lokal am Browser im Netzwerk http://mail.domain.de eingebe komme ich beim Pi 3 an der default-root - sprich was in der 000-default.conf drin steht. Gebe wiederum lokal am Browser http://mail.domain.de/postfixadmin ein spukt der Browser aus ....

Not Found The requested URL /postfixadmin was not found on this server.

Ich habe jetzt schon so ziemlich alles probiert, aber immer wieder kommt diese vorgenannte Fehlermeldung

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

jm3west schrieb:

Ich habe am Pi 3 einen DNS aufgesetzt mit den Zonen domain.de domain.local

Ist das der autoritative Nameserver für die DE-Domain?

1
2
3
4
5
    ProxyPass / http://mail.domain.local/
    ProxyPassReverse / http://mail.domain.local/

    ProxyPass /postfixadmin/ http://mail.domain.local/postfixadmin/
    ProxyPassReverse /postfixadmin/ http://mail.domain.local/postfixadmin/

Den zweiten Block kannst du weglassen. Die ersten beiden Direktiven leiten bereits alles weiter, was kommt.

Wenn ich nun lokal am Browser im Netzwerk http://mail.domain.de eingebe komme ich beim Pi 3 an der default-root - sprich was in der 000-default.conf drin steht.

Wie löst der Name bei dir auf?

dig domain.de

Gebe wiederum lokal am Browser http://mail.domain.de/postfixadmin ein spukt der Browser aus ....

Not Found
The requested URL /postfixadmin was not found on this server.

Vermutlich löst domain.de bei dir intern nicht auf den Proxy auf, sondern direkt auf den Raspi. Der reagiert aber nicht auf .de sondern nur auf .local. Deswegen kriegst du den Default-VHost und deshalb klappt auch /postfixadmin nicht.

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

Zum DNS: Ich habe eine dynamische Domain bei selfhost.de. Dort ist auch ein DNS, dort habe ich alle hosts die ich in Verwendung habe platziert.

Lasse ich die Zone domain.de beim Pi 3 DNS weg und arbeite nur mit der domail.local Zone funktioniert das ganze schon nicht mehr so gut.

Gebe ich dann am Browser mail.domain.de ein stimmt die Umleitung. Gebe ich mail.domain.de/postfixadmin ein kommmt dass ...

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /postfixadmin.

Reason: DNS lookup failure for: mail.domain.localpostfixadmin

Apache/2.4.18 (Ubuntu) Server at mail.domain.de Port 80

Das gibt dig domain.de aus ...

; <<>> DiG 9.10.3-P4-Ubuntu <<>> domain.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37833
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;domain.de.			IN	A

;; AUTHORITY SECTION:
domain.de.		10800	IN	SOA	rasp1.domain.de. hostmaster.domain.de. 2016071901 28800 7200 2419200 10800

;; Query time: 0 msec
;; SERVER: 10.0.1.4#53(10.0.1.4)
;; WHEN: Wed Aug 31 09:26:21 CEST 2016
;; MSG SIZE  rcvd: 90

jm3west

(Themenstarter)

Anmeldungsdatum:
20. Juni 2016

Beiträge: 49

Nachtrag:

Das kommt bei dig domian.de raus wenn ich nur mit domain.local am Pi 3 arbeite

; <<>> DiG 9.8.3-P1 <<>> domain.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15349
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;domain.de.			IN	A

;; ANSWER SECTION:
domain.de.		60	IN	A	XXX.XXX.XXX.XXX

;; AUTHORITY SECTION:
domain.de.		86092	IN	NS	pri.asok.de.
domain.de.		86092	IN	NS	sec.asok.de.

;; ADDITIONAL SECTION:
pri.asok.de.		86092	IN	A	82.98.82.20
sec.asok.de.		86092	IN	A	89.238.72.196

;; Query time: 25 msec
;; SERVER: 10.0.1.4#53(10.0.1.4)
;; WHEN: Wed Aug 31 09:42:56 2016
;; MSG SIZE  rcvd: 115

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

jm3west schrieb:

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /postfixadmin.

Reason: DNS lookup failure for: mail.domain.localpostfixadmin

Apache/2.4.18 (Ubuntu) Server at mail.domain.de Port 80

Erstmal zu dem Problem: Hier ist deine ProxyPass-Direktive falsch. Es ist darauf zu achten, dass Quell-URL und Ziel-URL gleich enden, also entweder auf einen Slash oder nicht:

ProxyPass /              http://raspi.local/                 # richtig
ProxyPass /postfixadmin/ http://raspi.local/postfixadmin     # falsch
ProxyPass /postfixadmin/ http://raspi.local/postfixadmin/    # richtig

DNS
Warum setzt du auf dem Raspi einen DNS-Server mit domain.de als Zone auf? Das DNS sollte überall einheitlich sein, sonst kriegt man Probleme. Sowohl von außen als auch intern sollte domain.de auf die externe IP aufgelöst werden. Einen internen Nameserver brauchst du nur, wenn du mehrere Clients im internen Netz hast, die eine Zone brauchen. Wenn dein lokaler PC der einzigste Rechner ist, kannst du beispielsweise auch mit der Hosts-Datei arbeiten. Es hält dich natürlich niemand davon ab einen DNS-Server zu betreiben – dann würde ich aber nur die Zone *.local verwalten und nichts, was auch extern auflöst.

Zugriffswege
Du musst dir immer bewusst machen, welchen Weg ein Request nimmt. Welchen Apache sprichst du an? Auf was reagiert der? Was passiert im Hintergrund? Der definierte Zugriffsweg von außen ist über deinen Desktop-Server, der die Requests als Proxy an den Raspi weiterleitet. Wenn dort ein Problem auftritt, gilt es zu debuggen. Bei deinem oben beschriebenen Problem war das relativ einfach, da der Fehler "DNS lookup failure for: mail.domain.localpostfixadmin" lautete. Grund war, dass zwischen local und postfixadmin ein Slash gefehlt hat.
Von innen gibt es mehrere Zugriffswege: entweder du gehst über mail.domain.de von außen ran (d.h. Zugriffsweg wieder über den Apache vom Desktop-Server) oder du gehst via *.local-Domain direkt an den Raspi.

Ansonsten scheint dein Apache-Setup ja zu passen.

Antworten |