Journal ADSL := Automatic Deconnection Sucks Literally

Posté par  .
Étiquettes : aucune
0
11
avr.
2004
Le jour où, il y a une paire d'années de ça déjà, j'ai réussi à établir une session telnet avec le serveur de mon labo via mon minitel 2, j'ai bien senti que c'était le début d'une grande aventure. Puis l'internet s'est démocratisé, j'ai eu mon modem 56K, mon forfait 50h et j'étais heureux. Mais un jour les copains ont commencé à se foutre de moi avec leur ADSL : c'est que, perdu dans ma montagne parmi les ours, je ne pensais pas qu'un jour je ferais partie des heureux bénéficiaires du "haut débit" (je mets des guillemets à "haut débit" parce que sinon, je me demande quel superlatif emploieront nos enfants quand ils surferont à 1Gb, voire plus ?).
Imaginez ma fébrilité quand j'ai vu les camionnettes bleues accompagnant les pelleteuses creusant des tranchées le long de la petite route qui me relie à la civilisation ! Et j'avais vu juste : quelques temps plus tard, notre cher opérateur historique me proposait enfin son forfait "haut débit" (les guillemets sont là pour préciser qu'il s'agit ici du débit sur le compte bancaire). Après une petite mésaventure avec un opérateur dont le nom commence par le dernier chiffre de notre système décimal et qui se termine comme celui des voleurs cités plus haut (mésaventure qui mériterait bien un autre journal !), j'avais enfin ma connexion ADSL !
Ni une ni deux, je m'inscrit à DynDNS.org, je configure mon garde-barrière, mon serveur WEB, et je commence les tests depuis ma machine au bureau (mais chut ! mon chef n'a rien vu pour l'instant). Hélas, c'était sans compter avec la fameuse déconnexion journalière : de façon plus ou moins régulière - et pour l'instant totalement inexpliquée, ce qui m'amène à ce journal - la ligne se retrouve déconnectée plus ou moins violemment. Soit la connexion PPP est resettée par le peer et dans ce cas, l'option persist de pppd fait merveille, soit mon pppoe se prend un méchant PADT et là, tout est perdu.
Mon premier réflexe, bien légitime vous en conviendrez, fut de confier mon désarroi à Google. Hélas, tout ce que j'ai pu trouver tournait autour d'affreux cron scrutant l'état de la ligne pour réagir adéquatement. Si les auteurs de ces bidouilles étaient pleins de bonnes intentions, ils ne pouvaient en revanche pas satisfaire mon perfectionnisme maladif. J'ai donc passé un certain temps à tester les options de pppoe et de pppd : quand il faut attendre 24h pour valider un test, et vu le nombre d'options à tester, ça peut être long !
N'ayant obtenu aucun résultat satisfaisant, je me décidai alors, la mort dans l'âme et la honte sous le bras, à installer un cron. Comme je suis aussi fier que perfectionniste, j'optai pour la déconnexion volontaire à heure fixe, suivie par une reconnexion quelques minutes plus tard : ce n'est pas vous qui me virez, c'est moi qui pars - vous voyez l'esprit. Hélas, trois fois hélas, j'avais beau augmenter l'attente entre la déconnexion et la reconnexion, cette dernière se soldait toujours par une série de modem hangup finalement fatale à mon pppd. J'en suis maintenant à 15 minutes d'attente, toujours sans succès.
Pourquoi ? Pourquoi tant de haine ? Pourquoi cela fonctionne-t-il très bien si je le fais à la main et pas dans un cron (il y a 2 crons en fait : un pour déconnecter et un pour reconnecter 15 minutes plus tard) ? Je ne sais pas, je ne sais plus, je suis perdu.
Vous l'aurez peut être deviné, je ne suis pas tant intéressé par les trucs qui marchent que par une compréhension pleine et entière de ce qui se passe. Aussi, si l'un ou plusieurs d'entre vous avait une explication complète de cette déconnexion journalière, qui la provoque, comment elle est faite et quelles sont les conséquences sur un brave pppoe, je lui serais infiniment reconnaissant de bien vouloir dispenser quelques miettes de sa science au pauvre misérable ignorant que je suis.
  • # Commentaire supprimé

    Posté par  . Évalué à 0.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Re: ADSL := Automatic Deconnection Sucks Literally

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

    Je suis automatiquement déconnecté toutes les 36h (à quelques secondes près) mais ppp se reconnecte tout seul comme un grand. Je me suis jamais vraiment penché sur les options de ppp (ça marche, c'est bon) mais tout ce que j'ai eu à faire je crois que c'est d'ajouter -ddial à la ligne de commande (mais bon c'est OBSD et je sais pas si cette option existe sous Linux).

    Et oui c'est du PPPoE et non c'est pas le même ISP.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Re: ADSL := Automatic Deconnection Sucks Literally

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

    Pour ton probleme de connexions ghosts et d'attente de 15 minutes, force la desync, et la resynchro de ta ligne dans ton script.
    • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

      Posté par  . Évalué à 1.

      Si ta réponse ne résoud pas le "pourquoi", elle exite fortement ma curiosité quand au "comment" ! Qu'entends tu par "forcer la desync" ? Il est vrai que j'utilise le mode sync :
      pty "pppoe -s -I eth0:2 -T 80 -m 1452"
      sync
      (extrait de dsl-provider dans /etc/ppp/peers)
      Dois-je utilise le mode par défaut ?
      • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

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

        Une connexion adsl c'est plusieurs couches dont aux niveaux les plus bas, une couche de liaison non authentifiée, completement transparente, entre le dslam et ton modem.

        C'est cette couche de liaison qui se plante, qui t'écrit des modems hangup, et des lcp error dans tes logs. La cause peut etre une ligne téléphonique parasitée, ton soft pppd qui crash, ton modem ou le dslam qui a planté, etc ...

        Plus précisement, c'est le lien physique entre ton modem, et le dslam qui est resté ouvert, alors que la connexion ppp est bien terminée. Une connexion ppp ne peut s'initialiser que si ce lien est à l'état mort.

        Il faut donc reinitialiser la configuration en fermant le lien . Tu peux débrancher, ou tu rebrancher ton cable, le couper à coup de cutter/hache (déconseillé pour les enfants) , éteindre ton modem, ou attendre tes 15 minutes de tempo), la connexion se rétablit ensuite normalement avec le dslam.

        Pour un modem interne ou usb, il faut décharger/recharger le module/firmware. Pour un modem ethernet, il faut sans doute utiliser une commande de pppoe .

        http://www.google.fr/search?q=cache:xPZpDPVn76gJ:www.eisti.fr/res/r(...)
        • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

          Posté par  . Évalué à 1.

          Mais alors quelle est la différence entre "à la main" et par cron ???

          Voici ce qui se passe quand je fais "poff"/"pon" à la main :

          Apr 11 13:37:14 boudu pppd[22542]: Terminating on signal 15.
          Apr 11 13:37:14 boudu pppoe[22543]: Received signal 15.
          Apr 11 13:37:14 boudu pppoe[22543]: Sent PADT
          Apr 11 13:37:14 boudu pppd[22542]: Modem hangup
          Apr 11 13:37:14 boudu pppd[22542]: Connection terminated.
          Apr 11 13:37:14 boudu pppd[22542]: Connect time 284.7 minutes.
          Apr 11 13:37:14 boudu pppd[22542]: Sent 1194258 bytes, received 4988704 bytes.
          Apr 11 13:37:20 boudu pppd[22542]: Exit.
          Apr 11 13:37:30 boudu pppd[23843]: pppd 2.4.1 started by root, uid 0
          Apr 11 13:37:30 boudu pppd[23843]: Using interface ppp0
          Apr 11 13:37:30 boudu pppd[23843]: Connect: ppp0 <--> /dev/pts/1
          Apr 11 13:37:30 boudu pppoe[23844]: Changed pty line discipline to N_HDLC for synchronous mode
          Apr 11 13:37:31 boudu pppoe[23844]: PADS: Service-Name: ''
          Apr 11 13:37:31 boudu pppoe[23844]: PPP session is 3621
          Apr 11 13:37:35 boudu pppd[23843]: Cannot determine ethernet address for proxy ARP
          Apr 11 13:37:35 boudu pppd[23843]: local IP address x.x.x.x
          Apr 11 13:37:35 boudu pppd[23843]: remote IP address x.x.x.x

          Et voici ce qui se passe entre 4:00 et 4:15 (par cron) :

          Apr 11 04:00:03 boudu pppd[18159]: Terminating on signal 15.
          Apr 11 04:00:03 boudu pppoe[19515]: Received signal 15.
          Apr 11 04:00:03 boudu pppoe[19515]: Sent PADT
          Apr 11 04:00:03 boudu pppd[18159]: Modem hangup
          Apr 11 04:00:03 boudu pppd[18159]: Connection terminated.
          Apr 11 04:00:03 boudu pppd[18159]: Connect time 632.8 minutes.
          Apr 11 04:00:03 boudu pppd[18159]: Sent 783627 bytes, received 1080327 bytes.
          Apr 11 04:00:08 boudu pppd[18159]: Exit.
          ...
          Apr 11 04:15:02 boudu pppd[21470]: pppd 2.4.1 started by root, uid 0
          Apr 11 04:15:02 boudu pppd[21470]: Using interface ppp0
          Apr 11 04:15:02 boudu pppd[21470]: Connect: ppp0 <--> /dev/pts/0
          Apr 11 04:15:02 boudu pppd[21470]: Modem hangup
          Apr 11 04:15:02 boudu pppd[21470]: Connection terminated.
          Apr 11 04:15:02 boudu pppd[21470]: Using interface ppp0
          Apr 11 04:15:02 boudu pppd[21470]: Connect: ppp0 <--> /dev/pts/0
          Apr 11 04:15:02 boudu pppd[21470]: Modem hangup
          Apr 11 04:15:02 boudu pppd[21470]: Connection terminated.
          etc., etc., etc.
          Apr 11 04:15:04 boudu pppd[21470]: Connection terminated.
          Apr 11 04:15:04 boudu pppd[21470]: Exit.

          Puis quand je me lève, je fais "pon" et ça repart ! Qu'est-ce qui fait que le "poff" dans un cron ne se comporte pas comme le "pon" en ligne de commande ?
          • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

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

            Ton probleme ne vient pas de ta crontab, mais d'un temporisateur. Le dslam, ou le modem mettent un certains temps avant de retourner à l'état : deadlink.

            Si tu tappes ta commande "pon" à la main, juste après ta perte de connexion, tu auras le droit à la meme erreur qu'avec la crontab. Par contre, si tu le fais le lendemain matin, c'est sur que ça marche normalement.

            C'est facile à contrôler:
            Au lieu de lancer ta connexion manuellement pour la première fois, lance la par ta crontab.

            Si ta connexion fonctionne, c'est que ton entrée dans la crontab est correct, et que c'etait donc bien un problême lié à la couche liaison et au tempo.
            • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

              Posté par  . Évalué à 1.

              He bien je crois que tu as mis le doigt dessus : ça ne fonctionne pas par la crontab ! J'avais testé avec "at", mais pas par la crontab. Il est un peu tard et je suis fatigué, mais je crois que je vais regarder du côté du "tty" :

              pty script
              Specifies that the command script is to be used to
              communicate rather than a specific terminal device.
              Pppd will allocate itself a pseudo-tty master/slave
              pair and use the slave as its terminal device. The
              script will be run in a child process with the
              pseudo-tty master as its standard input and output.
              (extrait de man pppd)

              La première différence qui me saute aux yeux entre la ligne de commande et la crontab, c'est justement l'absence de tty dans le second cas. Merci infiniment pour tes précieuses indications !

              À suivre...
            • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

              Posté par  . Évalué à 1.

              Je suis un âne ; c'était bien ça : une autre différence principale entre la ligne de commande (comme at ou batch) et la crontab, c'est l'environnement, et en particulier le PATH !
              Les plus observateurs d'entre vous auront remarqué que mon "dsl-provider" contenait une ligne commençant par :
              pty "pppoe ..."
              Hors "pppoe" se trouve dans /usr/sbin, qui n'est pas dans le PATH des scripts s'exécutant par cron. Je connaissais pourtant la règle d'or : toujours des chemins complets et absolus dans les cron ! Mais là, c'était planqué dans un fichier de configuration...
              Bon, je n'ai toujours pas compris tous les tenants et aboutissants de la déconnexion journalière, mais Code34 (que ton nom soit bénit pour 40 générations) m'a apporté assez d'informations pour que j'avance sur le chemin tortueux de la connaissance. Et puis si ça ne suffit pas, j'arriverai bien un jour à capturer un agent de France Télécom et à le faire parler (Oh, sans torture bien sûr : une bonne bouteille devrait faire l'affaire*). Ce sera l'occasion d'un nouveau journal.

              * si y'en a un parmi vous dans la région grenobloise...
  • # Re: ADSL := Automatic Deconnection Sucks Literally

    Posté par  . Évalué à 2.

    Je n'ai pas d'explication à ça, mais chez moi (modem eci usb), celà fonctionne si je lance, systématiquement, 2 fois de suite la connexion (dans un cron) : la première fois celà echoue, la deuxième ça marche.
    Il faut se faire une raison, en informatique, il y a des phénomènes paranormaux que l'on ne peut expliquer :)
    • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

      Posté par  . Évalué à -1.

      Il faut se faire une raison, en informatique, il y a des phénomènes paranormaux que l'on ne peut expliquer :)

      Oh ! Voyons ! Pas sous Linux ! ;-)
    • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

      Posté par  . Évalué à 2.

      Non non non, je n'ai jamais vu ce problème avec les modems usb par contre sur mon bewan ethernet j'ai effectivement le meme probleme. Chose qui ne me gene que peux puisque cette machine est eteinte quand je dors et je dors assez regulierement pour ne faire que rarement le tour des 24h :-)

      La "technique" que j'ai trouvé c'est de debrancher/rebrancher le modem. Ca marche tres bien le seul probleme etant que ca se met difficilement dans un script shell. Mais en y reflechissant bien c'est vrai que resynchroniser la ligne ne semble pas debile, je vais tester ca !
    • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

      Posté par  . Évalué à 2.

      C'est pas l'informatique (du moins pas l'OS et tout) c'est plutot le modem (ou le driver mais les gens qui le font sont de bonne foi ;)) qui est quand même bien pourri, perso j'ai un cron qui tourne et qui fait un ping toute les minutes et réagit en fonction du résultat. Je sais c'est porc mais j'ai pas trop le choix (j'ai pas un ethernet...)

      Voilà
      a+
      • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

        Posté par  . Évalué à 1.

        Je sais que mon verbiage ne rend pas la compréhension facile, mais je crois que vous m'avez mal lu : je n'ai pas de problème avec le modem ou un quelconque driver (du moins apparemment). Si je fais
        # poff dsl-provider
        suivit de
        # pon dsl-provider
        ça fonctionne parfaitement. Si c'est un cron qui le fait, rien ne va plus. Je ne crois pas que cela remette en cause le modem, n'est-ce pas ? Quand au driver, vu qu'il s'agit 'un modem ethernet... (bien vu, alenvers)
  • # Re: ADSL := Automatic Deconnection Sucks Literally

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

    Plutôt qu'un cron je pencherai sur l'utilisation de mon qui peut être vraiment approprié dans ce cas. Il scrute la connection (un vague grep d'un ifconfig ppp0 doit suffire) et au bout de n tentatives où il n'a pas de résultat, il reconnecte proprement.

    L'avantage de mon est qu'il intègre l'idée de "je fais quelque chose si tout va mal au bout de tant de temps/tentatives", pratique dans ton cas je pense.

    C'est étrange quand même ton affaire. Pour faire un seul cron tu pourrais mettre un sleep 900, ça le ferai attendre 1/4 h (ça me semble un peu long d'ailleurs).
  • # Re: ADSL := Automatic Deconnection Sucks Literally

    Posté par  . Évalué à 1.

    Et un simple script comme ceci ?

    sleep 43200
    poff dsl-provider
    sleep 900
    pon dsl-provider
  • # Commentaire supprimé

    Posté par  . Évalué à 1.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

      Posté par  . Évalué à 2.

      J'ai un problème comparable au monsieur.

      L'utilisation des scripts ip-up et ip-down ne fonctionne pas souvent dans mon cas. En règle générale la connexion est toujours active alors que plus rien ne peut passer à travers. Un "poff" et un "pon" sont la seule solution, et elle ne marche pas à tous les coups.

      Ci-dessous quelques exemples de logs quand la connexion se coupe et ne veut plus repartir:

      pppd[15765]: LCP terminated by peer
      pppoe[16333]: Session terminated -- received PADT from peer
      pppd[15765]: Modem hangup
      pppd[15765]: Connection terminated.

      [...]

      pppd[15765]: Serial connection established.
      pppd[15765]: Using interface ppp0
      pppd[15765]: Connect: ppp0 <--> /dev/pts/0
      pppoe[16504]: PADS: Service-Name: ''
      pppoe[16504]: PPP session is 431
      pppd[15765]: Remote message: Tunnel startup failure
      pppd[15765]: CHAP authentication failed
      pppd[15765]: Connection terminated.
      pppoe[16504]: read (asyncReadFromPPP): Input/output error
      pppoe[16504]: Sent PADT

      [...]

      pppd[15765]: Serial connection established.
      pppd[15765]: Using interface ppp0
      pppd[15765]: Connect: ppp0 <--> /dev/pts/0
      pppoe[16624]: PADS: Service-Name: ''
      pppoe[16624]: PPP session is 443
      pppd[15765]: No response to PAP authenticate-requests
      pppd[15765]: Connection terminated.
      pppoe[16624]: read (asyncReadFromPPP): Input/output error
      pppoe[16624]: Sent PADT

      [...]

      pppoe[14211]: Session terminated -- received PADT from peer
      pppd[14209]: LCP terminated by peer
      pppd[14209]: ioctl(PPPIOCSASYNCMAP): Inappropriate ioctl for device(25)
      pppd[14209]: tcflush failed: Input/output error
      pppd[14209]: Exit.
    • [^] # Re: ADSL := Automatic Deconnection Sucks Literally

      Posté par  . Évalué à 1.

      Tu vas réussir à me vexer : tu penses bien que j'ai essayé ça aussi ;-)
      Le problème est qu'il faut choisir entre persist et ip-down : si la connexion est terminée par le FAI, c'est ppp qui se termine en premier et l'option persist + ip-down provoquent un lancement parallèle de nombreux ppp+pppoe qui se marchent dessus et se font planter les uns les autres. C'est du moins ce que j'ai déduit de l'analyse de la log un soir en rentrant chez moi. Par contre, il est vrai que ça fonctionne bien lors de la déconnexion journalière, mais là, c'est pppoe qui se termine en premier. Voir les traces gentillement fournies par tulan.
      Bon, certes, il faudrait peaufiner le script lancé par ip-down, qu'il vérifie dans quel contexte il a été appelé avant d'agir, etc. Mais ça devient de plus en plus gruïk comme solution ! (analyse de fichier de log, en tenant compte du fait qu'on peut être en plein milieu d'un logrotate, etc.)
      Et puis n'oublie pas ma question initiale : je voudrais comprendre. Je préfèrerais que ça ne fonctionne pas mais que je comprenne pourquoi !
  • # Re: ADSL := Automatic Deconnection Sucks Literally

    Posté par  . Évalué à 1.

    'lut !

    Moi je ferais une bonne statistique sur l'heure de deconnexion et je ferais un script tenant compte des paramètres calculés à partir des stat collectées.

    ça à l'air con mais à priori ça doit deconecter tjrs à la même heure non ?

Suivre le flux des commentaires

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