Journal Changer son DNS sur une box 4G

Posté par  . Licence CC By‑SA.
Étiquettes :
35
30
juil.
2020

Salut ‘nal !

Je t’écris aujourd’hui pour te raconter la facilité déconcertante de la manipulation nécessaire pour modifier le DNS fourni par le DHCP de ma box. Il faut savoir que j’habite en pleine cambrousse où les opérateurs me proposent un ADSL anémique et pas de fibre, je me suis donc rabattu sur une connexion 4G de l’opérateur qui passe bien par chez moi.

Dernièrement, j’ai voulu installer Pi-hole sur un Raspberry Pi, un DNS menteur local qui permet de bloquer des listes de domaines non-désirés et qui fait donc à la fois un peu office de bloqueur de publicité et de filtre de contenu pour les enfants.

Une fois installé, reste à modifier les paramètres du DHCP de ma box pour fixer le DNS sur l’adresse locale de Pi-hole. Et, horreur, dans ses paramètres seuls peuvent être modifiés l’adresse locale, la portée du DHCP et son bail. Je ne me démonte pas et recherche s’il est possible d’accéder à ce paramètre et où le trouver. Surprise le paramètre n’existe pas !

J’étais d’abord parti pour laisser tomber puis j’ai quand même voulu regarder à l’aide de la console réseau de Firefox si une requête POST transitait lors de la validation des réglages du DHCP. Et transite effectivement un XML :

<?xml version="1.0" encoding="UTF-8"?><request><DnsStatus>1</DnsStatus><DhcpStartIPAddress>192.168.1.100</DhcpStartIPAddress><DhcpIPAddress>192.168.1.1</DhcpIPAddress><accessipaddress></accessipaddress><homeurl>mabbox.bytel.fr</homeurl><DhcpStatus>1</DhcpStatus><DhcpLanNetmask>255.255.255.0</DhcpLanNetmask><SecondaryDns>192.168.1.1</SecondaryDns><PrimaryDns>192.168.1.1</PrimaryDns><DhcpEndIPAddress>192.168.1.200</DhcpEndIPAddress><DhcpLeaseTime>86400</DhcpLeaseTime></request>

Tiens donc, PrimaryDns et SecondaryDns ? Modifier la requête et la renvoyer telle quelle me déconnecte de l'interface sans valider le réglage. J'explore un peu à l'aide du débogueur. Le fichier public.js propose une fonction postData. Un point d'arrêt dessus permet d'examiner le paramètre data :

Object {
  "DnsStatus": "1",
  "DhcpStartIPAddress": "192.168.1.100",
  "DhcpIPAddress": "192.168.1.1",
  "accessipaddress": "",
  "homeurl": "mabbox.bytel.fr",
  "DhcpStatus": "1",
  "DhcpLanNetmask": "255.255.255.0",
  "SecondaryDns": "192.168.1.1",
  "PrimaryDns": "192.168.1.1",
  "DhcpEndIPAddress": "192.168.1.200",
  "DhcpLeaseTime": "86400"
}

On s'approche. Reste à tenter de modifier les Primary/Secondary DNS par l'adresse de mon Pi-hole à l'aide de la console :

data.PrimaryDns = "192.168.1.220"
data.SecondaryDns = "192.168.1.220"

Puis laisser le code reprendre. L'interface m'affiche « Succès ». Ça sent bon. Je renouvelle mon bail DHCP et je vérifie mon DNS : c'est bien 192.168.1.220, victoire !

Pi-hole propose un serveur DHCP. J'aurais pu l'utiliser à la place de celui de ma box mais je veux limiter le recours à d'autres équipements pour bénéficier du bouton reset de celle-ci en cas de souci quelconque si je ne suis pas chez moi. Je ne comprends pas pour quelle raison le réglage n'est pas dispo sur l'interface si celle-ci permet effectivement de le modifier. Ça me dépasse un peu…

  • # équipe back & équipe front

    Posté par  . Évalué à 10. Dernière modification le 30 juillet 2020 à 17:20.

    Surement parce que le dev a été fait par 2 équipes distinctes et que le dev back a prévu "au cas où" de pourvoir modifier le réglage,mais que coté front il a été décidé (à la dernière minute ?) de ne pas faire afficher ces champs. Peut-être pour une raison bassement économique ou contractuel.

    Mais un grand merci pour ton partage :-D

    • [^] # Re: équipe politique & équipe médias

      Posté par  . Évalué à 10.

      Ou parce qu'il ne faudrait surtout pas permettre au grand public de contourner la censure en lui offrant un moyen simple de le faire. Et que pouvoir surveiller le traffic sur son propre résolveur c'est toujours bon à prendre quand on se torche de la vie privée de ses clients, et qu'internet et la liberté c'est dangereux.

      Merci @journal pour la démo.

    • [^] # Re: équipe back & équipe front

      Posté par  . Évalué à 10. Dernière modification le 30 juillet 2020 à 18:38.

      Je penche pour le fait d'éviter que l'utilisateur casse son accès. Tous les paramètres qu'il a donné peuvent être modifié sans que ça affecte énormément l'accès au net des personnes. Si tu te plante d'IP DNS, Internet ne marche plus et le support a plein d'appels.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: équipe back & équipe front

        Posté par  . Évalué à 3.

        Si tu te plante d'IP DNS, Internet ne marche plus et le support a plein d'appels.

        Après rien empêche dans le code de tester si cette ip dns est valide ou de mettre une ip dns secondaire "cachée" si ça ne fonctionne pas.

        • [^] # Re: équipe back & équipe front

          Posté par  . Évalué à 6.

          C'est beaucoup plus complexe et casse-gueule1 que de ne pas permettre de le changer alors que ça ne va intéresser que 3 utilisateurs.


          1. exemple facile, si tu teste que l'IP répond au DNS et que l'utilisateur met 127.0.0.1, ça va marcher du point de vue de la box, pas du point de vue de l'utilisateur. 

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: équipe back & équipe front

            Posté par  . Évalué à 0.

            Après une petite case à cocher du genre:

            Attention cette modification est destinée au utilisateurs avancés etc…

            Ce n'est pas très compliqué à faire avec 2 lignes de js pour afficher/cacher le champ DNS en fonction de l'état de la case

            • [^] # Re: équipe back & équipe front

              Posté par  . Évalué à 5.

              Cela me semble toujours plus compliqué et risqué que de ne pas proposer l'option. En plus, une partie des utilisateurs avancée préféreront avoir un serveur dhcp externe.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # plus facile et indépendant de la box

    Posté par  . Évalué à 2.

    installer un DHCP/DNS sur ton pi-hole
    et désactiver le DHCP de la box.

    ainsi tu as un reseau indépendant du bon fonctionnement de la box, qui ne te sert alors plus qu'à accéder à internet.

    • [^] # Re: plus facile et indépendant de la box

      Posté par  . Évalué à 4.

      Pi-hole propose un serveur DHCP. J'aurais pu l'utiliser à la place de celui de ma box mais je veux limiter le recours à d'autres équipements pour bénéficier du bouton reset de celle-ci en cas de souci quelconque si je ne suis pas chez moi.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: plus facile et indépendant de la box

        Posté par  . Évalué à 1.

        bénéficier du bouton reset de celle-ci en cas de souci quelconque si je ne suis pas chez moi.

        en meme temps si t'es pas chez toi, comment tu appuies sur le bouton "reset" ?

        • [^] # Re: plus facile et indépendant de la box

          Posté par  . Évalué à 3. Dernière modification le 02 août 2020 à 11:19.

          Je suppose avec quelqu'un qui est chez lui mais qui ne peut/veut pas lire du syslog.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: plus facile et indépendant de la box

      Posté par  (site web personnel) . Évalué à 2.

      Malheureusement, certains équipements ne permettent pas de désactiver DHCP.

      Cas vécu, similaire à ce que raconte l'auteur du journal : je veux mon propre DNS pour mon réseau local, et je ne peux pas paramétrer les adresses des serveurs DNS envoyés aux clients DHCP, l'option n'existe pas.

      Par contre, je peux bloquer des clients pour qu'ils ne reçoivent pas de bail DHCP… J'en suis arrivé à la stratégie suivante, qui est assez horrible, mais qui marche :

      • sur le modem/routeur, je limite l'étendue du DHCP exactement au nombre d'adresses nécessaires
      • pour chaque équipement, je crée une règle de blocage ("telle adresse MAC ne reçoit pas de bail")
      • sur mon serveur DNS, j'installe un serveur DHCP
      • je configure le serveur DHCP en question, incluant entre autre, les paramètres adéquats pour que les clients utilisent le serveur DNS local

      Au résultat, quand un client demande une adresse via DHCP, il peut recevoir deux réponses : un rejet de la part du modem/routeur et un bail de la part de mon propre serveur DHCP. Ce n'est pas élégant, ça demande un peu plus de gestion, mais ça fait ce que je veux.

      Pour les personnes curieuses, le modem/routeur en question est un "XB3" fournit par Comcast, mon fournisseur d'accès aux États-Unis. Et dans la résidence où je suis, le choix des FAI se limite à "Comcast, Comcast ou Comcast" (plus ou moins pour des raisons historique ; Verizon, le FAI concurrent n'a pas déployé d'infrastructure dans ce quartier). Une autre solution consisterait à acheter mon propre modem/routeur et remplacer l'existant. Peut-être dans le futur…

      • [^] # Re: plus facile et indépendant de la box

        Posté par  . Évalué à 3.

        Une solution, c'est d'ajouter un routeur entre le modem et le reste, ça fait une couche de NAT en plus, mais ça simplifie la gestion dans ton cas.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: plus facile et indépendant de la box

          Posté par  . Évalué à 2.

          Tous les FAI chez qui j’ai eu un accès internet (OVH et Free en France, Videotron au Québec), j’ai pu utiliser le modem en « mode bridge » et me passer des fonctionnalités de leur box/routeur « officiel ».

          • [^] # Re: plus facile et indépendant de la box

            Posté par  . Évalué à 3.

            En Belgique, c'est plus compliqué. Déjà, tu ne peux pas changer de box (enfin, tu as un choix préapprouvé). Pour les fritzbox ce n'est plus possible, sauf en uploadant un backup existant avec le bridge configuré (que pour certains modèles).

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: plus facile et indépendant de la box

          Posté par  (site web personnel) . Évalué à 3.

          C'est probablement possible, mais j'aimerai aussi limiter le nombre d'appareils gérant mon réseau. Quitte à devoir acheter quelque chose en plus, je préférerai en avoir une boîte qui gérerai tout proprement. Le souci est qu'avec une interface câble, le choix est plus restreint.

  • # MITM

    Posté par  . Évalué à 3. Dernière modification le 31 juillet 2020 à 14:07.

    Je ne suis pas client BT donc mes infos viennent d'ailleurs.

    Apparemment, BT a longtemps utilisé un proxy, qui interceptait les requêtes DNS et y répondait à la place du résolveur DNS interrogé (et cassait DNSSEC au passage).
    Voir l'article de /dev/null qui décrit la chose.

    En partant de là, on comprend pourquoi il n'y a pas de champs pour changer de résolveur DNS : il ne sert à rien.

    Par contre, l'histoire ne dit pas si BT jouait également avec le trafic entre le résolveur et les serveurs faisant autorité (cas d'un résolveur en local, donc).

  • # parametrage DNS

    Posté par  . Évalué à 7.

    Hello,

    sinon, tu peux aller sur la page de parametrage DHCP puis dans ta console de ton navigateur renseigner ceci :

    $('#dhcp_dns').css('display', 'block');

    ça te donnera accès au paramétrage DNS du serveur DHCP de la 4G Box :-)

    A+

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.