17 Jul 2016, 00:00

Généralités réseau sous Linux

Depuis stretch, la commande ifconfig n’est plus installée par défaut. Pour la remettre :

sudo aptitude install net-tools

ping

sudo apt install iputils-ping
pour avoir la commande ping4.

On peut spécifier l’interface de départ d’une requête ICMP via l’option -I , par exemple

ping -I 10.88.2.1 10.88.0.64

dig

Permet de vérifier la résolution des noms de domaine.
Pour l’installer : sudo apt install dnsutils.

On peut demander une résolution simplement avec :
dig example.org

Par défaut, dig renvoie le champ A s’il existe, et le champ SOA (Start Of Authority) si le domaine demandé n’existe pas.
On peut demander un champ précis en le spécifiant :
dig MX example.org

On peut spécifier un serveur DNS à interroger avec :
dig @1.2.3.4 example.org
On peut demander une résolution inverse :
dig -x 1.2.3.4

On peut aussi demander une résolution inverse avec l’adresse IP inversée, et le suffixe in-addr.arpa, mais il faut alors spécifier le champ PTR :
dig PTR 4.3.2.1.in-addr.arpa

Test des ports ouverts

Avec netcat :
sudo apt install netcat ## dummy package for netcat-openbsd
puis
nc -z -v example.org 80
ou
nc -z -v -u example.org
pour de l’UDP (ne semble pas indiquer de message d’erreur en cas d’échec ; met environ 3s à conclure à un test réussi ; on peut passer l’option -w 1 pour n’attendre qu’une seconde)

Nom des interfaces réseau

Depuis Stretch, udev possède un mécanisme de noms prédictifs d’interfaces réseau, qui devient activé par défaut, et qui nous donne des noms de type enp6s0. Ceci peut se désactiver via un paramètre à donner à grub dans le fichier /etc/default/grub :

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"

Source (qui explique plusieurs mécanismes réseau)

Une fois ce mécanisme supprimé, nous pouvons choisir le nom “standard” (eth0) que udev donnera aux interfaces réseau via le fichier /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="11:22:33:44:55:66", NAME="eth-motherboard"

Il suffit de modifier l’adresse mac et le nom souhaité pour qu’ils soient opérationnels au prochain boot.
(il peut éventuellement être nécessaire de update-initramfs -k all -u ?)

Interaction de Network-Manager avec /etc/network/interfaces

Depuis quelques versions, Network-Manager gère les connexions qui ont été fixées dans /etc/network/interfaces. Ceci peut s’avérer perturbant si on a besoin d’une connexion complètement fixe en parallèle de NM (par exemple pour du wifi en réseau secondaire). Ce comportement peut se désactiver. Pour ceci, il faut que le fichier /etc/NetworkManager/NetworkManager.conf contienne ceci :

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

Reconfiguration d’une interface réseau

Il m’est arrivé qu’une interface refuse de se reconfigurer selon les paramètres du fichier /etc/network/interfaces. La commande service networking restart renvoyait, de mémoire, “Interface non configurée”. Pareil avec ifup, ifdown.
Finalement, le problème a été résolu grâce à la commande

ip addr flush dev enp4s0

enp4s0 étant évidemment l’interface posant problème.

Création d’une interface virtuelle (dummy)

Cas simple

echo dummy >> /etc/modules Au chargement du module, un périphérique dummy0 est automatiquement créé, avec une adresse MAC aléatoire.

Si on veut nommer soi-même le périphérique

Comme l’adresse MAC change à chaque boot, on ne peut pas utiliser la méthode via Udev.
On peut donc créer un script qui va créer l’interface, et la renommer, et même changer l’adresse MAC

#!/bin/sh

ip link add dummy0 type dummy
ip link set name my-dummy dev dummy0
ip link set my-dummy address 02:01:02:03:04:08

Ce script peut être appelé manuellement, au boot, ou via le paramètre “pre-up” dans le fichier /etc/network/interfaces

Bridge via le fichier /etc/network/interfaces

Il faut déjà installer le paquet bridge-utils :
sudo apt install bridge-utils

Exemple pour une interface TAP (OpenVPN) :

auto my-bridge
iface my-bridge inet dhcp
    bridge_ports eth0 tap0
    pre-up openvpn --mktun --dev tap0
    bridge_hw 01:02:03:04:0:06 # non obligatoire
    post-down openvpn --rmtun --dev tap0
    allow-hotplug eth0

Exemple de pont entre une carte physique et une carte virtuelle

auto my-bridge
iface my-bridge inet static
    bridge_ports eth0 dummy0
    address 10.0.0.1
    netmask 255.255.255.0
    network 10.0.0.0
    broadcast 10.0.0.255
pre-up ip link add dummy0 type dummy
post-down ip link delete dummy0

Les interfaces réseau utilisées n’ont pas besoin d’être mentionnées ailleurs dans le fichier.
La mention “auto” sert à démarrer automatiquement la connexion. Si elle n’est pas mentionnée, il faudra ifup my-dev

Configuration sysctl

Pour que le système accepte de transférer les paquets d’un réseau vers un autre (si le poste est conecté à 2 réseaux), il faut activer le forxard IPv4. On peut le faire à la volée avec sudo sysctl -w net.ipv4.ip_forward=1, et le rendre persistent avec la commande (en root) echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/10-network.conf.

Pour désactiver l’IPv6, echo net.ipv6.conf.all.disable_ipv6=1 >> /etc/sysctl.d/10-network.conf.

13 Jun 2016, 00:00

Son en sourdine à chaque démarrage sous Debian Jessie

Pour que le niveau de son retrouve à chaque démarrage le niveau qu’il avait lors de l’extinction, il est nécessaire que les 3 paquets suivants soient installés : alsa-base alsa-utils alsa-tools , que l’on utilise Pulseaudio ou non.

08 Mar 2016, 00:00

Installer complètement Pulseausio pour MATE

Pour Jessie, il suffit d’installer les paquets pulseaudio pavucontrol pavumeter mate-media-pulse gstreamer0.10-pulseaudio mate-settings-daemon-pulse. Ainsi, tout passera par Pulseaudio, et le contrôleur de volume sera celui de Pulseaudio également.

27 Oct 2015, 00:00

Vrac sur les fichiers .desktop, les types MIME, le menu MATE et les applications

fichier -> octets magiques -> type MIME -> fichier .desktop -> commande spécifiée à la ligne Exec

Fichiers .desktop

Se trouvent dans /usr/share/applications (system-wide) et ~/.local/share/applications (pour l’utilisateur courant). Peuvent se trouver dans des sous-dossiers. Définissent un programme.

[Desktop Entry]
Type=Application
Name=Super Programme
Exec=/path/to/bin
Icon=/path/to/file.png
Categories=Office;Graphics;
NoDisplay=false
MimeType=application/octet-stream;

La ligne MimeType sert à informer le système du type de fichiers que ce logiciel peut ouvrir. Ces infos sont regroupées dans un fichier inverse mimeinfo.cache, qui référence tous les logiciels pouvant ouvrir tel type mime. Celui-ci peut s’actualiser via la commande update-desktop-database. La ligne Type est indispendable pour que le fichier soit valide.

Le menu (édité par mozo sous MATE) contient toutes les applications .desktop contenues dans /usr/share/applications et ~/.local/share/applications. Pour savoir s’il affiche par défaut l’application ou non, il se réfère à la ligne NoDisplay= .

Par défaut, il propose d’“Ouvrir avec” les applications présentes dans les fichiers mimeinfo.cache (système et utilisateur). Si on souhaite en ajouter de nouvelles, il ne proposera d’ajouter que les fichiers .desktop dont la ligne exec se finit par %u , %U , %f ou %F.

Menu “Ouvrir avec” sous MATE

Les menus sont définis par des fichiers .menu qui :

  • incluent de balises <Menu> </Menu> qui :
    • possèdent un nom (normalement pas utilisé en label)
    • possèdent un Directory (en l’absence de quoi, le nom direct du menu sera utilisé comme label)
    • incluent des fichiers .desktop (soit directement, soit des catégories)
  • sont situés dans
    • /etc/xdg/menus
    • ~/.config/menus

Les fichiers .directory définissent l’aspect de l’entrée de menu. Ils :

  • Incluent une balise [Desktop Entry] suivie d’attributs, par ex :
Version=1.0
Type=Directory
Icon[fr_FR]=folder
Name[fr_FR]=TEST
Name=TEST
Icon=folder
  • sont situés sous
    • /usr/share/desktop-directories
    • ~/.local/share/desktop-directories

Wine

Pour que certaines applis (par exemple Office 2007) ouvrent correctement un fichier, il faut les ouvrir avec une ligne de commande de ce type :

Exec=wine start /ProgIDOpen Word.Document.12 %f

Le Word.Document.12 équivaut à l’extension .docx telle que référencée dans le registre Windows.

14 Sep 2015, 00:00

Accéder à un partage WebDAV avec l'explorateur windows

Windows supporte l’accès aux partages WebDAV via Explorer, à condition que le service WebClient soit démarré. ce dernier est par défaut en mode manuel, et ne démarre pas lorsque l’on fait appel à un url WebDAV. Il faut donc le passer en automatique, et le démarrer à la main si on ne souhaite pas redémarrer.

Il est conseillé d’aller dans le Panneau de Configuration, dans les “Options internet”, onglet “Connexions” puis “Paramètres LAN” et de désactiver la detection automatique de la connexion. En effet, celle-ci attend un timeout de la detection d’un proxy à chaque requête WebDAV, ce qui ralentit énormément la connexion.

Ensuite, nous pouvons accéder à une URL type \\webdav.monserveur.com[@SSL][@80]\mon\dossier\partage ou encore http[s]://webdav.monserveur.com/mon/dossier/partage[:80]. Les caractères entre crochets sont à spécifier si l’on souhaite utiliser une connexion HTTPS sécurisée. De même, il est possible de spécifier un numéro de port non standard.

On peut également le conecter en tant que lecteur réseau. Si l’on coche “Mémoriser les informations d’identification”, le nom d’utilisateur sera conservé, mais pas le mot de passe, qu’il faudra malgré tout entrer à chaque ouverture de session.

Par défaut, Windows n’autorise pas le téléchargement de fichiers de plus d’une certaine taille (un fichier de 60Mo n’est pas passé). Il faut pour cela aller à la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters, et passer la valeur ‘FileSizeLimitInBytes’ à 4294967295 (source)

On peut également créer un batch qui permet de libérer une lettre de lecteur et de l’assigner au partage, comme ceci :

net use Z: /delete
net use Z: \\webdav.monserveur.com@SSL\mon\dossier\partage /user:monUser

03 Sep 2015, 00:00

OpenVPN en mode routé sous DD-WRT (build 13064)

Cet article décrit la mise en place d’un serveur OpenVPN configuré en mode routé (sous-réseau distinct) sous DD-WRT, build 13064.Cette build est assez ancienne, mais est la plus récente disponible pour mon WRT54GL. Les manips peuvent changer lors de versions plus récentes. Il ne couvrira que les aspects spécifiques à DD-WRT, et non la mise en place générale d’une structure PKI.

Il a pour but l’accès, à partir de l’extérieur, à tout l’intérieur d’un réseau LAN (pour l’accès aux ressources internes d’une entreprise par exemple). Il n’a PAS pour but la redirection complète du traffic réseau via VPN (usage en proxy). Par ailleurs, il part du principe qu’aucune de règle de pare-feu spécifique n’est déjà configuré.

Tout d’abord, sur un ordinateur, installer OpenVPN, Easy-RSA, et générer les clé et certificats pour le CA et le server, ainsi que les paramètres Diffie-Hellman.

Aller sur l’interface d’administration du routeur, Services -> VPN. Sous OpenVPN Daemon, cocher Enable. Pour le start-type, j’ai mis System car mon install est un peu particulière, et le routeur n’a pas de WAN (ce n’est qu’un bridge wifi). Il est toutefois souvent recommandé de cocher WAN Up.

Sous “Public Server Cert”, coller le ca.crt généré auparavant.

Sous “Certificate Revoke List”, coller le crl.pem.

Sous “Public Client Cert”, coller le server.crt.

Sous “Private Client Key”, coller le server.key.

Sous “DH PEM”, coller le dh2048.pem généré auparavant.

Sous OpenVPN config, coller ce qui suit :

	# if you want to add routes to your client
	# typically for acessing the LAN from the VPN
	push "route 192.168.1.0 255.255.255.0"

	 # definition of the VPN network
	server 10.89.0.0 255.255.255.0

	# tun for routed mode
	dev tun0
	# I always prefer UDP
	proto udp
	keepalive 10 120
	dh /tmp/openvpn/dh.pem
	ca /tmp/openvpn/ca.crt
	cert /tmp/openvpn/cert.pem
	key /tmp/openvpn/key.pem

	# you can choose other values, but it has to be in adequation with your client's config
	cipher AES-128-CBC
	comp-lzo

	# if you want VPN clients to be able to communicate together
	client-to-client

	# Only use crl-verify if you are using the revoke list
	# otherwise comment it out
	crl-verify /tmp/openvpn/ca.crl

	# management parameter allows DD-WRT's OpenVPN Status web page 
	# to access the server's management port
	# port must be 5001 for scripts embedded in firmware to work
	management localhost 5001

Cliquer sur Save, puis “Apply Settings”. On devrait alors voir, sous Status -> OpenVPN, que le serveur a bien démarré. Normalement, les clients peuvent désormais tous communiquer avec le serveur et avec les autres clients. Pour que les clients puissent communiquer avec l’intérieur du LAN cible, il faut rajouter la règle de pare-feu suivante :

	iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
	
	iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT
	iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
	iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

dans le cadre “Commands”, et cliquer sur Save Firewall.

Il n’y a ensuite plus qu’à configurer les clients. Voici un exemple de config fonctionnel avec les paramètres serveur ci-dessus :

client
dev tun
proto udp
remote my.domain 1194
resolv-retry infinite
nobind
persist-key
persist-tun
float

ca ca.crt
cert client.crt
key client.key
ns-cert-type server
cipher AES-128-CBC
comp-lzo
verb 2

11 May 2015, 00:00

Live-USB Hybrid Debian Jessie

Maintenant que Jessie est sortie, voici les commandes pour la création rapide d’une image Live customisée avec le bureau MATE. Ceci est basé sur la méthode pour Wheezy, avec quelques petites modifications.

sudo aptitude install live-build live-tools
mkdir jessie_live && cd jessie_live
mkdir auto && cp /usr/share/doc/live-build/examples/auto/* ./auto/

Editer le fichier auto/config pour qu’il contienne ceci :

#!/bin/sh

set -e

lb config noauto \
	--architectures 'i386' \
	--archive-areas 'main contrib non-free' \
	--bootappend-live 'boot=live config locales=fr_FR.UTF-8 keyboard-layouts=fr' \
	--binary-images 'iso-hybrid' \
	--distribution 'jessie' \
	--linux-flavours '586 686-pae amd64' \
	--source 'false' \
	"${@}"

Entrer la commande lb config, puis aller éditer le fichier config/package-lists/live.list.chroot et ajouter les paquets désirés. Je propose ceci :

live-boot
live-config
live-config-systemd
vlc mdadm rdesktop conky nmap rcconf network-manager-gnome firmware-linux firmware-atheros firmware-b43-installer firmware-bnx2x firmware-brcm80211 firmware-intelwimax firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-libertas firmware-myricom firmware-netxen firmware-qlogic firmware-ralink firmware-realtek gparted hfsprogs ntfs-3g hfsplus hfsutils dosfstools hplip system-config-printer xsane simple-scan lightdm mate-desktop-environment bash-completion chntpw caja-open-terminal dcfldd bootlogd less mesa-utils numlockx ethtool grub2 mesa-utils ssh gdisk testdisk python-tk iftop nethogs pm-utils dmraid chromium engrampa unrar pluma aptitude apt-file chromium-l10n smartmontools debootstrap pciutils usbutils cifs-utils e2fsprogs mtools screen pulseaudio pavucontrol pavumeter mate-media-pulse gstreamer0.10-pulseaudio mate-settings-daemon-pulse lvm2

Puis entrer la commande sudo lb build.

A noter qu’il est possible de décomposer la commande sudo lb build en la succession suivante :

sudo lb bootstrap
sudo lb chroot
sudo lb binary

Il est possible d’aller modifier/ajouter manuellement des fichiers entre l’étape chroot et l’étape binary. Par exemple, pour créer /home/user/ , /home/user/Bureau/ et y ajouter des fichiers, qui seront disponibles directement sur le bureau du live.

Si on souhaite recommencer la création du live, on peut utiliser la commande sudo lb clean qui ne conserve que le cache des paquets, du bootstrap et la config. On peut aussi utiliser les options --binary ou bien --chroot pour conserver les étapes antérieures.

07 Apr 2015, 00:00

Installer de nouvelles icônes réseau pour Dia

Cet article est un petit complément à cet article sur le blog admin-linux.org.

Les fichiers .shape proposés dans l’archive ci-présente ont été mis à jour pour intégrer un point d’ancrage principal et sont disponibles ici. Il suffit de décompresser cette archive dans ~/.dia/ pour l’utilisateur courant, et dans /usr/share/dia/ pour les ajouter au niveau système.

27 Mar 2015, 00:00

Verrouiller automatiquement une session lors de son ouverture sous Windows 7

On peut vouloir, pour diverses raisons, ouvrir une session automatiquement au démarrage de la machine, mais la verrouiller aussitôt. Pour ceci, il suffit de créer un fichier sessionLock.bat, qui contiendra cette unique ligne :

rundll32 user32.dll,LockWorkStation

Placer un raccourci vers ce fichier dans le dossier de démarrage de la session, et hop ! Lorsque la session s’ouvre, elle est immédiatement verrouillée.

09 Feb 2015, 00:00

Choisir un serveur DNS domaine par domaine sous OSX

Il est possible, sous OSX, de spécifier des serveurs DNS différents selon le domaine que l’on cherche à joindre. Ainsi, on peut avoir des domaines professionnels privés toujours accessibles, quel que soit la connexion derrrière laquelle on se trouve.

Il faut pour ceci créer le répertoire /etc/resolver/ , puis créer dedans un fichier du nom du domaine à résoudre, contenant la directive nameserver 1.2.3.4. Par exemple, pour accéder au RPVA des avocats : /etc/resolver/e-barreau.fr contiendra nameserver 192.168.1.2, avec l’adresse vers le boitier RPVA.