OPNsense-Settings bei Mailserver in DMZ? (gelöst)

Started by white_rabbit, May 23, 2022, 08:32:37 PM

Previous topic - Next topic
May 23, 2022, 08:32:37 PM Last Edit: May 31, 2022, 09:13:30 AM by white_rabbit
Hallo.
Ich hoffe, dass diese Frage nicht OT ist ... ich kann das u.g. Problem aber gerade nicht genauer eingrenzen und vermute im Moment ein DNS- oder Unbound-Problem. Aber der Reihe nach:

Wir haben einen vServer "da draußen" auf dem wir diverse Domains reserviert haben -- darunter auch die Domain "kurze-domain.de". Leider bietet der Provider keine gute Möglichkeit Mailboxen per LDAP an Useraccounts zu binden, so dass eine Userverwaltung für alle bestehenden Mailboxen entsteht. Daher habe ich mir mailcow https://mailcow.github.io/mailcow-dockerized-docs/ angesehen, was das kann: Wenn nun ein User aus dem LDAP gelöscht wird, wird auch die zugehörige Mailbox wieder gelöscht -- ohne nervige Handarbeit.

Das Problem dabei: mailcow läuft nun intern in unserer DMZ hinter der OPNSense und tut dort seinen Dienst.
Der docker-Container heißt mail.mein-langer-und-komplizierter-domainname.de. Das will ich natürlich nicht als eMail-Adresse verwenden, weshalb ich unter mailcow eingetragen haben, dass alle eMail-Adressen die Form @kurze-domain.de haben sollen. Wenn ich auf dem docker-Host oder auf der Firewall den Befehl "host mail" verwende, wird die richtige interne IP in der DMZ aufgelöst. Allerdings versucht mailcow nun ständig Verbindung über LDAP zum Host im Internet aufzubauen -- vermutlich ganz einfach deshalb, weil die Adressen @kurze-domain.de auf den Domainnamen im Internet zeigen und eben nicht intern aufgelöst werden?!? Dort klopft der docker-Container natürlich an der falschen Tür an ...

Ich hoffe, dass halbwegs klar geworden ist, wo das Problem liegt und hoffe ich, dass ich dieses Problem mit einer Firewall/Router-Einstellung auf der OPNSense in den Griff bekommen kann. Leider sehe ich aber den Wald vor lauter Bäumen nicht mehr ... wo genau muss man da ansetzen?
Hat jemand einen guten Tipp? Danke!

Vermute es ist einfach ein DNS Problem.

Ich nutze die Dienste Mailcow und den Docker Container nicht.
Wenn aber Mailcow bei der @langen-domain den richtigen Weg geht, würde ich die DNS Settings bei @kurzedomain genau so setzen.
(Unoffial Community) OPNsense Telegram Group: https://t.me/joinchat/0o9JuLUXRFpiNmJk

PM for paid support

May 26, 2022, 11:50:32 AM #2 Last Edit: May 26, 2022, 11:52:42 AM by white_rabbit
Hallo.
Ja, das muss ein DNS-Problem sein ... ich habe auch schon alles mögliche erfolglos auf docker-Ebene ausprobiert. Es bleibt aber dabei, dass die Anfragen so laufen
docker-Container -> VM-Host -> Firewall / Gateway -> Server im Internet (falsche Stelle für LDAP! / Timeout!)
und nicht
docker-Container -> VM-Host -> Firewall /Gateway -> interner ldap-Server bei uns

Wenn ich auf der OPNSense folgendes mache:
    Schnittstellen: Diagnose: DNS-Abfrage
und trage dort den internen ldap-Server ein, stelle ich (erstaunt!) fest, dass die OPNSense dann auch zuerst im Internet anfragt und nicht sofort den internen Host anzeigt. Vielleicht ist das ja das Problem??! Versuche ich es hingegen direkt auf der Shell der Firewall mit "host <ldap-server>" wird die interne IP-Adresse sofort richtig aufgelöst!

Die Frage ist also: Warum macht die OPNSense es einmal so und das andere Mal so??





Hast Du die mailcow auch so angepasst, dass nicht der unbound container die DNS-Auflösung übernimmt?

Quote from: white_rabbit on May 26, 2022, 11:50:32 AM
Hallo.
Ja, das muss ein DNS-Problem sein ... ich habe auch schon alles mögliche erfolglos auf docker-Ebene ausprobiert. Es bleibt aber dabei, dass die Anfragen so laufen
docker-Container -> VM-Host -> Firewall / Gateway -> Server im Internet (falsche Stelle für LDAP! / Timeout!)
und nicht
docker-Container -> VM-Host -> Firewall /Gateway -> interner ldap-Server bei uns

Wenn ich auf der OPNSense folgendes mache:
    Schnittstellen: Diagnose: DNS-Abfrage
und trage dort den internen ldap-Server ein, stelle ich (erstaunt!) fest, dass die OPNSense dann auch zuerst im Internet anfragt und nicht sofort den internen Host anzeigt. Vielleicht ist das ja das Problem??! Versuche ich es hingegen direkt auf der Shell der Firewall mit "host <ldap-server>" wird die interne IP-Adresse sofort richtig aufgelöst!

Die Frage ist also: Warum macht die OPNSense es einmal so und das andere Mal so??

Die OPNsense nutzt die im System hinterlegten DNS Server - nicht Unbound, daher umgeht die deine Overwrites.
Damit die OPNsense ebenfalls Unbound nutzt, muss du um System den DNS Server aus 127.0.0.1 setzen.
Wenn das dann sauber klappt, stimmt mit dem Unbound alles und das Problem vermute ich ehr bei deinen Einstellungen im Mailcow
(Unoffial Community) OPNsense Telegram Group: https://t.me/joinchat/0o9JuLUXRFpiNmJk

PM for paid support

Hallo
Das Problem ist gelöst und es war tatsächlich so, dass der mailcow-Container (genauer gesagt der Unbound-Container, der da automatisch mit läuft) offenbar externe DNS-Server verwendet hat. Als ich die auf die internen DNS-Server gelegt habe, funktionierte auch endlich die Namenslauflösung sauber.
Genaueres dazu steht hier:
https://mailcow.github.io/mailcow-dockerized-docs/de/manual-guides/Unbound/u_e-unbound-fwd/

Bisher war ich immer davon ausgegangen, dass alle docker-Container die DNS-Settings des Hosts erben und somit die gleichen Einstellungen verwenden. Das war bei dem mailcow-Container aber nicht der Fall und es half auch nicht, wenn man global in der Datei /etc/docker/daemon.json einen internen DNS-Server eingestellt hat. Unter'm Strich lag das Problem also gar nicht auf der OPNSense-Seite. Dennoch danke für's Mitdenken!