01 Jan 0001, 00:00

v19.10 ?

AOMEI partition assistant :
capable de cloner un disque bitlocker vers un disque vierge (le disque bitlocker étant deverrouillé)

  • secteur par secteur : la partition reste chiffrée via Bitlocker ; le partitionnement est dupliqué. Il est possible de booter l’OS sur un autre poste à partir du nouveau disque (au moins après avoir déchiffré le disque bitlocker)

  • copy rapide : si le disque source et cible n’ont pas la même table de partition, ne sera PAS corrigé automatiquement, il faut préparer un format de table de partition identique. La partition Bitlocker sera copiée NON chiffrée, mais prendra environ autant de temps qu’une copie secteur/secteur.
    Le disque cible ne sera pas bootable sur un autre poste, erreur de fichiers de démarrage. Une réparation du démarrage par USB semble durer très longtemps (interrompu avant la fin).

01 Jan 0001, 00:00

https://blog.landr.com/fr/quest-ce-que-le-midi-guide-pour-debutant-sur-loutil-le-plus-puissant-de-la-musique/
https://www.pianoweb.fr/comprendre-le-midi.php

MMC (MIDI machine control):
https://en.wikipedia.org/wiki/MIDI_Machine_Control

CC list :
https://fr.audiofanzine.com/glossaire/a.play,word.Control-change.html

Description technique des messages MIDI :
https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message

01 Jan 0001, 00:00

Pruning :

https://gist.github.com/yorickdowne/67be09b3ba0a9ff85ed6f83315b5f7e0 https://docs.nethermind.io/nethermind/ethereum-client/configuration/pruning

01 Jan 0001, 00:00

sudo sed -i "/^mac-address=.*$/d" /etc/NetworkManager/system-connections/*

01 Jan 0001, 00:00

cat : windows, serveur, gpo

Créer : crée le lecteur s’il n’existe pas déjà ; s’il existe, ne fait rien.

Replace : force la suppression puis re-création de l’objet, même s’il n’a pas changé. Pour cette raison, c’est pratique pour forcer un changement (genre nouveau chemin de serveur), mais une fois que tout est en place, il vaut mieux repasser en “update” pour éviter les suppressions régulières du dossier en cours de travail

Update

01 Jan 0001, 00:00

Configuration générale de nginx et configuration en reverse proxy

Installation

apt install nginx

Généralités

nginx -t : vérifie la syntaxe des fichiers de conf
nginx -s reload : recharge les fichiers de conf

:## Main server (vhost) definition

server {
        listen 8080 default_server;        # port and defining it as default server
        # listen 443 ssl default_server;   # for SSL
        root /var/www/html;  # root directory
        index index.html index.htm index.nginx-debian.html; # filenames it might search
        server_name _;  # URL it will respond to ; _ is default
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

Reverse proxy

https://www.freecodecamp.org/news/docker-nginx-letsencrypt-easy-secure-reverse-proxy-40165ba3aee2/

Pour rediriger une requête vers un hôte différent

upstream my-service {
  server        my-service-hostname:8080;
}

server {
  listen        8080;
  server_name   my-service.example.com;

  location / {
    proxy_pass  http://my-service;
  }
}

La directive server sert à définir le cas dans lequel la configuration est utilisée : on écoute sur le port 8080, on répond aux requêtes qui demandent my-service.example.com, et dans le cas où on demande l’URL / (ou à un niveau plus bas, du genre /truc/bidule.html, donc dans ce cas précis tous les chemins).
Dans ce cas, via proxy_passon passe la requete à l’hôte (défini via “upstream”) my-service.

La directive upstream sert à définir un hôte contactable par nginx ; il est nommé (dans nginx uniquement) my-service et est accessible via son adresse IP ou nom d’hôte : hostname:port

https://www.linode.com/docs/web-servers/nginx/use-nginx-reverse-proxy/

https://www.thepolyglotdeveloper.com/2017/03/nginx-reverse-proxy-containerized-docker-applications/

01 Jan 0001, 00:00

Vecteurs/tableaux

http://www.ixany.org/docs/Shell_Les_tableaux_en_bash.html Les tableaux en bash peuvent être indicés ou associatifs. Pour l’instant je ne parle que des indicés.

Déclaration

Espaces indispensables près des parenthèses.

Déclaration implicite avec initialisation :
arraytest=( a b c )

Déclaration explicite :
declare -a tableau_indi
(ou pour un tableau associatif :) declare -A tableau_asso

Remplacer “declare” par readonly pour un tableau en lecture seule.

Usage

Accolades indispensables.
${arraytest} équivaut à ${arraytest[0]}

Obtenir la première valeur :
echo ${arraytest[0]}

la 2e :
echo ${arraytest[1]}
etc…

Obtenir la liste de toutes les valeurs :
echo ${arraytest[@]}

Obtenir le nombre de valeurs :
echo ${#arraytest[@]}

Ajouter une valeur :
arraytest+=( d )

read

Permet de lire un fichier ligne par ligne, et de récupérer chaque champ. IFS choisit le séparateur de champs (par défaut espace)

while IFS=\; read -r name domain port options; do
  echo "nom : $name"
  echo "port : $port"
  echo "domain : $domain"
  echo "options : $options "
done < "/my/data/file"

/my/data/file contient :

# name;domain;port;options
imap;mail.example.com;993;;
smtp;mail.example.com;465;;

commentaires dans le fichier

https://unix.stackexchange.com/questions/244465/how-to-make-bash-built-in-read-ignore-commented-or-empty-lines

Pour que read ignore les lignes avec les commentaires, on peut utiliser ça en ligne finale :
done <(sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' "/my/data/file")

01 Jan 0001, 00:00

https://www.gnu.org/software/grub/manual/grub/ https://askubuntu.com/questions/751259/how-to-change-grub-command-line-grub-shell-keyboard-layout

Périphériques

Représente un support physique de stockage ainsi qu’une séparation logique (typiquement disque et partition). Doivent être notés entre parenthèses.
Sont de type (hd0,gpt1) la plupart du temps.
https://www.gnu.org/software/grub/manual/grub/html_node/Device-syntax.html#Device-syntax

Chemins

Comprend nécessairement un périphérique puis un chemin absolu.
Par exemple (hd0,1)/boot/grub/grub.cfg
Si on ne spécifie pas le périphérique, alors c’est ($root).

https://www.gnu.org/software/grub/manual/grub/html_node/File-name-syntax.html#File-name-syntax

Variables

set : voir toutes les variables affectées

$root : le périphérique par défaut pour les chemins ; doit être mis entre parenthèses pour être utilisé explicitement. On peut le définir à la volée en demandant une recherche d’UUID.
https://www.gnu.org/software/grub/manual/grub/html_node/root.html#root

$prefix : l’emplacement de “/boot/grub” ; devrait être ($root)/boot/grub https://www.gnu.org/software/grub/manual/grub/html_node/prefix.html#prefix

$cmdpath : l’emplacement contenant l’executable EFI de grub (peut ne contenir que le disque dans certains cas) https://www.gnu.org/software/grub/manual/grub/html_node/cmdpath.html#cmdpath

On peut créer des variables perso avec la syntaxe var=valeur.

Pour qu’une variable soit conservée lors d’un appel de “configfile” ou quand on rentre dans un sous-menu, il faut l’exporter : export var.a

Commandes

Clavier

https://askubuntu.com/questions/751259/how-to-change-grub-command-line-grub-shell-keyboard-layout insmod keylayouts keymap /boot/grub/bepo.gkb

ls : explore les chemins absolus (doivent commencer par le périphérique, ou alors sur root)
ls -l : + de détails dont UUID pour les périphériques

source : insère le contenu d’un fichier de configuration

configfile : lance un fichier de configuration

01 Jan 0001, 00:00

https://wiki.archlinux.org/title/Trusted_Platform_Module

TPM : Trusted Platform Module

C’est un crypto-processeur. Il y’a 2 versions : TPM 1.2 et TPM 2.0. Un démarrage en BIOS ne peut utiliser qu’un TPM 1.2 ; l’utilisation de la version 2.0 requiert un boot UEFI.

Sous Windows

Voir si on a un TPM :
devmgmt.msc -> Périphériques de sécurité (Security Devices)
Centre de sécurité -> Sécurité des appareils

tpm.msc

Sous Linux

sudo journalctl -k --grep=tpm
ou
sudo dmesg | grep -i tpm

01 Jan 0001, 00:00

https://www.lecoindunet.com/comprendre-notion-vlan-tagged-untagged-1629 http://www-igm.univ-mlv.fr/~dr/XPOSE2007/vlanparlegrandquinapascomprislesconsignes/Definition.html https://www.bicomm.fr/vlan-quest-ce-que-le-pvid/

Généralités

Flux taggé : la trame ethernet contient une en-tête (tag) qui spécifie l’ID du VLAN (encapsulation 802.1Q)
Flux non-taggé : ne contient pas cette en-tête

Appareil taggeur : capable d’envoyer un flux taggé (tagged)
Appareil non-taggeur : envoie un flux non-taggé (untagged)

Les cartes réseaux de PC envoient par défaut un flux non-taggé, mais certaines sont capables de produire un flux taggé si l’OS est correctement configuré et que le pilote le supporte.
Voir exemple sous Linux plus loin.

Les switchs modernes, même non-gérés basiques, ont tendance à laisser passer intactes les trames taggées, même si ils ne les comprennent pas. Ceci explique que des appareils taggeurs derrière des switchs basiques soient en mesure de se connecter à différents VLANs.
Mais ceci a toutefois des répercussions sur la sécurité, car il n’y a plus de réelle isolation de port et tous les VLAN sont mélangés. Il est aussi probable que d’autres problèmes découlent de ce branchement, non recommandé.

Ingress - Egress

Trafic entrant = ingress
Trafic sortant = egress

PVID

Port VLAN IDentifier : le numéro de VLAN dont seront taggées les trames Untagged entrant par ce port.
Ainsi, un pc relié à un port PVID 3 envoie une trame Untagged, qui se fait tagger au moment de son entrée dans le switch.

Le tag (ou absence de tag) avec lequel elle sortira du switch dépendra de la configuration du VLAN/port du port sortant (mais pas de son PVID).

Intérieur d’un switch

Une trame circulant dans un switch VLAN-capable est systématiquement taggée ; soit la trame rentre taggée, et elle conserve son tag, soit la trame rentre Untagged et elle hérite du PVID du port.

L’appartenance à un VLAN ou un autre n’empêche pas le switch de savoir sur quel port est situé telle adresse MAC ou IP ; il sera toujours en mesure déterminer le trajet correcte d’une trame (mais pourra l’autoriser ou non).

Admin VLAN

Les switchs managés n’acceptent généralement la communication (administration, et même ping) que sur un seul VLAN. Par défaut, c’est le 1, mais il est paramétrable.
Ceci peut expliquer que les connexions réseaux fonctionnent correctement entre plusieurs ports différents, mais pas avec le switch ; il ignore simplement les requêtes si elles viennent du mauvais VLAN.

Sécurité

Les prises réseaux accessibles aux utilisateurs finaux sont à considérer comme non-fiables, car n’importe qui peut configurer son poste pour se connecter à un VLAN précis, comme celui d’admin.
On appelle ces ports “port access”, et l’idée est de leur mettre le PVID du VLAN endusers, de “untag” le trafic sortant avec ce VLAN, et de n’autoriser que le trafic de ce VLAN.
Les appareils sur ces ports

À l’inverse, les ports permettant de connecter plusieurs switchs doivent pouvoir faire transiter plusieurs VLAN différents. Ils ne doivent pas être accessibles à n’importe qui.
On appelle ces ports “ports trunk”, et

Créer VLAN purement logiciel sous Debian

https://www.ksh-linux.info/reseaux/linux/vlan-debian

sudo apt install vlan

sudo modprobe 8021q

Je crois qu’il est nécessaire que la carte réseau parente (ou le pilote ?) supporte les fonctionnalités de VLAN.
J’ai effectué avec succès la manip sur différentes cartes réseau rj45 ou wifi, ainsi que sur un pont OpenVPN (à faire sur le client, en prenant l’interface tap comme parent ; pas besoin de manip au niveau du serveur ; mais je suppose qu’il est nécessaire que les cartes réseaux du serveur et du client supportent les VLANs).

On définit les caractéristiques du VLAN que l’on souhaite créer, et l’IP/masque à donner à l’interface (non nécessaire pour du DHCP) :

PARENT_IFACE=eth0
VLAN_ID=10
VLAN_IFACE=$PARENT_IFACE.$VLAN_ID

IP=10.0.0.1
MASK=24
BROADCAST=10.0.0.255

sudo ip link add link $PARENT_IFACE name $VLAN_IFACE type vlan id $VLAN_ID

L’interface est alors visible dans ifconfig -a ; elle aura la même adresse MAC que l’interface physique.

On l’active :
sudo ip link set dev $VLAN_IFACE up

On définit son IP/masque :
sudo ip addr add $IP/$MASK brd $BROADCAST dev $VLAN_IFACE
ou on peut demander du dhcp :
sudo dhclient -v $VLAN_IFACE

Pour voir le détail de l’interface vlan, notamment son id :
ip -d link show $VLAN_IFACE

Pour la supprimer :
sudo ip link del $VLAN_IFACE

Configuration VLAN/port

Chaque port a une politique concernant chacun des VLAN, qui spécifie comment doit être traité le trafic taggé de ce VLAN lorsqu’il sort par ce port (trafic egress) :

  • Excluded : la trame n’est pas transmise
  • Tagged : le numéro de VLAN est maintenu dans la trame sortante
  • Untagged : le numéro de VLAN est supprimé de la trame sortante

Cas rigolo et instructif : 1 seul appareil sur un PVID

Dans le cas où :

  • un appareil non-taggeur est branché sur un port qui est le seul à posséder le PVID 4
  • aucun autre appareil sur le réseau ne transmet de trames taggées VLAN 4
  • les règles permettent au trafic taggé 4 d’être sorti par les autres ports en Untagged
  • les règles permettent au trafic des autres VLAN de sortir en Untagged sur le port en question
    alors il est possible de configurer le port en question comme “Excluded” pour le VLAN4, et l’appareil pourra quand meme communiquer avec le reste du réseau !

En effet, ce filtrage ne s’applique qu’en sortie. Les trames (non taggées) entrantes par ce port seront taggées 4 par le switch, elles auront le droit de sortir par les autres ports, et lors de la réception de la réponse, elles seront taggées d’un autre VLAN (car aucun autre port n’a le PVID 4 et aucun appareil n’est explicitement sur le VLAN 4), et elles auront le droit de ressortir par ce port, en tant que Untagged, et donc comprises par l’appareil d’origine.

Conguration switch Zyxel

Type accepté

On peut définir qu’un port n’accepte (entrant ou sortant ? ) que du trafic taggé, ou que du trafic non taggé, ou les 2.

Ingress check

Si activé, le switch drop tous les paquets taggés avec un VLAN auquel le port n’appartient pas.

Guest VLAN

Si activé, et qu’une authentification réseau 802.1x est présente, les utilisateurs qui se branchent mais n’ont pas de credentials valides seront envoyés sur le Guest VLAN (si le port est configuré pour l’accepter bien sûr).

VLAN Trunk

Pour que le port accepte de transmettre même les trames appartenant à des VLAN inconnus.
-> à activer (éventuellement) pour les ports reliés à d’autres switchs, par les ports reliés à des équipements finaux
Si VLAN Trunk est activé mais Ingress check est activé aussi, je suppose que le Trunk ne fonctionne pas ?