Portail Captif +WPAD et Firefox



  • Bonjour à tous :)
    Je fais appel à ce forum car cela fait quelques jours que j'ai le problème suivant:

    Contexte: Pour les études, débutant avec pfsense

    WAN: box internet

    LAN: 4 postes (bridge) ip 10.0.11.x

    WLAN: Wifi (point d'accès) 10.0.12.x

    Packages: SQUID + SQUIDGUARD + SNORT + PFBLOCKER

    J'ai mis le proxy (port 3128) sur l'interface LAN et WLAN en mode transparent ce qui marche très bien, j'ai ensuite voulu rajouter un portail captif seulement sur l'interface WLAN (je sais que beaucoup vont me dire quece n'est pas un bon choix mais je ne peux faire autrement).

    Cela fonctionne que si l'URL du Portail Captif est ajoutée en exception dans le navigateur (ici Firefox).
    Mais lorsque je souhaite automatiser cette configuration avec la méthode WPAD, je n'arrive pas à avoir le même résultat, soit la configuration me renvoie qu'en mode "DIRECT" soit seulement sur mon proxy.

    Si quelqu'un aurait un code se rapprochant de cette configuration Firefox, je suis preneur. :) Je suis persuadé que c'est possible de l'automatiser, puisque manuellement la configuration marche.

    Merci d'avance pour vos réponses.




  • Peux-tu, stp, monter le contenu de ton proxy.pac ?
    Attention, WPAD et le proxy en mode transparent, ça ne va pas marcher… car le mode transparent du proxy va rediriger le port 80 vers le proxy et donc pas vers le portail.

    Donc proxy explicite avec WPAD.



  • Merci chris4916 de répondre :),

    Pour le proxy, rectification il est en mode explicite mais sans authentification, le plus étonnant c'est que dans Firefox en manuelle tout ce fait parfaitement ( authentification portail puis redirection vers proxy !).

    Voici le contenu de mon proxy.pac:

    function FindProxyForURL(url,host)
    {
    // If the requested website is hosted within the internal network, send direct.
        if (isPlainHostName(host) ||
            shExpMatch(host, "*.local") ||
            isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
            isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0") ||
            isInNet(dnsResolve(host), "192.168.0.0",  "255.255.0.0") ||
            isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
            return "DIRECT";
    // Else use the proxy
        return "PROXY 10.0.11.254:3128";
    }



  • Sur le forum, il y a eu des fils sur le sujet WPAD : c'est intéressant de les lire.
    En particulier, un utilisateur a donné un lien vers un outil de test WPAD pas inintéressant (en particulier pour un débutant …).

    j'ai ensuite voulu rajouter un portail captif seulement sur l'interface WLAN (je sais que beaucoup vont me dire que ce n'est pas un bon choix mais je ne peux faire autrement).

    Cela fonctionne que si l'URL du Portail Captif est ajoutée en exception dans le navigateur (ici Firefox).

    No comprendo = pas clair !

    Créer un portail captif sur le Wifi visiteur et pas sur le LAN interne, est assez banal et classique.



  • J'ai l'impression que ton proxy.pac a changé entre e moment ou j'ai aperçu ta réponse plus tôt dans la journée et maintenant que je me connecte au site  ???

    Si tu essaies un autre proxy.pac, ajoute un commentaire avec la nouvelle version mais si tu édites le post initial, c'est difficile à suivre.

    Le proxy.pac (que je vais copier là histoire de savoir de quoi on parle dès fois que tu le changes à nouveau  :P

    function FindProxyForURL(url,host)
    {
    // If the requested website is hosted within the internal network, send direct.
        if (isPlainHostName(host) ||
            shExpMatch(host, "*.local") ||
            isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
            isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0") ||
            isInNet(dnsResolve(host), "192.168.0.0",  "255.255.0.0") ||
            isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
            return "DIRECT";
    // Else use the proxy
        return "PROXY 10.0.11.254:3128";
    }

    dit: "pour les serveurs qui ont une IP dans la RFC 1819, accès direct, ou si non, proxy.", ce qui me semble assez correct.

    Si ton domaine est en .local => c'est une mauvaise idée. ça n'a rien à voir avec ton problème mais c'est juste un commentaire au passage ;-)

    1 - Comment accèdes-tu au portail captif ?
    2 - est-ce que le client résout bien l'URL du portail (avec comme résultat une ip "locale" ?
    3 - es-tu certain que les clients arrivent bien à charger le proxy.pac ?



  • En lisant ton post dans la section internationale, qui est plus clair finalement que celui-ci, ce qui m’interpelle c'est que tu ne décris pas la même chose ???
    Par exemple, les ports sont différents. C'est du test et même si ça ne l'était pas, tu ne prends aucun risque à décrire ta config réelle et non pas celle que tu adaptes selon à qui tu fais la description car il y a ensuite le risque d'erreur de frappe ou de compréhension qui te fait retranscrire un truc qui te semble sans importance alors que ce n'est pas le cas  :P
    "the devil is in the details"

    Il y a un point que je voudrais attirer à ton attention:

    • ton proxy est un package pfSense. Il écoute donc normalement sur les interfaces LAN et WLAN => pourquoi y accéder depuis WLAN en passant par LAN alors que tu peux y accéder sur le réseau 10.0.12.0 (je ne sais pas quel port du coup puisque ça chaque en changeant de langue  :P)
      De plus ça supposerait que tu peux accéder au LAN depuis WLAN. Est-ce bien le cas ?
      Ce qui va d'ailleurs m'amener à la question en fin de post…

    Du coup, ton proxy.pac devrait plutôt ressembler à:

    function FindProxyForURL(url,host)
        {
        // If the requested website is hosted within the internal network, send direct.
            if (isPlainHostName(host) ||
                isInNet(dnsResolve(host), "10.0.11.0", "255.255.255.0") ||
                isInNet(dnsResolve(host), "10.0.12.0", "255.255.255.0") ||
                isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
                return "DIRECT";
        // if on LAN network, then use LAN proxy
            if (isInNet(myIpAddress(), "10.10.11.0", "255.255.255.0"))
                return "PROXY 10.0.11.254:3128";
        // if on WLAN subnet, then use WLAN proxy       
            if (isInNet(myIpAddress(), "10.10.12.0", "255.255.255.0"))
                return "PROXY 10.0.12.254:3128";       
        // Supposing .11.254 is also your default gateway on WLAN
        // Else …. to be defined
            return "PROXY 10.0.11.254:3128";
        }

    Attention !!!!  si tu utilises IPV6… isInNet(myIpAddress) renvoie ton IP... V6, donc ça ne marche pas  ;D
    De même, si ton fichier hosts contient, pour localhost, le nom de ta machine, ça renvoie 127.0.0.1 et donc... ça ne marche pas non plus  ;D ;D

    A utiliser donc en bonne compréhension de l’environnement.

    Du coup, il peut être plus intéressant de retourner "PROXY proxy.domain:3128" (un fqdn et pas une IP) et te t'assurer que le DNS renvoie l'IP du subnet d'où est faite cette requête  8)

    Tout ça m'amène à mon dernier point:

    • où se situe le serveur Web qui expose ton proxy.pac ?
    • celui-ci est-il bien accessible aux client WLAN ?  ::)  (hint: qu'obtiens-tu si, depuis WLAN, tu tapes: http://wpad/proxy.pac  ?)


  • Tout d'abord désoler pour les modifications ( promis je touche plus à rien ), je débute sur les forums, après relecture j'avou ce n'est pas très clair, je vais tenter d'éclaircir ainsi que répondre à vos questions.
    Pour info j'ai lu les topics français et internationaux sur le WPAD et son fonctionnement avant de poster ici , mais malheureusement malgré cela aucun ne correspondait à mon problème (mais j'ai appris pas mal de chose de ce coter là) :)

    Les infos que j'ai poster sur ce topic son les vrais info (bon port et adresse IP)
    @chris4916:

    1 - Comment accèdes-tu au portail captif ?
    2 - est-ce que le client résout bien l'URL du portail (avec comme résultat une ip "locale" ?
    3 - es-tu certain que les clients arrivent bien à charger le proxy.pac ?

    1. J'accède au portail captif via un poste client en wifi (point d'accès) relier à mon interface WLAN, ensuite via l'URL  "10.0.12.254:8002/index.php?zone=test "

    2. Alors je ne sais pas trop, il ne résoud pas l'URL du portail quand je tape " 10.0.12.254:8002 mais l'URL entier oui mais il fait bien le travail de redirection quand on tape "google " il me renvoie bien l'URL du portail ( vaut pour la configuration en local de firefox pas pour le WPAD qui du coup marche pas ^^).

    3. OUI le client récupère bien le proxy.pac car je fais mes tests en entrant l'URL de mon proxy.pac dans firefox, et Wireshark me montre bien que je le récupère bien (je peux envoyer log Wireshark en Mp)



  • @chris4916:

    Il y a un point que je voudrais attirer à ton attention:

    • ton proxy est un package pfSense. Il écoute donc normalement sur les interfaces LAN et WLAN => pourquoi y accéder depuis WLAN en passant par LAN alors que tu peux y accéder sur le réseau 10.0.12.0 (je ne sais pas quel port du coup puisque ça chaque en changeant de langue  :P)
      De plus ça supposerait que tu peux accéder au LAN depuis WLAN. Est-ce bien le cas ?
      Ce qui va d'ailleurs m'amener à la question en fin de post…

    Effectivement je peux utiliser le proxy en 10.0.12.254:3128, juste quand j'ai fais mes tests manuellement sur Firefox j'ai entrer 10.0.11.254:3128 par habitude et cela fonctionnait.
    Je peux accéder au LAN depuis mon WAN car j'accède àmon interface pfsense en 10.0.11.254 comme en 10.0.12.254. J'ai mis une règle NAT pour faire communiquer les 2 réseaux.

    Quand tu dis " isInNet(myIpAddress) renvoie ton IP… V6, donc ça ne marche pas " (déja merci car je ne savais pas !) mais du coup quelle est l'équivalent en IPV4 ? ou alors j'autorise l'PV6 car je l'ai blocker sur mon PfSense.

    _ Mon serveur Web est en localhost
    _Je récupère bien le proxy.pac pas de sucis de ce coter là, il me propose bien de le télécharger quand je rentre son emplacement dans l'URL Firefox, ma détection n'est pas entièrement automatic tant que je fais des tests j'indique a Firefox l'URL de mon proxy.pac.

    Merci beaucoup pour vos réponse déjà ! Je vais faire quelques tests avec vos infos :D


Log in to reply