20/05/2015

Emile "iMil" Heitor 's home >> aws cli and jq filtering

Par : iMil
Tags:
AWS
Blogroll
cli
filter
jq

Long time no see huh? ;)

I’m diving into Amazon Web Services for some months now, and I must say I’m pretty impressed by the overall quality. Compared to the other “clouds” I’ve played with, it’s the most mature and comprehensive by far.

While writing a couple of tools to make my life easier, there’s one piece that took me longer: filtering the output of the aws ec2 describe-instances command. The output is in JSON, which is quite nice you might say, and it is, but when it comes to interact with JSON in the command line, things can get a little messy.

There’s a fantastic tool around to ease the process, its name is jq. While its basic usage is pretty straightforward, things are way more complicated to order and filter datas coming out from the aws command line.

Here are a couple of examples that I would have loved someone had written before me:

aws ec2 describe-instances | jq '.Reservations[].Instances[]'

That command will output the full instances list and their properties.

aws ec2 describe-instances | jq -r '.Reservations[].Instances[].InstanceId'

This will output your instances id list in a raw (-r) format

Now what about listing your instances ids, followed by the names you gave in the tag property? Sounds easy right? well let’s see:

aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|.InstanceId + " " + (.Tags[]|select(.["Key"] == "Name")|.Value)'

Yeaah, right, now you get what I meant. You might want to crawl jq’s official documentation, but honestly it served me very little in comparison of this fantastic post written by a guy with much more patience than I have :)

Hope this helps!

The post aws cli and jq filtering appeared first on Emile "iMil" Heitor 's home.


03/05/2015

Weblog de Natacha >> Every Day Carry

Par : Natacha Kerensikova
Tags:
Jouets
Tarée

Comme je l'ai laissé entendre dans mon billet précédent, Dissociation ?, je suis en prospection pour un nouveau sac à main. Aussi surprenant que cela puisse paraître, mes critères n'ont pratiquement pas changé depuis il y a quatre ans. J'y ajoute seulement le critère du poids, parce que passer des 900g de mon ex-ex-sac-à-main aux 250g du Sherpani Esprit a été une amélioration du confort que je n'aurais pas pu imaginer sans la vivre. J'ajoute également un critère implicite qui va occuper tout ce billet : contenir toutes les affaires que je transporte dans un sac à main.

J'ai découvert le concept de l'EveryDay Carry par un invité du podcast Pen Addict que suit ma moitié. Je suis pas sûre de bien le maîtriser, et j'avoue ne pas encore être tout à fait à l'aise avec toutes les idées du Survivalisme. Déjà qu'il m'a fallu du temps pour me rendre compte que le carry n'est pas le même que celui dans concealed carry, avec tous ces gens qui parlent de couteau ou de pistolet pour EDC…

Cependant, l'EveryDay Carry est relativement soft pour du survivalisme : il s'agit simplement de la liste de choses que l'on transporte sur soi tous les jours, pour faire face au quotidien. Pour moi, il s'agit justement de la liste des choses qui sont dans mon sac à main.

Je suis probablement une mauvaise survivaliste, mais il y a bien quelque chose dans ma culture ou ma façon d'être qui me poussent à transporter des choses « au cas où ». Et réciproquement, les limites physiques de volume du sac et de poids à trimballer, ainsi que les limites mentales de ce que je peux organiser, font qu'il y a très peu d'accumulation de choses que je considère comme inutiles ou superflues.

Évaluation des objets

Pour bien préciser le vocabulaire dans ce billet, je désignerai par utilité une appréciation subjective de de l'espérance du bénéfice apporté par cet objet. C'est à dire en comptant ce qu'il apporte, modulé par la fréquence à laquelle il peut apporter quelque chose.

Par exemple, un objet peut être utile en me faisant économiser cinq minutes plusieurs fois par jour, ou bien en me sauvant la vie et les biens matériels une fois tous les quelques siècles.

Par contre, l'utilité (dans ce sens) ne représente que le bénéfice à avoir l'objet, sans tenir compte de son coût, en terme d'acquisition mais surtout pour le maintenir sur soi. Ainsi un défibrillateur automatique ou un extincteur ont probablement une utilité plus grande que la plupart des objets dans mon sac à main, mais je n'en transporte pas à cause de leur encombrement.

J'ai du mal à trouver un mot pour désigner le rapport bénéfice sur coût, ou utilité sur encombrement, que c'est de ce rapport que découle ma décision d'adopter ou non un objet dans mon sac à main.

En plus de l'utilité d'un objet, je vais donner aussi son poids, mais il n'y a pas beaucoup d'explication à donner dessus, et une estimation de son volume. Pour le volume, je donne les dimensions de la plus petite boîte imaginaire de forme parallélépipédique dont toutes les arrêtes ont une longueur entière en centimètres.

Dans quelques cas je prendrai plusieurs boîtes, quand l'approximation d'une seule boîte est vraiment trop mauvaise (par exemple pour la brosse à cheveux). L'idée est que cette surestimation du volume réellement occupé compense plus ou moins le fait que les objets ne sont pas liquides, et ne rentrent donc pas dans un sac sans un certain volume mort. Mais même comme ça, ça reste une mesure peu utile.

Mon EveryDay Carry

Photo de (presque) tout mon EDC

De gauche à droite puis de haut en bas :

Comme je l'ai évoqué dans plusieurs entrées, je trimballe un certain nombre d'objets qui pourraient être remplacés par un smartphone et de bonnes applications : GPS, plan, communications de secours ; mais aussi ce dont j'ai déjà abandonné la publication, comme une torche ou un appareil photo.

Déjà un point important, c'est la résistance, pour servir vraiment de communications de secours, comme dans mon exemple de glissade. Dans le même genre, la première motivation de mon achat de GPS, c'était la navigation du smartphone qui me laisse tomber pour une pauv' goutte d'eau sur l'écran. Apparemment, même les téléphones étanches ne s'en sortent pas toujours très bien dans ces cas.

Mais au delà des détails techniques, ça pose des questions intéressantes en termes de domaines de défaut (failure domain) : je peux me balader avec le GPS à la main, me le faire arracher, et pouvoir encore communiquer et consulter mon plan papier. De la même façon, je peux utiliser mon GPS sans compter, car il n'impacte pas l'autonomie des communications de secours.

Mais d'un autre côté, tout rassembler sur la même batterie permet d'envisager beaucoup plus de capacité pour chacune des fonctions. Typiquement en remplaçant non pas par seulement un téléphone à tout faire, mais aussi une batterie USB pour le recharger.

Au delà de ces considérations, ça veut dire utiliser plus intensivement le téléphone comme terminal informatique. Et donc combattre le gros problème que j'ai avec Android (et j'imagine iOS et Windows encore pire à ces niveaux). Comme je l'écrivais dans Je ne suis pas une geekette, j'ai besoin d'une relation fusionnelle avec mes outils. « J'enfonce un clou », et non pas « J'utilise un marteau pour enfoncer un clou », de la façon que « J'ouvre la porte » et non pas « J'utilise ma main pour ouvrir la porte ». J'assimile un outil pour faire une tâche moi-même, je ne l'utilise pas.

Or j'ai l'impression qu'Android repousse activement l'assimilation pour m'enfermer en tant qu'utilisatrice.

Je me demande si monter compétence dans le domaine des terminaux mobiles pourrait arranger ça, de la même façon qu'il y a une bonne décennie je suis progressivement passée de l'utilisation à l'assimilation d'un ordinateur sous Linux. Je crains cependant que le design d'Android s'y oppose intrinsèquement, et qu'il faille une compétence inhumaine pour arriver à un niveau qui suffisant pour l'assimilation.

Every Work Day Carry

Il me semble pertinent à ce stade d'ajouter ce que je trimballe sur moi tous les jours ouvrés, parce que presque tous les jours sont ouvrés.

Depuis presque trois ans, je trimballe un ordinateur portable Lenovo Thinkpad X220, pour avoir un îlot de propreté (GCU approved) et d'outil assimilable dans le monde de brutes sans pitiés qu'est celui du travail.

Ce portable est le centre de mon « EWDC », et la principale contrainte. Avec sa batterie, il pèse à peine plus d'1.5 kg, et à peine moins de 2 kg en y ajoutant le chargeur secteur.

Rien que ça, avec mon EDC, ça fait trop pour une seule épaule. Donc un sac qui fasse à la fois EDC et EWDC est forcément un sac à dos, avec tous les inconvénients d'accès et d'encombrement qui vont avec.

Je connais plusieurs personnes pour qui séparer les deux est hors de question. Je suis plus modérée : si je trouvais un sac à dos qui me séduise, je fusionnerais volontiers, mais malgré mes recherches ce n'est pas encore le cas.

En plus du portable, mon EWDC actuel ne contient qu'une spork et son étui alimentaire, parce qu'il faut amener ses couverts pour les déjeuner au boulot (ou aller au restaurant), et c'est rigolo à utiliser ; et une quantité variables de tablettes de chocolat, pour les goûters et les baisses de moral.

On pourrait réfléchir à faire passer des objets de l'EDC au EWDC (ou même vice-versa). Par exemple je n'ai utilisé le marqueur permanent qu'au travail, et il n'est dans l'EDC que parce que tout le reste de ma papeterie y est.

Candidats

Ma découverte récente des concepts du survivalisme et des différentes listes d'EDC m'ont fait réfléchir aux objets dans la liste ci-dessous. J'ai du mal à évaluer leur utilité (et c'est ce qui fait qu'ils sont dans cette liste), dans l'absolu ou dans mon contexte.

Conclusion

Voilà, vous savez tout ce qu'il y a dans mon sac à main, et une bonne partie de ce qu'il pourrait y avoir.

Et vous, avez-vous un EDC ?

Si oui, comment est-il par rapport au mien ? Plus survivaliste ? Plus urbain ? Plus féminin ? Au point d'être plus un purse dump qu'un EDC ? (Je n'ai rien contre les pocket dump non plus.)

Si non, que pensez-vous des raisonnements que j'ai tenus pour chacun de ces objets ? Suis-je en train de rater quelque chose ?


02/05/2015

GCU-Squad! >> say l’facteur

Par : gaston
Tags:
Net
Security
mail

C’est au détour d’un très long post de qualité de LWN.net qu’on apprend l’arrivée imminente de Mailman 3, réécrit sur des standards modernes, 7 ans après la première alpha.. et enfin, il va hasher les passwords et ne plus vous les envoyer en clair dans le monthly reminder.
Après tout, un software ayant un composant nommé HyperKitty (et remplacant le web 0.9 pipermail..) ne peut qu’être mignon tout plein.


24/04/2015

GCU-Squad! >> Jardin Entropique 26 > 28 Juin 2015, Rennes, France

Par : pinpin
Tags:
Irc
artnumerique
biere
diy
floss
liberte
libre
toutca...
vieprivee

Envie de causer logiciels libres et liberté avec des GENS (ou pas) ?

https://jardin-entropique.eu.org proposé par gebura sur #GCU@freenode


20/04/2015

Philpep's blog >> Sauvegarde avec BURP

Par : Philippe Pepiot
Tags:
debian
sauvegarde

Un des problèmes récurrent sur toute infrastructure informatique est la gestion des sauvegardes. Ce qui commence par la simple copie manuelle d'un fichier peut aller jusqu'à des grosses infrastructures et des logiciels complexes et utilisant du matériel de stockage dédié.

Il n'y a pas d'outil qui réponde à tous les besoins, il est donc essentiel de bien les définir. Dans mon cas:

J'ai donc trouvé burp "Backup and restore program", développé par un utilisateur frustré de bacula, il en tire quelques morceaux de code mais ce n'est pas un fork à proprement parler.

Installation

Burp fonctionne en client/serveur, l'installation est plutôt simple et c'est le même programme qui fait serveur et client, seule la configuration change. La version que j'ai utilisé c'est celle disponible dans les backports debian wheezy.

La communication entre le client et le serveur est protégée par des certificats SSL qui permettent à la fois de chiffrer le contenu de d'authentifier le client. Le serveur fait office de CA, le client envoie une demande de signature CSR et le serveur signe le certificat en se basant sur le CNAME du client et un mot de passe partagé. Toute la procédure de génération des certificats et de la signature est simplifiée.

# /etc/burp/burp.conf du client
mode = client
server = 1.2.3.4
port = 4971
cname = client1
password = secret
ssl_peer_cn = burpserver

# /etc/burp/burp.conf du serveur
mode = server
port = 4971
ca_server_name = burpserver


# /etc/burp/clientconfigdir/client1 sur le serveur
password = secret

Au premier lancement du serveur la CA et les certificats sont générés et il ne nous reste plus qu'à lancer une commande coté client pour finaliser l'échange et la signature du certificat.

Fonctionnement

Le principe des sauvegardes est le suivant:

On voit bien ici la possibilité de sauvegarder un portable.

La liste des fichiers et des options de sauvegarde peuvent être paramétrées coté serveur ou coté client Beaucoup de possibilités ici: expression régulières, compression etc, voyez la partie "INCLUDE / EXCLUDE" du manuel.

Shuffling

La sauvegarde se fait avec librsync, c'est à dire que burp ne va transférer sur le réseau que ce qui a changé par rapport à la dernière sauvegarde.

À la fin du transfert il y a une phase post sauvegarde appelée 'shuffling', là on a deux stratégies possibles contrôlés avec l'option hardlinked_archive et qui prend 0 ou 1 comme valeur.

Avec 0 (valeur par défaut), burp va appliquer le delta qui permet d'obtenir la dernière version du fichier et ensuite générer le 'reverse-delta' (patch inverse) qui permet de revenir à l'ancienne version et enfin il va supprimer l'ancienne version du fichier.

Avec 1, si le fichier n'a pas changé il va créer un hard-link

Pour résumer, c'est tout simplement CPU versus de l'espace disque.

Burp a aussi des options de déduplication qui permettent de gagner l'espace disque utilisé par des fichiers identiques sur les backups d'un ou de plusieurs clients (ici aussi, CPU VS espace disque).

Snapshot LVM, pg_dump ?

Si vous utilisez LVM, vous pouvez prendre un instantané (snapshot) du système de fichier et le sauvegarder. Vous aurez ainsi une sauvegarde atomique et c'est obligatoire pour sauvegarder par exemple des bases de donnée et s'assurer l'intégrité de la sauvegarde.

De la même manière vous pourriez vouloir sauvegarder la sortie d'une commande de type pg_dump, mysqldump.

Burp peut exécuter des scripts pre/post sauvegarde coté serveur et coté client.

Dans le cas de LVM, il suffit de faire un script qui crée les snapshots, éventuellement qui mappe les partitions avec kpartx puis qui les montent dans /mnt/burp/XXX et ensuite configurer burp pour les sauvegarder.

Pour la sortie des commandes, la technique consiste à utiliser un fifo, car oui burp sait sauvegarder le contenu d'un fifo et même d'un bloc device:

read_fifo=/path/to/fifo
read_blockdev=/path/to/device

Restauration

Que serait la sauvegarde sans la restauration ? Avez vous déjà restauré une sauvegarde et vérifié qu'elle fonctionnait ? La restauration est centrale dans un système de sauvegarde et là encore burp nous facilite la tâche.

Voilà un exemple de restauration:

# on liste les sauvegardes
% burp -al
[...]
Backup: 0000069 2015-04-22 03:07:01
Backup: 0000070 2015-04-23 03:07:01
Backup: 0000072 2015-04-25 03:07:01 (deletable)
2015-04-25 20:59:08: burp[24071] List finished ok
[...]

% burp -ar -b 69 -d out -r '^/etc'
[...]
2015-04-25 21:01:35: burp[24511] doing restore
-----------------------------------------------------
Start time: 2015-04-25 21:01:35
  End time: 2015-04-25 21:01:42
Time taken: 00:07
                             Attempted | Expected
                   ------------------------------
            Files:                1424 |     1424
      Directories:                 310 |      310
       Soft links:                1326 |     1326
      Grand total:                3060 |     3060
                   ------------------------------

             Warnings:             0

      Bytes estimated:       6749807 (6.44 MB)
      Bytes attempted:             0
           Bytes sent:             0
----------------------------------------------------
2015-04-25 21:01:42: burp[24511] got restore end
2015-04-25 21:01:42: burp[24511] restore finished

# dans ./out on a /etc de la sauvegarde du 2015-04-22
% find out
out
out/etc
out/etc/python3
out/etc/python3/debian_config
out/etc/modules
out/etc/sane.d
out/etc/sane.d/dmc.conf
out/etc/sane.d/sm3840.conf
out/etc/sane.d/net.conf
out/etc/sane.d/teco1.conf
[...]

20/04/2015

Philpep's blog >> Sauvegarde avec BURP

Par : Philippe Pepiot
Tags:
debian
sauvegarde

Un des problèmes récurrent sur toute infrastructure informatique est la gestion des sauvegardes. Ce qui commence par la simple copie manuelle d'un fichier peut aller jusqu'à des grosses infrastructures et des logiciels complexes et utilisant du matériel de stockage dédié.

Il n'y a pas d'outil qui réponde à tous les besoins, il est donc essentiel de bien les définir. Dans mon cas:

J'ai donc trouvé burp "Backup and restore program", développé par un utilisateur frustré de bacula, il en tire quelques morceaux de code mais ce n'est pas un fork à proprement parler.

Installation

Burp fonctionne en client/serveur, l'installation est plutôt simple et c'est le même programme qui fait serveur et client, seule la configuration change. La version que j'ai utilisé c'est celle disponible dans les backports debian wheezy.

La communication entre le client et le serveur est protégée par des certificats SSL qui permettent à la fois de chiffrer le contenu de d'authentifier le client. Le serveur fait office de CA, le client envoie une demande de signature CSR et le serveur signe le certificat en se basant sur le CNAME du client et un mot de passe partagé. Toute la procédure de génération des certificats et de la signature est simplifiée.

# /etc/burp/burp.conf du client
mode = client
server = 1.2.3.4
port = 4971
cname = client1
password = secret
ssl_peer_cn = burpserver

# /etc/burp/burp.conf du serveur
mode = server
port = 4971
ca_server_name = burpserver


# /etc/burp/clientconfigdir/client1 sur le serveur
password = secret

Au premier lancement du serveur la CA et les certificats sont générés et il ne nous reste plus qu'à lancer une commande coté client pour finaliser l'échange et la signature du certificat.

Fonctionnement

Le principe des sauvegardes est le suivant:

On voit bien ici la possibilité de sauvegarder un portable.

La liste des fichiers et des options de sauvegarde peuvent être paramétrées coté serveur ou coté client Beaucoup de possibilités ici: expression régulières, compression etc, voyez la partie "INCLUDE / EXCLUDE" du manuel.

Shuffling

La sauvegarde se fait avec librsync, c'est à dire que burp ne va transférer sur le réseau que ce qui a changé par rapport à la dernière sauvegarde.

À la fin du transfert il y a une phase post sauvegarde appelée 'shuffling', là on a deux stratégies possibles contrôlés avec l'option hardlinked_archive et qui prend 0 ou 1 comme valeur.

Avec 0 (valeur par défaut), burp va appliquer le delta qui permet d'obtenir la dernière version du fichier et ensuite générer le 'reverse-delta' (patch inverse) qui permet de revenir à l'ancienne version et enfin il va supprimer l'ancienne version du fichier.

Avec 1, si le fichier n'a pas changé il va créer un hard-link

Pour résumer, c'est tout simplement CPU versus de l'espace disque.

Burp a aussi des options de déduplication qui permettent de gagner l'espace disque utilisé par des fichiers identiques sur les backups d'un ou de plusieurs clients (ici aussi, CPU VS espace disque).

Snapshot LVM, pg_dump ?

Si vous utilisez LVM, vous pouvez prendre un instantané (snapshot) du système de fichier et le sauvegarder. Vous aurez ainsi une sauvegarde atomique et c'est obligatoire pour sauvegarder par exemple des bases de donnée et s'assurer l'intégrité de la sauvegarde.

De la même manière vous pourriez vouloir sauvegarder la sortie d'une commande de type pg_dump, mysqldump.

Burp peut exécuter des scripts pre/post sauvegarde coté serveur et coté client.

Dans le cas de LVM, il suffit de faire un script qui crée les snapshots, éventuellement qui mappe les partitions avec kpartx puis qui les montent dans /mnt/burp/XXX et ensuite configurer burp pour les sauvegarder.

Pour la sortie des commandes, la technique consiste à utiliser un fifo, car oui burp sait sauvegarder le contenu d'un fifo et même d'un bloc device:

read_fifo=/path/to/fifo
read_blockdev=/path/to/device

Restauration

Que serait la sauvegarde sans la restauration ? Avez vous déjà restauré une sauvegarde et vérifié qu'elle fonctionnait ? La restauration est centrale dans un système de sauvegarde et là encore burp nous facilite la tâche.

Voilà un exemple de restauration:

# on liste les sauvegardes
% burp -al
[...]
Backup: 0000069 2015-04-22 03:07:01
Backup: 0000070 2015-04-23 03:07:01
Backup: 0000072 2015-04-25 03:07:01 (deletable)
2015-04-25 20:59:08: burp[24071] List finished ok
[...]

% burp -ar -b 69 -d out -r '^/etc'
[...]
2015-04-25 21:01:35: burp[24511] doing restore
-----------------------------------------------------
Start time: 2015-04-25 21:01:35
  End time: 2015-04-25 21:01:42
Time taken: 00:07
                             Attempted | Expected
                   ------------------------------
            Files:                1424 |     1424
      Directories:                 310 |      310
       Soft links:                1326 |     1326
      Grand total:                3060 |     3060
                   ------------------------------

             Warnings:             0

      Bytes estimated:       6749807 (6.44 MB)
      Bytes attempted:             0
           Bytes sent:             0
----------------------------------------------------
2015-04-25 21:01:42: burp[24511] got restore end
2015-04-25 21:01:42: burp[24511] restore finished

# dans ./out on a /etc de la sauvegarde du 2015-04-22
% find out
out
out/etc
out/etc/python3
out/etc/python3/debian_config
out/etc/modules
out/etc/sane.d
out/etc/sane.d/dmc.conf
out/etc/sane.d/sm3840.conf
out/etc/sane.d/net.conf
out/etc/sane.d/teco1.conf
[...]

18/04/2015

Weblog de Natacha >> Dissociation ?

Par : Natacha Kerensikova
Tags:
Tarée

J'ai rencontré récemment plusieurs évocations indépendantes du concept en psychologie appelé « dissociation ». Comme je ne le connaissais pas du tout, je suis allée faire une randonnée sur wikipédia en anglais, en passant par Dissociation puis Depersonalization et Derealization. Comment souvent, je suis déçue par les articles homologues sur wikipédia en français (Dissociation, Dépersonnalisation et Déréalisation).

De toute façon, cet billet ne va utiliser aucune de ces références. Certes, lorsque je tombe sur un concept comme ça, je cherche dans mon passé des expériences qui pourraient s'en rapprocher. Mais depuis que j'ai entendu parler de Karl Popper, je cherche surtout comment une expérience candidate pourrait ne pas coller à la définition. En me protégeant ainsi du Biais de confirmation, je tombe une fois de plus dans l'excès inverse : l'incapacité à conclure. J'arrive aussi facilement à tirer sur la définition pour y faire rentrer ce que je vais décrire, que pour que ça n'y rentre pas du tout.

Donc au lieu d'essayer de me raccrocher à des concepts que je ne maîtrise pas, qui ne s'appliquent peut-être même pas, je vais simplement décrire mon vécu avec des mots simples.

Mon vécu

Je l'ai déjà expliqué plusieurs fois à différents endroits, notamment dans mon billet la lecture et moi : quand je suis confrontée à une histoire, quelqu'en soit le support, j'ai tendance à essayer de me projeter dedans, généralement au travers de l'un des personnages.

À peu de choses près, plus je me projette profondément dans l'histoire, plus je suis satisfaite. En ce qui concerne les fictions, c'est pratiquement mon seul critère de jugement.

J'utilise depuis un bout de temps le verbe « projeter » pour décrire ce mécanisme mental, avant ça j'utilisais l'expression « rentrer dans l'histoire ». J'ai changé parce qu'en fait souvent, je me projette dans un personnage, pour vivre l'histoire au travers de lui. Il y a bien des histoires dans lesquelles je rentre objectivement, mais la plupart c'est en se projetant dans un personnage particulier, ou parfois plusieurs personnages.

C'est comme ça que je trouve qu'Evangelion est une série que j'aime beaucoup, qui fait 22.5 épisodes. Je ne vais pas divulgâcher parce que ceux qui connaissent savent (ou retrouvent facilement) ce qu'il se passe au milieu de l'épisode 23 et comprendront, et pour les autres ce serait déraisonnablement long et peu productif d'expliquer.

Bon, tout ça c'est très bien, et j'imagine que l'on ne manquerait pas de gens pour glorifier ce « voyage au pays de l'imaginaire », même si au fond ce n'est que du divertissement, quoique littéraire.

Bizarrement, personne ne parle du retour.

Il y a toujours un moment où il faut revenir dans la réalité : on arrive à la station de destination, on est première position de la queue, on est cherché en salle d'attente, etc.

La plupart du temps, ça ne pose pas de problème. Dans les histoires que j'aime beaucoup, c'est-à-dire celles dans lesquelles je me suis projetée profondément, il faut toujours un certain temps pour « atterrir ».

Plus je suis projetée profondément, plus je suis en manque de sommeil, et/ou moins j'ai le moral, plus ce temps est long. Parfois il peut même être très long, mais je préfère ne pas penser à ces fois.

C'est dans ces cas là que j'apprécie avoir un trajet habituel à suivre machinalement, pendant ce temps.

J'ai un peu de mal à trouver des mots pour décrire mon état à ces moments là, parce que le langage que j'ai appris ne couvre pas (ou très peu) ce champ. C'est exactement comme décrire une odeur.

Si je vivais dans une culture où l'utilisation des drogues récréatives était courante et faisable dans des conditions et un environnements sûrs, je pourrais peut-être le décrire par une analogie avec l'emprise de telle ou telle substance (par exemple, la kétamine). Comme je ferais pour décrire une odeur. Malheureusement, ce n'est pas le cas.

Ce sont ces expériences auxquelles les définitions de déréalisation m'ont fait penser (je n'ai jamais rien vécu se rapprochant de la dépersonnalisation), car je trouve effectivement qu'il manque quelque chose à ce que je perçois autour de moi, et ce manque est source d'une certaine confusion. Un quelque chose qui devrait appartenir à la réalité et qui n'appartient jamais à la fiction.

Ce serait un peu l'équivalent généralisé à tous les sens de ce que je ressentirais si je mangeais un steak qui a un goût de fromage, tout en ayant la consistance habituelle d'un steak, et après la surprise initiale passée. Cette espèce d'incrédulité, genre « y a un truc qui n'est pas comme il faut », une bouchée de plus pour vérifier que c'est bien le cas, les tentatives de décomposer l'expérience gustative pour arriver à la conclusion qui est ce que j'ai décrit comme étant la situation.

Mais d'un autre côté, je ne prends jamais conscience que les perceptions sensorielles décrivent toujours la réalité, et que ce vient d'ailleurs n'est pas la réalité. Donc dans ce sens là, ça ne colle pas du tout avec la plupart des définitions de la dissociation.

En fait tout le paragraphe précédent, c'est juste au niveau de la connaissance, de l'information et de son traitement. Je dirais même de façon plus générale, tout ce qui est froidement l'acquisition et le traitement de l'information fonctionne parfaitement, pendant la lecture ou après.

Par contre, le « quelque chose » qui manque à la réalité dans les moments que je décris ici, il existe sur le plan émotionnel. Je sais que la réalité est là, mais je m'en fous. Le monde est là, mais il ne provoque plus de réaction émotionnelle chez moi.

Je ne saurais pas trop dire si cette réaction émotionnelle est remplacée par autre chose, comme le goût dans l'analogie précédente, ou si elle est seulement absente (ce qui ne fonctionnerait pas dans l'analogie, parce que l'absence de perception n'existe pas vraiment, car cette absence est traitée comme une perception).

Est-ce un problème ?

Jusqu'à récemment, non.

J'ai toujours été comme ça, je l'ai accepté comme étant une partie normale de la vie. Ça n'a pas tellement de conséquences pratiques, et je peux m'organiser pour les éviter dans les rares cas où elles seraient gênantes. Par exemple en arrêtant de lire quand c'est le tour de la personne devant moi dans une queue, ou de la personne d'avant, suivant la vitesse de la queue.

Avoir lu qu'un problème psychologique existe, qui pourrait se rapprocher de cette situation, m'a fait réfléchir sur l'universalité de cette expérience : est-ce que ça arrive à tout le monde, ou à une grande partie de la population (parmi ceux qui lisent encore des livres…), ou est-ce qu'il n'y a que moi ?

Mais quand bien même ce serait anormal, tant que ça ne dérange personne, j'ai du mal à considérer ça comme une maladie à guérir ou un problème à résoudre.

Du moins, jusqu'à il y a quelques semaines.

C'était un samedi, et mon homme et moi allions à un évènement parisien, et toutes les conditions étaient réunies : le manque de sommeil, pas trop le moral, et Altered Carbon dans le métro. Une fois descendus du métro, le livre fraîchement refermé, il fallu déterminer comment aller de la station à l'évènement, et pour ce faire il a fallu que je sorte mon plan de Paris de mon sac à main.

Le sac à main en question, c'est le Sherpani Esprit dont j'ai fait une critique il y a quelques mois, que j'utilise quotidiennement depuis.

Sept cents mètres après la station de métro, il a fallu ressortir le plan. J'étais encore dans cet état étrange, enveloppée d'un brouillard émotionnel. Et j'ai remarqué que mon sac était ouvert. Ce qui a causé une contrariété tellement forte qu'elle a percé ce brouillard.

Il m'était déjà arrivé plusieurs fois de porter ce sac à main à dos ouvert, généralement sur la quinzaine de mètres entre mon bureau et les toilettes, ce que j'ai toujours trouvé très contrariant à cause du risque que quelque chose tombe du sac, mais rien n'en était jamais tombé.

Or ce samedi là, ma trousse (contenant une variété de stylos et de clefs USB) a disparu.

Je ne saurai probablement jamais ce qui est vraiment arrivé. Ai-je oublié de fermer le sac ou a-t-il été ouvert dans mon dos ? La trousse est-elle tombée ou a-t-elle été volée ? Est-ce que mon air paumée / high m'a désignée comme cible ? Ai-je perçu une chute accidentelle de la trousse, sans y accorder d'importance à cause de cet état ? Est-ce que j'aurais raté une chute accidentelle de la trousse même sans être dans cet état ?

Les conséquences matérielles sont dérisoires : rien d'autre que la trousse ne manque à l'appelle, et presque tout est facilement remplaçable (il n'y a que la trousse elle-même que je n'ai pas encore pu remplacer par quelque chose d'au moins autant à mon goût).

En revanche, le bris de ma confiance envers mon sac à main est très grave (et probablement disproportionné). Même si j'aime encore beaucoup ce sac, il a fallu le remplacer à court terme, car l'angoisse de ne pas l'avoir fermée était rapidement devenue insupportable.

Avant cet incident, il m'était peut-être arrivé une demi-douzaine de fois de vérifier qu'il est bien fermé après l'avoir mis sur le dos. J'ai probablement dépassé la centaine de fois pendant la semaine qui a suivi l'incident.

Je suis encore en train d'évaluer les remplacements à ce sac à main et à cette trousse, je posterai ici mon avis quand je serai fixée.

Et vous, avez-vous déjà vécu des moments comme ceux-ci ? En avez-vous aussi subi des conséquences désagréables ?


31/03/2015

Weblog de Natacha >> Promesse

Par : Natacha Kerensikova
Tags:
Tarée

Je jure solennellement que lors ce 1er avril, je ne posterai pas sur Facebook de fausse photo de fiançailles, comme un abruti. Je ne colporterai pas non plus la fausse annonce de la mort d'une célébrité, parce que ça rend les gens tristes. Et je ne ferai même pas de farce, et si je vois quelqu'un préparer une blague, je lui dirai : « Hé, là tu fais vraiment le con. Arrête de faire le con. Arrête de faire le con. Sérieusement, arrête de faire le con. »

Et je suis très fan de John Oliver.

Au cas où l'intégration de la vidéo ci-dessus fonctionne mal, voici la vidéo originale sur Youtube


30/03/2015

Another Home Page Blog >> Moi aussi j'ai des lutins qui courent très vite dans les fils !

Par : Nils
Tags:

Résumé des épisodes précédents : NetBSD et PXE sont de grands copains. Démarrer ce type d'OS en PXE est faisable, pas trop difficile, documenté dans la langue de Shakespeare ou dans celle de Molière que ce soit pour un système fini (merci iMil) ou juste pour l'installation (autopromotion sans honte).

Mieux vaut tard que jamais, j'ai décidé de tenter ma chance et de configurer un système NetBSD sans disque, suite à la présence à ${HOME} d'une machine graphiquement réduite mais disposant d'une puissance de calcul non négligeable, jugez plutôt :

marvin# egrep '(name|MHz)' /proc/cpuinfo 
model name      : AMD Phenom(tm) 8450 Triple-Core Processor
cpu MHz         : 2100.35
model name      : AMD Phenom(tm) 8450 Triple-Core Processor
cpu MHz         : 2106.73
model name      : AMD Phenom(tm) 8450 Triple-Core Processor
cpu MHz         : 2304.94
marvin# grep MemTotal /proc/meminfo
MemTotal:   3931368 kB

Merci à Madame de me laisser l'utiliser !

Je pourrais utiliser une clé USB, débrancher les disques durs et en ajouter un de mon stock. Mais ce ne serait pas drôle. J'ai utilisé les liens ci-dessus pour démarrer le brave Marvin via NFS, je ne vais donc pas paraphraser ces articles, mais ajouter ici quelques détails, remarques, trucs et peut-être astuces glanés ici et là et qui m'ont aidé.

D'abord, mieux vaut tester dans une machine virtuelle. Parce qu'aller chercher la bécane au fond sous le bureau, ça va une fois. Du coup, il faut s'assurer quand même qu'elle démarre sur le réseau, voire via Wake On LAN pour les plus fainéants. Sinon, une clé USB ou un CD Etherboot devrait faire l'affaire.

Ensuite, repérer la marque de la carte réseau et surtout potentiellement le pilote qui sera utilisé par NetBSD sera pratique : en effet, il faudra créer un fichier ifconfig.xy0, où xy0 sera remplacé par le nom du pilote de la carte réseau, dans mon cas c'est nfe0. Comment trouver le nom du pilote ? Soit on démarre un noyau NetBSD (l'installeur par exemple, qui permet d'obtenir un shell et d'exécuter dmesg | grep -i eth), soit on connaît le modèle de carte réseau et on cherche dans les sources. En ce qui me me concerne, je suis allé cherché la chaîne "NVIDIA" dans le fichier de configuration du noyau.

Toujours dans la catégorie réseau, si vous faites des tests en machine virtuelle, vous risquez probablement de le faire depuis un ordinateur portable connecté en Wi-Fi. Mieux vaut réfléchir un instant à la qualité de son réseau sans fil, et envisager de faire les tests en filaire. Mon expérience personnelle (VM simple cœur, 2Go de ram) : en Wi-Fi, le système démarre en plus de 5 bonnes minutes, en filaire (gigabit Ethernet) cela met moins d'une minute. 5 FICHUES MINUTES QUOI !!! En prime, dès que vous allez vouloir écrire ne serait-ce qu'un méga-octet sur le système, cela va se traîner. J'ai senti ma douleur quand je me suis rendu compte que j'avais oublié de décompresser un set.

J'ai eu une surprise sur le fichier /dev/null, il peut être nécessaire de le recréer :

marvin# cd /dev/
marvin# rm null
marvin# ./MAKEDEV -u all

L'installeur de NetBSD crée automatiquement certains fichiers ou paramètres. Sauf qu'on ne l'a pas utilisé... Parmi les trucs qu'il peut être utile de faire manuellement, il y a ces lignes dans /etc/fstab :

procfs                                          /proc            procfs  rw,auto,linux
kernfs                                          /kern            kernfs  rw
ptyfs                                            /dev/pts       ptyfs    rw

Il n'est pas obligatoire de monter /proc avec l'option linux, c'est juste un confort personnel. Ne pas oublier de créer les répertoires /proc/ et /kern/ avant.

Autre paramètre, celui de la date et de l'heure : par défaut, le système est en heure UTC, moi je veux l'heure de Paris. Pour cela, j'ai modifié le lien symbolique /etc/localtime :

marvin# readlink -f /etc/localtime
/usr/share/zoneinfo/Europe/Paris

Cela n'exclut pas le paramétrage NTP.

J'ai choisi de ne configurer qu'un seul partage NFS, car je n'envisage pas dans l'immédiat d'utiliser ce partage pour d'autres machines. Du coup, je n'ai initialement pas paramétré de swap, mais j'ai ajouté un fichier après coup, en utilisant la documentation officielle. Cela donne :

marvin# dd if=/dev/zero bs=1024k count=1024 of=/swapfile
marvin# chmod 600 /swapfile
marvin# swapctl -a -p 1 /swapfile
marvin# echo "/swapfile none    swap    sw,priority=1 0 0" >> /etc/fstab

Si comme moi vous avez déjà un serveur PXE en place, avec un fichier boot.cfg utilisé par pxeboot_ia32.bin, vous n'avez pas envie de mettre tous les noyaux, d'installation ou non, dans une longue liste. Il est possible de créer un deuxième fichier, qu'on donne à manger à pxeboot en lieu et place de boot.cfg. On le paramètre au niveau du serveur DHCP, par exemple pour ISC DHCP j'ai mis en place la configuration suivante :

host marvin {
        hardware ethernet 01:23:45:67:89:ab;
        fixed-address 192.168.1.13;
        option host-name "marvin";
        option root-path "/chemin/vers/diskless/nbmarvin";
        if filename = "boot.cfg" {
                filename "tftp:nbmarvin.boot.cfg";
        }   
}

On remarque donc que si pxeboot veut récupérer boot.cfg depuis la machine marvin, alors on lui servira nbmarvin.boot.cfg.

J'ai aussi remarqué que le clavier est en qwerty par défaut. Comme je n'ai pas relié de clavier ou d'écran à cette machine, et que j'ai configuré un accès SSH dès que possible, je n'ai pas changé ce paramètre. Toutefois, pour les pressés, vous pouvez utiliser la documentation officielle pour changer l'agencement du clavier.

Et sinon, pas de bol, la carte Wi-Fi PCI n'est pas reconnue :

vendor 0x1814 product 0x3060 (miscellaneous network) at pci1 dev 7 function 0 not configured

Bref, quelques notes en vrac qui, je l'espère, pourront s'avérer utile à l'occasion. Maintenant, il me reste à utiliser cette puissance de calcul à ma disposition (quelqu'un a dit bulk build pkgsrc ?).


28/03/2015

% tar -jx < *.bz >> Tunnels IPv6 pour la maison

Tags:

J'ai voulu avoir de l'IPv6 à la maison. Mon opérateur Internet ne fournit que de l'IPv4, il faut donc tunneller d'une façon ou d'une autre. J'ai une Kimsufi à disposition, avec un accès IPv6 natif, j'ai donc voulu l'utiliser comme point de sortie.

Bien sûr, une solution est d'utiliser un fournisseur de tunnel comme HE ou SixXS, mais où est l'intérêt de ne pas faire les choses soi-même ?

1 Creusage de tunnels

Beaucoup de technologies qui permettent de faire des tunnels IPv6 à travers un réseau IPv4 :

Nom Type Usage
6in4 Routeur - Routeur Un lien IPv6 (typiquement entre routeurs) explicitement configuré entre les deux extrémités
GRE Routeur - Routeur Une technique d'encapsulation générique Cisco (depuis normalisée) avec quelques fonctionnalités en plus
6to4 Routeur - Internet Un lien IPv6, les adresses sont dans 2002::⁄32 et on inclut dans l'adresse IPv6 l'adresse IPv4 (publique !) du routeur. Il y a besoin de relais sur l'Internet (pour le sens Internet -> Routeur)
ISATAP Hôte - Hôte Deux hôtes (éventuellement routeurs pour leurs réseaux respectifs) qui peuvent se parler en IPv4, avec quelques options d'autoconfiguration. Prévu pour un réseau local.
6over4 Hôte - Hôte Comme ISATAP, mais les hôtes doivent se parler en IPv4 multicast (typiquement, ils sont sur le même LAN). Pas intéressant par rapport à ISATAP, mais historiquement le premier.
Teredo Hôte - Internet Un hôte (éventuellement derrière un NAT) qui accède à l'Internetv6
IPsec Routeur - Routeur Initialement prévu pour créer un tunnel sécurisé entre deux réseaux

Quand on a un point de sortie, la technique idéale est 6in4, ou éventuellement IPsec en mode authentification (le chiffrement est peu intéressant, puisque couvrant uniquement la partie du trafic de la maison au point de sortie, et uniquement pour l'IPv6…).

2 Plan du réseau

Le serveur / point de sortie utilise lui-même des adresses IPv6. Le réseau côté maison a besoin d'au moins deux préfixes, pour le Wifi et pour le filaire. Or, OVH ne fournit aux kimsufi qu'un seul /64… Il va donc falloir découper en plusieurs morceaux. J'ai choisi /80, attribué comme suit :

tunnel-ip6.png

Figure 1: Schéma réseau

Où :

  • 2001:db8:a:b::/64 est le préfixe attribué au point de sortie ;
  • le premier /80 est attribué aux différents services qui tournent sur la machine ;
  • les /80 suivants pour la maison ;
  • en vert le tunnel entre le routeur Wifi à la maison et le point de sortie ;

J'ai utilisé des adresses ULA pour les extrémités du tunnels, mais en fait il n'y en a pas vraiment besoin : une fois qu'on a commencé à découper notre /64, autant aller jusqu'au bout. Ça permet juste de bien reconnaître les adresses dans les fichiers de configuration et dans les tcpdump.

3 Problèmes

Il y a deux problèmes avec cette façon de faire. Le premier est évident : on utilise des préfixes qui font plus que /64. Cela nous fait essentiellement perdre les mécanismes d'auto-configuration sur les réseaux de la maison.

Le deuxième est un peu plus subtile. Le /64 fournit par OVH n'est pas vraiment routé jusqu'à nous. Si c'était le cas, tous les paquets à destination du /64 seraient livrés à 2001:db8:a:b::1 (par exemple), et notre routage interne avec les /80 lui serait transparent. À la place, le dernier routeur s'attend à être directement connecté à ce /64, et à pouvoir faire directement un NS et recevoir une réponse pour chaque adresse. Il va donc falloir mettre en place sur l'interface externe un proxy NDP, qui fera croire au routeur que toutes les adresses sont directement connectées.

4 Implémentation

4.1 Routage sur le point de sortie

On va configurer les adresses que l'on utilise sur la machine comme des /128 (ou éventuellement comme des /80, enfin bref), créer le tunnel, et ajouter les routes statiques vers la maison.

Quelques lignes dans rc.conf :

            ifconfig_nfe0=
            "inet 203.0.113.197/24"

            defaultrouter=
            "203.0.113.254"

            ifconfig_nfe0_ipv6=
            "inet6 auto_linklocal"

            # 
            entree statique pour le routeur :

            # 
            http://travaux.ovh.net/?do=details&id=6819

            #
            rtsold_enable="YES"

            ipv6_defaultrouter=
            "fe80::5:73ff:fea0:0%nfe0"

            ifconfig_nfe0_alias0=
            "inet6 2001:db8:a:b::1/128"

            ifconfig_nfe0_alias1=
            "inet6 2001:db8:a:b::22/128"

            ifconfig_nfe0_alias2=
            "inet6 2001:db8:a:b::25/128"

            ifconfig_nfe0_alias3=
            "inet6 2001:db8:a:b::80/128"


            # 
            tunnel vers la maison

            gif_interfaces=
            "gif0"

            gifconfig_gif0=
            "203.0.113.197 198.51.100.56"

            ifconfig_gif0=
            "mtu 1480"

            ifconfig_gif0_ipv6=
            "inet6 -auto_linklocal"

            ifconfig_gif0_alias0=
            "fd93:1:2:3::1/127"


            ipv6_gateway_enable=
            "YES"

            ipv6_static_routes=
            "home_wifi home_wired"

            ipv6_route_home_wifi=
            "2001:db8:a:b:1:: -prefixlen 80 fd93:1:2:3::"

            ipv6_route_home_wired=
            "2001:db8:a:b:2:: -prefixlen 80 fd93:1:2:3::"

          

Si pf(4) tourne, on ajoutera :

            table <
            home_nets>  
            const 
            persist {
             2001:db8:a:b:1::/80 2001:db8:a:b:2::/80 }

            extif = 
            "nfe0"

            tunif = 
            "gif0"

            # Tunnel 6in4 vers maison

            pass 
            on $
            extif 
            proto ipv6

            pass 
            from <
            home_nets> 
            to 
            any

            pass 
            from 
            any 
            to <
            home_nets>


            # Éventuellement des règles plus restrictives pour contrôler ce qui

            # arrive à la maison

          

4.2 Configuration du routeur wifi

Le routeur est un Cisco 877W qui fait tourner 15.1(3)T4. En 12.2, j'ai vu que parfois, le routeur décide de ne pas répondre aux NS, ce qui est un peu gênant. On utilise DHCPv6 pour distribuer les adresses. L'interface Wi-Fi ne peut pas être configurée en IPv6, mais on peut la placer dans un bridge qui, lui, peut être configuré avec IPv6.

ipv6 unicast-routing
ipv6 cef
!
interface Dot11Radio0
 description wireless
 bridge-group 1
 ssid Coloc
!
interface BVI 1
 description bridge pour wireless
 ipv6 mtu 1480
 ipv6 address 2001:DB8:A:B:1::1/80
 ipv6 nd autoconfig default-route
 ipv6 nd managed-config-flag
 ipv6 dhcp server HOME_WLANv6
!
interface Vlan20
 description vlan wired
 ipv6 mtu 1480
 ipv6 address 2001:DB8:A:B:2::1/80
 ipv6 nd managed-config-flag
 ipv6 dhcp server HOME_WIREDv6
!
interface range FastEthernet 0 - 2
 switchport mode access
 switchport access vlan 20
 description wired (vlan 20)
 spanning-tree portfast
!
interface Vlan10
 description vlan internet
 ip address dhcp
!
interface FastEthernet3
 description internet (vlan 10)
 switchport access vlan 10
!
interface Tunnel0
 description tunnel vers serveur
 no ip address
 ipv6 address FD93:1:2:3::/127
 tunnel source Vlan10
 tunnel destination 203.0.113.197
 tunnel mode ipv6ip
!
ipv6 dhcp pool HOME_WIREDv6
 address prefix 2001:DB8:A:B:2::/80
 dns-server 2001:DB8:A:B::53
!
ipv6 dhcp pool HOME_WLANv6
 address prefix 2001:DB8:A:B:1::/80
 dns-server 2001:DB8:A:B::53
!
ipv6 route ::/0 FD93:1:2:3::1/127

Les interfaces Fa 0 - 2, utilisées pour le LAN filaire, sont mises en portfast. Sans le portfast, il faut ≈45 secondes à STP pour accepter que je n'ai pas créé de boucle en branchant mon portable. NetworkManager envoie n RS avec un timeout de t secondes pour la réponse RA. Avec n = 3, t = 1 seconde (RFC2461), NetworkManager a le temps d'abandonner plusieurs fois… Donc on passe en portfast.

4.3 Proxy NDP

Comme mentionné plus haut, l'un des soucis est que le routeur devant la KS s'attend à voir le /64 complètement à plat. Il faut donc un proxy NDP qui réponde à la place des machines qui sont à la maison.

Ça fait environ 300 lignes pour un programme qui écoute avec libpcap les NS sur l'interface externe et qui envoie les NA correspondants. Le code est dans un dépôt git (ou interface gitweb). Avec le réseau montré plus haut, j'appelle ndp6 avec les options :

ndp6 -i nfe0 -p 2001:db8:a:b:1::/80 -p 2001:db8:a:b:2::/80

Les gens qui utilisent Linux sur le point de sortie seront intéressés par ndppd. Parmi les linuxeries, il y a la lecture de /proc/net/ipv6_route pour mettre à jour les réseaux proxifiés, l'utilisation d'une socket AF_PACKET pour écouter les paquets qui ne nous sont pas destinés.

5 Soucis rencontrés

5.1 Clients DHCP

Avec ISC dhclient, lorsqu'une adresse est configurée par DHCPv6, elle est installée avec un préfixe en /64. C'est un bug dans le client DHCP (les annonces DHCP ne contiennent qu'une adresse, pas d'informations sur le lien local). La RFC 5942, section 5 explique le problème, disant que c'est ce qui arrive quand « the IPv6 subnet model is not understood by the implementers of several popular host operating systems ».

Le bug Debian #684009 contient un patch pour ISC dhclient (apparemment remonté upstream). De son côté, Network Manager ne fait ples confiance aux préfixes annoncé par les clients DHCPv6.

Le client WIDE dhcp6c a le bon comportement (à condition de lui dire de demander une adresse…), je n'ai pas testé son intégration avec Network Manager.

Le Windows 7 du boulot semble avoir le bon comportement.

5.2 Bizarrerie sur le DHCP côte WAN

Les serveurs DHCP de chez Virgin Media se comportent bizarrement. En particulier, après une coupure de courant, le routeur ne reçoit pas d'adresse jusqu'à ce que le modem câble se fasse rebooter. Pas quelque chose que je peux corriger de mon côté…