DNS Black Hole nur für unauthentifizierte Captive Portal User



  • Hi,
    folgende Situation: ich möchte Benutzern ein Captive Portal zur Verfügung stellen, über welches sie sich für einen Internetzugang registrieren können und auf diesem auch Informationen anbieten, die sie auch ohne Internet nutzen können.
    Soweit so gut, jetzt kann leider nicht garantieren, dass durchgehen eine Internetanbindung zur Verfügung steht. Genau hier beginnt mein Problem. Ohne Internet keine DNS Auflösung, kein HTTP Request, keine Umleitung auf das Captive Portal, keine lokalen Infos. Lösung hier wäre ein DNS Black Hole https://doc.pfsense.org/index.php/Creating_a_DNS_Black_Hole_for_Captive_Portal_Clients, welches die DNS Anfrage auf eine (quasi) beliebige IP auflöst, damit gibt es einen HTTP Request, den ich umleiten kann bzw. kann ich den User direkt auf die CP Seite leiten. Damit gibt es allerdings keine korrekte Auflösung mehr für User, die einen Internetzugang haben und normal surfen wollen.
    Nun meine Frage(n): lässt sich das DNS Black Hole nur für unauthentifizierte User einrichten - oder - lassen sich Firewall Regeln anhand des Authentifizierungsstatus des Users einrichten (dann könnte man zwei DNS Server mitgeben und je nach Authentifizierungsstatus den einen oder anderen sperren)?



  • Hi,

    bin nicht so in dem Thema drin aber in der Dokumentation steht dies hier:

    Allowed IP addresses
    Allows managing a list of IP addresses which can either:

    Always connect from behind the portal (clients)
    Always allow clients to an IP address (external servers)
    These IP addresses will bypass the portal authentication in the direction specified.

    Sprich wenn du die IPs von den Servern angibst welche IMMER erreichbar sein sollen so brauchst du kein Black Hole weil du nichts umleiten musst.
    Sollten dies externe DNS Einträge sein würde ich für diese "allways" Hosts einfach einen Host Override im DNS Resolver hinterlegen. Dann kannst du die pfSense als DNS Server per DHCP verteilen und hast was du willst.

    Hoffe ich konnte dir helfen.

    Gruß blex



  • Hey blex,

    genau, das funktioniert auch soweit. Problem ist, ohne Internet müssten die Clients die Seite/Server manuell im Browser aufrufen.
    Normaler Weise rufen Apple Geräte das Portal alleine auf, Microsoft und Android Software je nach Version auch oder sie blenden eine Info ein, dass man sich ggf. in einem Portal einloggen muss und ob man dieses öffnen möchte. Das ganz funktioniert dadurch, dass die Geräte beim Herstellen einer WLAN Verbindung im Hintergrund eine Webseite beim Hersteller aufrufen und wenn sie die Seite bekommen ist Internet vorhanden, wenn sie was anderes zurück kriegen (durch Umleitung des DNS oder HTTP Request), das Captive Portal öffnen oder die Meldung anzeigen.
    Wenn jetzt durch mangelndes Internet keine DNS Auflösung stattfindet, geht der HTTP Request logischer Weise nicht raus und man kann die Anfrage nicht auf das eigene Captive umleiten.
    Nun könnte man die URLs, die abgefragt werden natürlich auch statisch im DNS eintragen, aber allein für Apple habe ich 64 unterschiedliche URLs rausgefunden (ggf. nicht mal vollständig) und ein statischer Eintrag auf Dauer ist natürlich auch nicht toll, wenn sich evtl. die IPs irgendwann mal ändern oder neue Seiten dazu kommen.