Apparemment le client DHCP ISC place toujours la valeur DSCP des paquets émis à 4 :
DSCP 4 (Hex 10 if you look at the entire 8 bits incl ECN) is the old
ToS low delay value. Currently there is no way to change this in ISC DHCP.
Et comme il utilise des socket raw on peut pas non plus y toucher via netfilter…
Lorsqu'on configure la réplication dans dovecot, on peut donner un intervalle uid_min / uid_max de filtre sur les utilisateurs qui seront synchronisés.
Sauf que si la synchro a déjà fonctionné mais qu'on modifie ces limites après (par exemple on a des erreurs sur l'utilisateur "nobody"), dovecot continue s'en préoccuper. En fait apparemment il "retient" qui est concerné par la réplication.
Il suffit de :
doveadm replicator remove nobody
pour s'en débarrasser ! Je n'avais pas trouvé, mais là en replongeant dans ma configuration ces erreurs faisaient un peu trop de bruit dans les logs… et je suis tombé rapidement sur ce mail.
Liste des utilisateurs qui seront synchronisés :
doveadm replicator status ' '*'
Sale : pour "palier" au "problème" que Ubuntu a 127.0.0.1 comme serveur DNS dans le resolv.conf par défaut (dnsmasq en local), les paquets docker utilisent google DNS par défaut pour le serveur DNS des conteneurs.
Forcément si on a un FW qui bloque on le remarque... mais même sinon, c'est très pas beau.
Je ne savais pas que strace avait des catégories de syscall prédéfinies, pratique.
On peut donc avec strace -e trace=network tracer tous les calls en rapport avec le réseau d'un process. Il y a pas mal d'autres catégories comme signal, memory…
Petite "découverte" du jour, ou plutôt une remarque : il existe dans Debian des backports de backports, en gros qui "traversent" 2 versions, dans backports-sloppy.
Je cherchais à faire du lookahead/lookbehind avec sed. Apparemment, pour avoir l'option perl regex, il faut passer à ssed, super sed. Et ça fonctionne.
Les userdir apache, vieux comme le monde. Mais je ne connaissais pas la variante "hors home" où en fait on peut choisir n'importe quel dossier racine dans lequel seront, par dossier, les données de chaque utilisateur. Ça me semble pas mal pour éviter de devoir ajuster les permissions x de tout le home par exemple.
Je ne savais pas non plus qu'on pouvait activer/désactiver des utilisateurs, ou rediriger vers des URLs externes.
Si toi aussi tu comprends pas pourquoi ton "appli" python sort rien dans le journal de systemd, pense juste aux basiques, et au buffer sur stdout.
Lancer python avec -u pour passer en unbuffered, au moins le temps du debug.
Un gros disque formaté en ext4 et de l'activité lente bizarre une fois monté ? C'est juste une étape d'initialisation qui se fait en arrière-plan : ext4lazyinit.
Je voulais faire un miroir chiffré de mes photos à distance qui soit simple, et sans trop de configuration à refaire en cas de problème. Pas de sauvegarde, pas d'incrémental ou quoi que ce soit, juste une copie de sécurité (cas où y'a l'feu quoi).
Là de base, on pense à rsync et ssh. Restait à trouver la partie chiffrement, avant transfert de préférence. J'ai déjà touché à ecrypts mais pas toujours très bien compris comment ça fonctionne et comment refaire le montage sur une autre machine (on y arrive mais des clefs sont dans un keyring lié à la session etc.). On trouve rsyncrypto qui chiffre d'une manière compatible avec la synchronisation des modifications (comme par rsync). Mais il faut donc une copie des données chiffrées avant de lancer le rsync. Pas le bon plan si on a des données qui peuvent potentiellement devenir volumineuses.
Encfs est une solution : entièrement userspace, simple à initialiser et utiliser.
On peut donc imaginer : données ⇒ rsync ⇒ encfs ⇒ sshfs vers le serveur distant.
Facile à mettre en place pour un administrateur système :
sshfs serveur:stockage montage-sshfs
encfs montage-sshfs montage-encfs
rsync -vriit données montage-encfs
Lorsque le dossier source d'encfs n'est pas encore initialisé, on nous demande ce qu'on veut comme option et un mot de passe. Les options sont enregistrées par défaut dans .encfs6.xml à la racine du dossier chiffré, donc sur le serveur distant. C'est pas forcément le plus malin mais au moins tout est au même endroit.
À noter :
Je me suis fait un petit script pour ne pas avoir besoin de reconstruire à chaque fois l'assemblage, et qui permet donc de faire un miroir de n'importe quoi n'importe où facilement (tant qu'il y a ssh sur le serveur distant et les 3 outils en local).
Envie d'accéder à un disque externe / clef USB / stockage quelconque de manière permanente sur un serveur sans se poser de question type fstab / autofs ?
Ce script tout simple qui se fait lancer par une règle udev est peut-être une solution. En tous cas quand ça fonctionne c'est tout simple et pratique : on a un mount.d / umount.d pour balancer des scripts si besoin et un lien est créé pour nous donner un point de montage fixe (pas comme un dev ou autre qui peut varier).
Tips :
Attention : ne fonctionne pas si on a un système de fichier monté en userspace (ntfs/exfat ou tout autre FS qui passe par FUSE). Voir https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=774149 (assez long, en gros udev utiliise les cgroup et clean tout à la fin de la gestion de l'événement). Pour l'instant j'ai contourné de manière crade en éditant le script et en passant par at pour sortir du cgroup : echo mount […] | at now
Voir : http://unix.stackexchange.com/questions/28548/how-to-run-custom-scripts-upon-usb-device-plug-in/28711#28711
Bref ce n'est pas si simple au final même s'il y a quasiment rien dans ce script…
On ne peut pas trop éviter le petit tour par la doc avant de commencer : zless /usr/share/doc/usbmount/README.gz
Je viens de faire une installation d'etherpad-lite sur une Debian Jessie, au final c'est assez rapide de nos jours, parce que même si avant il fallait compiler nodejs et qu'on le lit de partout encore, apparemment il suffit de fait un lien node ⇒ nodejs et ça fonctionne ! Et npm a été rapide ce coup-ci…
Le tuto ci-lié a aussi une petite variante, c'est de faire un utilisateur système et de poser les fichiers dans /var/www je me dis que c'est peut-être légèrement plus propre que dans le home au final…
Un outil que j'utilise de temps en temps pour faire du ménage en terme de place disque, c'est baobab (en GTK, de GNOME). Je me suis déjà dit que ça serait cool pareil mais en terminal, même si baobab permet de travailler à distance (gvfs powa).
Je viens de voir passer "ncdu", un "du" en ncurses et j'ai testé vite fait ; c'est pas mal, ça remplace bien, a l'air pratique et tout. Petit outil que je sens va me servir de temps en temps. Packagé dans Debian :)
Via #tuxfamily
Si on veut vite-fait tester des pages web ou mettre à dispo un fichier en web, comme python est installé automatiquement à peu près partout sur les serveurs, une seule commande :
python -m SimpleHTTPServer 8000
C'est probablement pas optimisé, pas sécurisé, pas tout ce qu'on veut mais ça permet de voir taktak ce qu'on fait sans rien installer spécialement et sans configuration.
Avec cssh (ssh en cluster : plusieurs connexions contrôlées depuis un champ central), si le window manager met une trop grande barre de fenêtre, on risque de ne pas voir le prompt de la machine connectée au-dessus.
Il suffit de paramétrer un espace réservé (en pixels) entre les fenêtres. Dans .clusterssh/config on met quelque chose comme :
terminal_reserve_bottom=42
et hop ça change la vie plutôt que de toujours devoir cliquer partout pour voir ce qu'on fait (ou de devoir réempiler toutes les fenêtres dans le bon ordre…).
Migrer des VM à chaud, sans stockage partagé, avec qemu/kvm ? J'avais vu passer ça, le temps que ça descende dans les distro, que j'y repense, que j'aie de quoi tester… bref là ça marche.
Il y avait un problème où il fallait créer le disque destination de la bonne taille à la main… en 2013 : c'est manifestement corrigé.
Attention, ça ne fonctionne pas avec virt-manager, il essaye de faire une migration comme si le stockage était partagé.
Donc avec virsh :
virsh migrate --live --persistent --undefinesource --copy-storage-all --verbose --desturi qemu+ssh://user@dest-machine/system vm-to-migrate
Ça demande le mot de passe pour se connecter en ssh, et c'est parti. La copie du disque prend forcément un peu de temps mais j'ai vu du trafic jusqu'à 400 Mo/s, et pendant ce temps-là la machine est toujours en fonctionnement : il y a une deuxième passe pour synchroniser le delta.
Pratique.
(La commande est issue de : http://hgj.hu/live-migrating-a-virtual-machine-with-libvirt-without-a-shared-storage/ car je n'ai pas trouvé d'exemple sur la page liée ni sur les pages proposées en bas.)
Copier un fichier avec scp à travers une autre machine-relais en une commande : possible (mais relou). Pour moi ça a donné un truc comme ça :
scp -o 'ProxyCommand ssh -W machine_finale:22 user@relais' -r /dossier/à/copier user@machine_finale:
Après avoir changé un disque, impossible de le monter. Enfin si, mount OK, mais après rien dans df, mount ou quoi que ce soit. Monter sur un autre dossier que celui prévu était OK aussi.
En fait le point de montage était bien dans le fstab, mais avec un UUID vide (j'avais généré la ligne mais vu que le disque marchait pas, mon script avait laissé vide l'UUID). Et donc systemd se sentait malin de me le démonter immédiaitement…
juil. 21 15:14:47 sdata4 kernel: EXT4-fs (sdi): mounted filesystem with ordered data mode. Opts: (null)
juil. 21 15:14:47 sdata4 systemd[1]: mnt-rozofs-storages-storage_2_8-0.mount: Unit is bound to inactive unit dev-disk-by\x2duuid.device
juil. 21 15:14:47 sdata4 systemd[1]: Unmounting /mnt/rozofs/storages/storage_2_8/0...
Un systemctl daemon-reload, pour relire le fstab, et hop…
Je suis tombé rapidement sur le post ci-lié mais j'aurais pas pensé à ça tout seul… enfin si, si j'étais tombé sur le bout de journal sus-cité…
Bonne question : comment on fait pour changer le nom d'un process (visible via ps ou /proc). Par exemple, au lieu d'avoir la commande nginx on voit "nginx: worker process".
Sur cette page, ils disent comment faire en modifiant directement dans argv… ça fonctionne mais ça a l'air crade est pas très souple.
D'ailleurs pour se marrer on peut le faire avec gdb (une fois à un breakpoint) :
(gdb) p argv[0]
$3 = 0x7fffffffe5cf "/home/john/code/a.out"
(gdb) set {char}0x7fffffffe5cf = 'a'
Là ça modifie bien /proc/<pid>/cmdline et ps… mais on ne peut pas par exemple malloc et remplir une string et la poser en argv[0] : ça fait juste rien.
Il y a apparemment prctl (voir https://github.com/electrum/procname) mais ça ne fonctionne que avec "c" comme argument à ps.
J'ai regardé dans les sources de nginx, ils expliquent bien… mais ça sent le gros gros hack :P
https://github.com/nginx/nginx/blob/branches/default/src/os/unix/ngx_setproctitle.c
En tous cas ça fonctionne avec gdb…
(gdb) b main
(gdb) r lala
(gdb) set argv[1] = 0x0
(gdb) p argv[0]
$1 = 0x7fffffffe5ca "/home/john/code/a.out"
(gdb) p strcpy($1, "coucou coincoin lala pouet trucmuche")
J'ai testé pour vous : mlmmj (Mailing List Management Made Joyful).
Alors oui, il y a mailman (et même mailman3 depuis plus d'un an), sympa… tous avec leurs problèmes, leur côté usine (surtout mailman3 parait-il).
J'avais vu passer sur IRC qu'il en existait au moins un autre, sans daemon, en C et je crois bien que c'était mlmmj. :)
J'ai fait tomber cela en marche avec du postfix, en utilisant les paquets de Debian 8 Jessie sans trop de soucis. Ça juste fonctionne, au moins le basique. Et on a même l'impression de comprendre ce qu'il se passe, de maîtriser la bête.
Pour l'interface web, c'est du super minimal (pas d'auth, ni CSS). Il faut un peu bidouiller les permissions pour arriver à concillier les deux (mais c'est documenté dans les README des paquets). La configuration ? Des fichiers texte dans le dossier des listes. Un booléen à activer ? touch du fichier qui va bien. Les adresses qui ont souscrit ? fichiers textes indéxés sur la première lettre, dans subscribers.d ! Quand je disais "simple" :)
Je pense que ça peut être très bien si on est prêt à partir sur du minimaliste. Il faut probablement éviter si on veut du fancy pour administrateurs de listes non-tech par exemple.
Notes :