Configurer un résolveur DNS local avec Unbound sous Fedora

Résoudre le DNS

DNS est le protocole Internet qui permet d'associer un nom de domaine comme www.ezvan.fr à une adresse Internet. On utilise un résolveur DNS pour effectuer cette association, ce qui est nécessaire pour pouvoir naviguer sur le Web. Quand vous êtes connectés à votre box Internet, un résolveur DNS est automatiquement configuré par votre système.

Généralement il est fourni par votre fournisseur d'accès, qui peut donc contrôler les réponses qu'il fournit. Cela peut être un moyen de censurer certains sites Web, comme expliqué par cet article de Stéphane Bortzmeyer.

Aussi il peut arriver que votre connexion soit quelque peu mauvaise, rendant les allers-retours vers le résolveur de votre fournisseur relativement longs, ce qui ralenti de manière non négligeable le chargement des pages Web.

Installer un résolveur local

Ces deux problèmes sont une bonne raison d'utiliser son propre résolveur DNS. Il est possible d'en utiliser un sur sa machine, ce que nous allons décrire ici. La procédure est ici décrite pour Fedora, mais est similaire pour d'autres distributions Linux.

Unbound

Unbound est un résolveur DNS moderne et léger. On va utiliser ce logiciel comme résolveur local.

Dnssec-trigger

Dnssec-trigger est un démon qui permet d'intégrer Unbound avec NetworkManager …

plus ...

Conversion de type avec PostgreSQL

Tous les jours je reçois un message d'erreur généré par le script cron de mon logiciel de webmail Roundcube:

ERROR: [7] ERROR:  operator does not exist: boolean = integer
LINE 1: DELETE FROM "contactgroups" WHERE "del" = 1 AND "changed" < ...
                                                ^
HINT:  No operator matches the given name and argument type(s). You might need to
 add explicit type casts. (SQL Query: DELETE FROM "contactgroups" WHERE "del" = 1
  AND "changed" < '2018-12-04 00:00:00')

Il semble que l'erreur soit causée par une incompatibilité entre le schéma de la base de données et la requête SQL utilisée par le script de nettoyage.

Pour administrer mes bases de données PostgreSQL simplement j'utilise le logiciel web phpPgAdmin. En observant le schéma de la table contactgroups je note que le type de la colonne del est boolean. C'est incompatible avec la requête DELETE FROM "contactgroups" WHERE "del" = 1 car del devrait être un nombre entier (un int). PostreSQL est tâtillon avec les types, et ne convertit pas un entier en booléen implicitement, ce qui cause l'erreur.

J'avais importé cette base depuis MySQL vers PostgreSQL, ce qui a pu causer quelques incohérences avec la schéma attendu par Roundcube. Je vérifie que c'est le cas en comparant avec le …

plus ...

Let's Encrypt et Drupal 7

Le vieux certificat SSL fournit par Gandi pour www.ezvan.fr a expiré sans crier gare ! Je n’ai pas accès au compte qui gère le domaine, me voilà donc en train d’essayer de créer un certificat avec Let's Encrypt.
Let's Encrypt est une autorité de certification qui fournit des certificats SSL gratuits, donc plus aucune excuse pour ne pas utiliser SSL correctement !

La validation du certificat est faite automatiquement, à l’aide d’un outil nommé cerbot. Il génère un fichier “ACME challenge” qui doit être accessible via le domaine validé.

Dans mon cas j’utilise la commande suivante. Je spécifie le chemin d’installation de Drupal (qui fait tourner ce site) et demande à cerbot de configurer Apache pour utiliser le nouveau certificat.

% sudo certbot --authenticator webroot --installer apache --webroot -w /usr/share/drupal7 -d www.ezvan.fr

Malheureusement tout ne se passe pas comme prévu !

 - The following errors were reported by the server:   
 Domain: www.ezvan.fr   
 Type:   unauthorized   
 Detail: Invalid response from 
   http://www.ezvan.fr/.well-known/acme-challenge/UWXvHv0ueIHLLooJIcIfdD2OiuNipVF5TuSc0dXnXd0:   
   "      403 Forbidden      Forbidden"

Que se passe-t-il ? Drupal interdit l’accès direct aux fichiers placés dans son arborescence pour des raisons de sécurité. L’emplacement du fichier …

plus ...

Problème avec le téléversement automatique de Nextcloud

Depuis quelques jours la fonctionnalité de téléversement automatique de Nextcloud qui me permet d’envoyer automatiquement mes photos depuis mon téléphone Android échouait sans cesse avec une erreur:

Impossible de réaliser l’opération: le serveur n’est pas accessible

Cette erreur est un peu étrange car le reste de l’application fonctionne parfaitement. En fait elle est causée par un bogue dans la version 3.0.2 du client Android qui ne crée pas automatiquement de nouveau dossier pour le mois en cours quand vous choisissez de classer les photos par mois.

Pour résoudre temporairement ce problème il suffit de créer le dossier pour le mois en cours (nommé 03 pour mars) dans le répertoire d’envoi via l’interface web. Vous pouvez trouver plus d’information sur le problème dans le ticket Github correspondant.

plus ...

Debian 9 et IPv6 sur AWS EC2

Ce week-end j'ai configuré IPv6 sur mon infrastructure EC2 qui tourne sous Debian 9. J'ai suivi le guide fourni par AWS, mais j'ai rencontré quelques soucis, et ce guide n'a pas d'instructions pour Debian. Je vous conseille fortement de réaliser ces changements d'abord sur des instances de tests, car mes premiers essais ont rendus mes instances totalement injoignables, heureusement que ce n'étaient pas celles de prod !

Au début j'ai simplement configuré /etc/network/interfaces de la façon suivante afin d'utiliser dhcp pour IPv6:

% cat /etc/network/interfaces# 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

Mais après un redémarrage mon instance de test n'arrivait pas à configurer le réseau, et était donc injoignable et inutilisable. Après quelques tests, j'ai réalisé que le problème venait du cient DHCP installé, qui était dhcpcd. Apparemment le paquet installé sur mon système était une relique de Debian 7, car il n'est pas disponible pour les versions ultérieures ! Je l'ai donc remplacé par isc-dhcp-client.

% sudo apt install isc-dhcp-client isc-dhcp-common
% sudo apt remove dhcpcd

Après un redémarrage, tout fonctionne, mon instance obtient son adresse IPv6 !

plus ...