To content | To menu | To search


Tuesday 9 October 2012

Le jour où telnet m'a sauvé la vie

Thanks, OpenSSH!

Y'a des protocoles comme ça, qui datent du début de l'internet (voir d'avant), et qui ne devraient franchement plus exister. Le FTP est l'un deux. Et puis telnet aussi.

Au boulot j'ai été horrifié de voir que les machines Solaris avaient toutes leur port telnet ouvert, et qu'en plus des gens s'en servaient encore pour se connecter aux machines...

Et puis aujourd'hui, l'accident bête. Problème de time-out SSH, classique, je rajoute la ligne qui va bien dans la conf et relance le service. Ce qui devient bête - voir même très con - c'est que je me déconnecte, plutôt que de garder ma session ouverte et d'en ouvrir une deuxième pour vérifier que tout va bien, comme tout admin normalement constitué aurai dû le faire.

Et là, c'est le drame: impossible de se loguer à la machine, SSH down...

Là j'ai plusieurs solutions:

  1. Se connecter à la carte d'admin de la machine. Problème: le câble est pas branché, et le switch m'a regardé d'un air tellement mauvais quand j'ai scruté ces ports libres que j'ai vite lâché l'affaire. Sans compter le bordel pour retrouver l'IP du bouzin, etc.
  2. Brancher un écran/clavier dessus. Facile, mais nettement moins avec du matos Sun...proprio (je suis resté un an avec une Ultra 5 inutilisable, faute de clavier pour la faire démarrer). On oublie.
  3. À l'ancienne, une bonne vieille connexion sur le port série. C'est sport, mais jouable. Par contre pour trouver un adaptateur usb ça risque de prendre la journée...
  4. Et la dernière solution, donc, qui fait mal au cul: telnet. Hourra, on peut se connecter et se rendre compte que le service SSH c'est mis "en maintenance". Le BATARD. La faute sans doute à la ligne copiée/collée un peu trop à la va-vite, puisque destinée à un OpenSSH alors que j'avais affaire à un sun ssh.

Ça apprends l'humilité un peu. Merci l'ancêtre.

Monday 8 October 2012

Building the perfect web toaster, part 1

Suite de mes aventures poundo-varnisho-lighttesques, je pense avoir trouvé la solution à mes problèmes de time-out.

En effet, après avoir testé toutes les valeurs possibles et imaginables des compteurs de PHP, après avoir testé php-fpm (uh, pas stable), testé NginX (on y reviendra à celui là), j'ai fini par...bypasser Varnish et passer les requêtes de Pound directement à Lighttpd. Et plus de time-outs. J'avais trouvé mon coupable.

Varnish, ou plus précisément une de ces sondes, paramétrée un peu trop agressivement. Le serveur ne répondant pas assez rapidement, il était déclaré "malade" et plus aucune requête ne  parvenait à lui. D'où, time-out.

Un .timeout = 5m; plus tard, je n'ai plus de problème. Je laisse tourner un varnishlog en fond, sait-on jamais, et je touche du bois.

Tuesday 2 October 2012

C'est vraiment du travail de poundé (2)

suite à l'installation de Pound, j'obtenais régulièrement le laconique message d'erreur "An internal server error occurred. Please try again later." en consultant mon agrégateur web.

et dans les logs du serveur:

Oct  2 21:35:53 web pound: (80128ac80) e500 for XXX.XXX.XXX.XXX response error read from 127.0.0.1:80/POST /backend.php HTTP/1.1: Operation timed out (15.455 secs)
Oct  2 21:35:53 web pound: (801208280) e500 for XXX.XXX.XXX.XXX response error read from 127.0.0.1:80/POST /backend.php HTTP/1.1: Operation timed out (15.455 secs)
Oct  2 21:36:04 web pound: (801205180) e500 for XXX.XXX.XXX.XXX response error read from 127.0.0.1:80/POST /backend.php HTTP/1.1: Operation timed out (15.556 secs)

ainsi que:

Oct  2 21:39:40 web pound: (801205a40) e501 bad request "PROPFIND /calendars/XXXXXXXXXXXXXXXXXXXX/9/ HTTP/1.1" from XXX.XXX.XXX.XXX

les premiers logs étaient dus à un time-out trop long de la part de lighttpd. 15 secondes me parait une valeur énorme alors que tous les processus écoutent en local, mais monter cette valeur à 60 secondes à fait disparaitre ces erreurs et - so far, so good - les problèmes d'accès.

les seconds étaient quant à eux liés à un manque d'autorisations, en effet il faut préciser explicitement à Pound qu'on autorise les commandes WebDAV et autres extensions MS.

voici donc la conf finale:

Control "/var/run/pound.sock"
User "www"
Group "www"
LogLevel 5
TimeOut 60

# Listener IPv4
ListenHTTPS
        Address 0.0.0.0
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"
        xHTTP 3

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

# Listener IPv6
ListenHTTPS
        Address ::
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"
        xHTTP 3

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

Sunday 30 September 2012

C'est vraiment du travail de poundé

Sur ce serveur j'utilise l'excellent reverse-proxy Varnish, qui permet à n'importe quelle bouse application un peu lourde de tenir la charge, et surtout, de s'exécuter plus rapidement. Mais j'utilise aussi beaucoup d'appli web (webmail, lecteur RSS, services Cloud, etc.) auquel je me connecte en mode sécurisé (https), que je juge obligatoire dès qu'il y a authentification. Or, Varnish ne supportant pas l'https, ces sites ne bénéficient pas de l'accélération...

Et puis j'ai trouvé la solution sur cette page : décrypter le flux https avant de le passer à Varnish. Il suffisait d'y penser... On déporte la gestion du SSL du serveur web vers un autre serveur, en l’occurrence et comme conseillé par ladite page, Pound.

Comme indiqué sur le site de Pound, ce n'est pas un serveur web (on continuera d'utiliser Lighttpd pour ça) ni un proxy-cache (on continuera d'utiliser Varnish). Cela lui permet d'être petit et donc, économe en mémoire.

Les infos étant un peu difficiles à trouver, voici quelques astuces:

  • pour que Pound fonctionne à la fois en IPv4 et en IPv6, il faut créer deux listeners, même si leur backend est identique. Je le fais écouter à la porc sur toutes les interfaces, mais rien ne vous empêche de préciser explicitement les IP.
  • ne pas oublier de définir un header indiquant que la page arrive en https; ce header permettra de tester si la page est en https ou non (Pound ne transmettant que du http, Varnish et Lighttpd ne "voient" que le port 80). Ce header pourra être utilisé par Varnish pour rediriger du http vers du https, par exemple.
  • pour le monitoring j'utilise le plugin Nagios check_pound_stat; pour que celui-ci fonctionne (et d'une façon générale si vous voulez utiliser l'utilitaire poundctl), il faut activer le socket d'admin qui ne l'est pas par défaut, via la directive "Control".

Voici donc ce que donne mon fichier pound.cfg:

Control "/var/run/pound.sock"

ListenHTTPS
        Address 0.0.0.0
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End
ListenHTTPS
        Address ::
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

Côté Varnish, voila comment on redirige automatiquement un client qui se connecte en http vers le https (en fonction du vhost bien sûr, on ne veut pas du https-only partout):

sub vcl_recv {
    if ( (req.http.host ~ "^sub.toto.com" )
         && req.http.X-Forwarded-Proto !~ "(?i)https") {
        set req.http.x-Redir-Url = "https://sub.toto.com" + req.url;
        error 750 req.http.x-Redir-Url;
    }
}

sub vcl_error {
    if (obj.status == 750) {
        set obj.http.Location = obj.response;
        set obj.status = 302;
        return (deliver);
    }
}

PS: Pardon pour le titre. comme d'habitude je me suis senti obligé de faire un jeu de mot bien naze, mais n'y voyez aucun racisme ou autre incitation à la haine raciale, hein. D'ailleurs j'adore le curry et les naan fromage, et j'ai une amie plus noire qu'une indienne ;)

Saturday 18 August 2012

Le truc qui fait mal au cu...be

La fameuse rotation du cube compiz, au moins sur Ubuntu, souffre d'un bug horripilant: après chaque rotation, l'écran précédent réapparaît pendant une fraction de seconde, façon image subliminale. Parfait pour les fans de Fight Club, moins pour une utilisation quotidienne.

Heureusement en début d'année une solution a été trouvée: un patch ainsi qu'une solution conviviale pour le mettre en place.

Un petit compiz --replace et hop, problème réglé. Le patch en question a théoriquement été intégré au dépot compiz, et ce hack ne devrait plus être nécessaire à l'avenir.

Et comme je suis trop sympa, j'inclue la lib en question pour ceux qui ne veulent pas se farcir l'installation de tout l'environnement. Compilé sur un Core i5, mais devrait fonctionner sur tout x86 64bit avec le compiz 0.9.7.8 du Pangolin Précis.

Sunday 22 July 2012

TMA 2.0

petite mise à jour sur le site du TMA (eh oui, il bouge encore): la disparition progressive des fort disgracieux pop-ups servant à l'affichage des images au profit de pop-ins tout 2.0.

le script retenu est Litebox: simple, léger, fonctionnel, en plus il respecte les critères de la maison (c-a-d faire en sorte que le javascript ne soit jamais obligatoire).

Thursday 19 July 2012

VDM. (2)

Aujourd'hui j'ai envie d'un bagel. ça tombe bien, j'ai droit à un gratuit avec ma carte de fidélité. je me rends donc chez le marchand, et décide d'agrémenter mon repas d'un jus à 2€50. je n'ai pas de monnaie, je donne donc un billet de dix à la caissière.

- moi: "désolé je n'ai pas de monnaie"

- elle: "je vais devoir vous donner des centimes"

- moi: "heu d'accord".

vaguement hypnotisé par la demoiselle, je ne prête guère attention aux petits tas de rondelles jaunes qui s'accumulent...elle fini par me rendre les 7€50.

en pièces de vingt centimes.

et j'ai dit merci.

comme un con.

VDM

Monday 7 May 2012

le changement (de version), c'est maintenant.

...ou plutôt c'était vendredi dernier. en effet depuis plusieurs jours, j'essaie de mettre à jour FreeBSD vers la version 9.0, et certains changements (genre drivers SATA et autres conf IPv6) ne sont guère triviaux, surtout quand on est en région parisienne et que le serveur à mettre à jour se situe à Roubaix-plage.

l'upgrade ayant évidemment foiré pour les raisons cités plus haut, je suis reparti sur une install fraîche, ce qui m'a permis de me familiariser avec les scripts de post-install de chez ovh ; cela m'a également permis de tester mes backups, et sur ce coup là je ne me suis pas trop raté: un seul fichier de conf manquant (mysql), que j'ai pu reconstituer à partir d'un fichier situé sur le serveur miroir en changeant trois lignes.

voila donc les clés de la sérénité pour un admin: redondance, sauvegardes. ça peut paraître l'évidence même, mais je vois encore des catastrophes causées par leur manque. alors que là, je suis tranquille en train de bloguer pendant que la machine finit sa réinstallation. Et une fois quelle sera au point, elle viendra remplacer la machine qui sert ces lignes qui elle...suivra le chemin de la réinstallation.

la redondance n'a donc pas de prix...pour le coût, ça plafonne à 36€ par mois. ça va.

Sunday 25 March 2012

un p'tit sandwich ?

Depuis un certain temps déjà, une adaptation de la rom MIUI.us à la sauce Android 4.0 (alias Ice Cream Sandwich) est dispo pour le (VIEUX) Nexus One. Après l'avoir rapidement testé il y a quelques semaines, et abandonné pour une obscure raison de Sleep of Death, j'ai pris mon courage à deux mains et sauté le pas. Pour l'instant rien d'insurmontable, mais comme l'installation et le réglage des petits problèmes ne sont pas encore évidents, j'ai jeté quelques notes sur le wiki. Enjoy your sandwich.

Saturday 3 March 2012

J'ai testé pour vous...Windows 8

Utilisateur (comblé) de Linux depuis le siècle dernier, j'ai jadis utilisé SaleOS a.k.a. L'OS du diable a.k.a. la Créature de Billou, bref, Microsoft Windows pendant de nombreuses années. Et comme j'aime bien me tenir au courant de ce qu'il se fait, et que surtout ça fait partie de mon métier, j'ai décidé de jeter un œil en pâture au dernier système (a.k.a. Windows 8) de chez Microsoft. Ça tombe bien, la dernière Consumer Preview est sortie il y a quelques jours.

Je me rends donc sur le site de téléchargement. Pas de liveCD, ni de version localisée. Bienvenue à la préhistoire de l'informatique. Et passage obligatoire par la case install, qui dure DEUX PLOMBES et occasionne environ 3 redémarrages successifs (au bout d'un moment j'ai perdu le compte). C'est marrant cette tradition du reboot quand même. Bref. Au passage on me demande un clé d'activation (?!) que je fini par trouver sur une obscure page web; parait que c'est toujours la même...n’empêche, j'en ai jamais entendu parler. Saisie de ladite clé ultra-absconse-qui-correspond-à-rien, décidément, logiciel proprio, tu me manques pas.

Pendant l'installation, on fait connaissance avec la nouvelle mascotte, un poisson en polygones tout moche, on nous demande de choisir la couleur de fond qui sera utilisée pour les menus; pour le bureau classique, qui devient une app comme une autre, on aura droit à la place au même poisson, sur un fond bleu-vert dégueulasse rappelant les heures les plus sombres de Windows 95.

Et c'est là qu'on commence à tiquer. L'OS est en effet orienté écran tactile, et ces boutons énormes sont fort peu adaptés à une utilisation clavier-souris. Microsoft semble vouloir s'orienter vers une convergence ordis/tablettes/smartphones avec une interface unifiée. Amis linuxiens, cela ne vous rappelle rien ? L'interface qui a réussi à dégoûter la plupart des utilisateurs d'Ubuntu de leur distribution favorite, j'ai nommé Unity, que Canonical compte bien imposer sur les appareils dits mobiles. Il me semble qu'Apple suit la même voie avec ses OS X/iOS...un fanboy dans la salle pour confirmer ?

Je me demande si toutes ces interfaces n'arrivent pas un peu trop tôt, j'utilise le même écran non-tactile depuis au moins cinq ans et je n'ai pas vraiment envie d'en changer, je n'ai toujours pas sauté le pas de la tablette...et pourtant je ne suis pas du genre à être nostalgique des anciennes technos.

En tous cas, bonne chance à "ceux d'en face" pour la sortie de leur nouvel OS; courage les gars, le taux d’utilisation de votre dernier OS potable, XP, est enfin descendu en dessous des 50%. En espérant que "8" ne sera pas connu sous le doux sobriquet de..."Vista 2" bien sûr !

- page 18 of 30 -