Mon imprimante n’a pas à téléphoner tout le temps

l’Almanet doLys Gnu/Linux – Open Source – Entreprises Forums L’almanet doLys Open Source Mon imprimante n’a pas à téléphoner tout le temps

  • This topic is empty.
Affichage de 1 message (sur 1 au total)
  • Auteur
    Articles
  • #13242
    nam1962nam1962
    Keymaster

      J’ai chez moi une Brother HL-L2445DW. C’est une bonne machine, pas chère, fiable, parfaitement reconnue par CUPS sans pilote propriétaire. Sauf que comme à peu près toutes les imprimantes modernes wifi, elle adore appeler ses serveurs maison pour raconter ses petites affaires : ce que vous imprimez, quand, à quelle heure, depuis quel logiciel, dans quel format. L’article de HowToGeek qui m’a mis la puce à l’oreille détaille bien l’étendue du bavardage. Bonus : elle se met à jour toute seule, parfois pour bloquer des cartouches compatibles ou rajouter des vérifs réseau dont personne n’a rien demandé.

      Je voulais : garder l’impression locale, couper la sortie Internet de l’imprimante, et être prévenu quand une vraie nouvelle version firmware sort pour la valider moi-même. Voici ce que j’ai mis en place. Mon imprimante est branchée sur une Freebox Pop, mais si vous avez une autre marque ou une autre box, j’ai mis les équivalences en bas de page.

      Ce qu’il vous faut

      • Une distribution Gnu/Linux avec systemd et un démon de notifications (Xfce, GNOME, KDE, peu importe)
      • Une box Internet avec un système de profils/contrôle parental, ou un vrai routeur
      • Une imprimante réseau dont l’interface web propose une mise à jour firmware

      Étape 1 : trouver l’IP de l’imprimante

      Si vous avez déjà installé l’imprimante dans CUPS, son adresse est planquée là :

      lpstat -p -d
      lpstat -v Brother_NOM_DU_MODELE

      La deuxième commande retourne quelque chose du style ipp://192.168.1.135:631/ipp/print. L’IP qui nous intéresse est là.

      Si CUPS ne la connaît pas, on scanne :

      sudo nmap -p 9100 192.168.1.0/24

      Le port 9100 est le port JetDirect, ouvert sur quasi toutes les imprimantes réseau. Vous repérerez la vôtre par son vendor MAC (Brother, HP, Canon, Epson).

      Étape 2 : mettre à jour le firmware AVANT toute autre manip

      C’est important : une fois la sortie Internet coupée, plus de mise à jour automatique possible. Donc on met à jour proprement maintenant, en connaissance de cause, puis on coupe.

      Dans le navigateur, on va sur https://192.168.1.135 (l’IP de votre imprimante). Firefox va râler à cause du certificat auto-signé, on accepte l’exception, c’est notre LAN.

      Le mot de passe par défaut est imprimé au dos de l’imprimante (étiquette PWD ou Default Password). Si vous ne le trouvez pas, essayez initpass ou access selon l’âge du modèle.

      Une fois loggé, direction Administrateur > Mise à jour du micrologiciel. Bouton Vérifier. Si une nouvelle version existe, on la prend. Pendant les 2 minutes que dure l’opération, on ne touche à rien.

      Tant que vous êtes dans l’interface web, profitez-en pour changer le mot de passe administrateur dans Administrateur > Mot de passe de connexion. Stockez-le dans KeePassXC (voir mon tuto KeePassXC sur l’Almanet).

      Étape 3 : désactiver les services cloud côté imprimante

      Avant de bloquer au routeur, on coupe ce qui peut l’être directement dans l’imprimante. Ceinture et bretelles.

      Refuser l’activation du cloud Brother

      Dans Fonctions en ligne > Paramètres des fonctions en ligne, on bascule sur Désactivé l’option Autoriser la configuration des fonctions en ligne via le panneau de configuration/l'application mobile, et on valide. Ça empêche que quelqu’un (vous compris en moment d’inattention) active Brother Web Connect ou l’impression par e-mail.

      Refuser les accès depuis Internet

      Dans Réseau > Sécurité > Détection du réseau mondial, on coche Refuser l’accès au réseau mondial. Ça bloque toute connexion entrante depuis une IP publique. Inutile dans un LAN privé bien configuré, mais c’est de la défense en profondeur gratuite.

      Étape 4 : verrouiller l’IP de l’imprimante

      Sur la Freebox Pop, mode avancé, Réseau local > DHCP, onglet Baux Statiques. On ajoute un bail avec la MAC de l’imprimante et l’IP qu’elle a déjà. Comme ça, après n’importe quel reboot, elle gardera la même IP. Ça nous évite que notre règle de blocage tombe à côté.

      Sur une autre box ou un routeur OpenWrt, le menu s’appelle Static DHCP Leases ou DHCP Reservations, même principe.

      Étape 5 : couper la sortie Internet de l’imprimante

      Sur la Freebox Pop, on utilise le système de Profils (anciennement contrôle parental). Sur le bureau de Freebox OS, icône Profils, puis Ajouter un profil.

      1. Nom : Imprimante
      2. Appareils associés : sélectionner l’imprimante dans la liste
      3. Une fois le profil créé, bouton Mettre en pause avec la petite flèche déroulante
      4. Choisir Mettre en pause jusqu’à l’annulation

      Effet immédiat : l’imprimante perd Internet, mais reste accessible depuis le LAN. Vérification :

      ping -c 3 192.168.1.135

      Doit répondre. C’est notre LAN, il n’est pas affecté.

      Sur d’autres routeurs (OpenWrt, AsusWRT, UniFi, TP-Link), il existe une vraie règle de filtrage IP sortant. Sur la Freebox c’est moins propre mais l’effet est le même : pas de WAN pour cette MAC.

      Étape 6 : être prévenu des nouvelles versions firmware

      Comme on a coupé la vérification automatique, il faut maintenant un système qui surveille pour nous quand une nouvelle version sort réellement. J’ai écrit un petit script qui scrape la page de téléchargement Brother une fois par trimestre et m’envoie une notification desktop quand la version change. Aucun service tiers, tout en local, aucune télémétrie.

      Le script

      mkdir -p ~/.local/bin ~/.local/share/brother-fw
      cat > ~/.local/bin/check-brother-fw.sh << 'EOF'
      #!/bin/bash
      set -euo pipefail
      
      URL="https://support.brother.com/g/b/downloadlist.aspx?c=as_ot&lang=en&prod=hll2445dw_eu_as&os=10013"
      STORE="$HOME/.local/share/brother-fw/last-version"
      LOG="$HOME/.local/share/brother-fw/check.log"
      
      HTML=$(curl -fsSL --max-time 30 \
          -A "Mozilla/5.0 (X11; Linux x86_64) Gecko/20100101 Firefox/130.0" \
          "$URL" 2>/dev/null) || {
          echo "$(date -Iseconds) ERREUR: curl a echoue" >> "$LOG"
          exit 1
      }
      
      NEW=$(echo "$HTML" \
          | tr '\n\r\t' '   ' \
          | grep -oP 'Firmware Update Tool.{0,3000}?\([0-9]+\.[0-9]+\)' \
          | grep -oP '\([0-9]+\.[0-9]+\)' \
          | tail -1 | tr -d '()' || true)
      
      if [[ -z "$NEW" ]]; then
          echo "$(date -Iseconds) ERREUR: extraction impossible" >> "$LOG"
          exit 1
      fi
      
      OLD=$(cat "$STORE" 2>/dev/null || echo "")
      
      if [[ "$NEW" != "$OLD" ]]; then
          echo "$NEW" > "$STORE"
          if [[ -n "$OLD" ]]; then
              notify-send -u normal -i printer -t 0 \
                  "Brother HL-L2445DW : firmware $NEW dispo" \
                  "Ancien : $OLD
      
      1. Freebox OS > Profils > Imprimante > Reprendre
      2. https://192.168.1.135 > Administrateur > MAJ firmware
      3. Freebox OS > Profils > Imprimante > Pause"
              echo "$(date -Iseconds) NOUVEAU: $NEW (ancien: $OLD)" >> "$LOG"
          else
              echo "$(date -Iseconds) INIT: $NEW (premier run)" >> "$LOG"
          fi
      else
          echo "$(date -Iseconds) OK: $NEW inchange" >> "$LOG"
      fi
      EOF
      chmod +x ~/.local/bin/check-brother-fw.sh

      Adaptez l’URL et le modèle pour votre imprimante. Pour une autre marque, la logique d’extraction sera à ajuster.

      Le service et le timer systemd-user

      Plus propre qu’un cron classique : ça hérite de l’environnement de session (donc notify-send marche), c’est journalisé via journalctl --user, et ça rattrape si le PC était éteint au moment prévu.

      mkdir -p ~/.config/systemd/user
      
      cat > ~/.config/systemd/user/brother-fw-check.service << 'EOF'
      [Unit]
      Description=Verification firmware imprimante Brother
      
      [Service]
      Type=oneshot
      ExecStart=%h/.local/bin/check-brother-fw.sh
      EOF
      
      cat > ~/.config/systemd/user/brother-fw-check.timer << 'EOF'
      [Unit]
      Description=Verification trimestrielle firmware imprimante
      
      [Timer]
      OnCalendar=*-01,04,07,10-01 09:00:00
      Persistent=true
      RandomizedDelaySec=3600
      
      [Install]
      WantedBy=timers.target
      EOF
      
      systemctl --user daemon-reload
      systemctl --user enable --now brother-fw-check.timer

      Vérification :

      systemctl --user list-timers brother-fw-check.timer --no-pager

      Test manuel immédiat :

      systemctl --user start brother-fw-check.service
      cat ~/.local/share/brother-fw/check.log
      cat ~/.local/share/brother-fw/last-version

      Au premier run, vous obtiendrez une ligne INIT: X.YY (premier run) dans le log et la version dans last-version. Pas de notification, c’est l’initialisation.

      Pour tester la notification, on simule une ancienne version :

      echo "0.00" > ~/.local/share/brother-fw/last-version
      systemctl --user start brother-fw-check.service

      Une notification doit apparaître, avec les 3 étapes à faire écrites dedans. On remet ensuite la vraie version courante dans last-version et on n’y pense plus jusqu’à la prochaine fois.

      Étape 7 : la procédure quand vous recevrez une notification

      1. Freebox OS > Profils > Imprimante > Reprendre
      2. Interface web de l’imprimante > Administrateur > Mise à jour du micrologiciel > Vérifier > Mettre à jour
      3. Une fois la MAJ finie, Freebox OS > Profils > Imprimante > Mettre en pause jusqu'à l'annulation

      Trois clics, deux fois par an environ, et vous gardez la main sur ce que votre imprimante envoie ou reçoit. C’est pas la lune, c’est juste reprendre le contrôle d’une machine qu’on a payée.

      Et avec une autre imprimante, ou une autre box ?

      Le tuto vaut tel quel pour une Brother L2445, mais la logique est universelle. Voici les correspondances pour adapter à votre matériel.

      Autres imprimantes

      Toutes les marques modernes ont le même schéma : une interface web sur l’IP de l’imprimante, avec un onglet pour les « services cloud » / « web services » / « connect », et un autre pour la mise à jour firmware. Les noms changent, les principes pas.

      • HP : interface sur https://IP-imprimante, onglet Web Services ou ePrint à désactiver. Méfiance sur les modèles « HP+ » récents : Hewlett-Packard conditionne parfois la garantie et l’usage des cartouches au maintien du cloud activé. À vérifier avant achat plutôt qu’après.
      • Canon : PIXMA Cloud Link ou Canon Print Service dans le menu maintenance de l’interface web
      • Epson : Epson Connect et Email Print à couper dans la section services
      • Xerox / Lexmark (imprimantes pro) : généralement Settings > Network > Cloud Services

      Pour trouver l’IP de n’importe quelle imprimante réseau, la commande nmap de l’étape 1 marche pour toutes les marques : port 9100 ouvert, c’est une imprimante.

      Autres box opérateur

      Selon votre fournisseur, le chemin pour couper Internet à un appareil change. Les principaux :

      • Livebox (Orange) : Paramètres avancés > Pare-feu > Filtrage sortant, ou contrôle parental par appareil
      • Bbox (Bouygues) : interface bbox.home, contrôle parental par appareil
      • SFR Box : contrôle parental SFR, blocage 24h/24 sur la MAC
      • Freebox Revolution / Delta / Ultra : même système de Profils que sur la Pop

      Vrais routeurs et box flashées

      Si vous avez un vrai routeur (ou une box flashée), c’est plus propre encore : ce sera une vraie règle de pare-feu, pas un détournement du contrôle parental.

      • OpenWrt : Network > Firewall > Traffic Rules, source = IP imprimante, destination zone = WAN, action = DROP
      • AsusWRT / Merlin : Firewall > Network Services Filter, mode Deny par IP source
      • UniFi (Ubiquiti) : Firewall > Rules > LAN OUT, action Drop avec un Group contenant l’IP de l’imprimante
      • TP-Link (Archer, Deco) : Advanced > Security > Access Control, mode Blacklist
      • pfSense / OPNsense : interface LAN, règle Block, source = IP imprimante, destination = WAN net

      Plan B universel : un Pi-hole ou un Adguard Home

      Si votre box est vraiment basique et n’offre aucun blocage par appareil, il reste une voie élégante : intercepter le DNS. Un Pi-hole ou un Adguard Home sur un Raspberry Pi ou un mini-PC qui tourne 24/24 devient le DNS de votre LAN. Vous y ajoutez les domaines de télémétrie de votre marque d’imprimante en blacklist, et hop, plus de résolution DNS pour ces destinations. L’imprimante continue à essayer, mais elle n’arrive plus à joindre personne.

      Quelques domaines à bloquer selon la marque (liste non exhaustive, à compléter avec un coup de Wireshark si vous voulez être complet) :

        • Brother : *.brother.com, *.bwc.brother.com
        • HP : *.hpconnect.com, *.hpeprint.com, *.hpinstantink.com

      Pour aller plus loin

      Cette logique vaut pour tout objet connecté qui n’a aucune raison sérieuse de parler à Internet : imprimantes, télés « intelligentes », ampoules connectées, balances, jouets. Mon prochain tuto fera le tour de mes IoT mis au pain sec et à l’eau. Si vous avez la patience d’un vrai routeur derrière votre box (OpenWrt sur un petit boîtier à 30 euros, par exemple), vous pouvez aller plus loin avec un VLAN IoT isolé. Mais déjà, là, vous avez fait 95% du boulot pour 5% de l’effort.

      Bonne impression silencieuse !

      Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc

    Affichage de 1 message (sur 1 au total)
    • Vous devez être connecté pour répondre à ce sujet.