Ideenquelle

Homelab

Force DNS queries to specific servers - testing

J’ai l’impression qu’un de mes appareils n’utilisent pas le serveur DNS maison.
Il acquiert bien son IP via le DHCP; je ne vois rien au niveau du server DNS.
Bizarre, bizarre.

Si je mets la règle suivante sur mon switch, cela coupe toute la connexion. Pratique mais overkill.

/interface ethernet switch rule
add dst-mac-address=MAC_appareil/FF:FF:FF:FF:FF:FF new-dst-ports="" ports=port_X src-mac-address=MAC_switch/FF:FF:FF:FF:FF:FF switch=switch1
add dst-mac-address=MAC_switch/FF:FF:FF:FF:FF:FF new-dst-ports="" ports=port_X src-mac-address=MAC_appareil/FF:FF:FF:FF:FF:FF switch=switch1

Sur base de mes recherches précédentes, j’avas mis en place les deux règles suivantes :

/ip firewall nat
add action=dst-nat chain=dstnat disabled=yes dst-address=!192.168.1.2 dst-port=53 protocol=udp to-addresses=192.168.1.2
add action=dst-nat chain=dstnat disabled=yes dst-address=!192.168.1.2 dst-port=53 protocol=tcp to-addresses=192.168.1.2

Cela ne semble donc pas suffisant. Je teste donc les règles suivantes :

/ip firewall filter
add action=drop chain=forward comment="Block DoT - Force fallback to local DNS" dst-port=853 in-interface-list=LAN protocol=tcp
add action=drop chain=forward comment="Block DoT - Force fallback to local DNS" dst-port=853 in-interface-list=LAN protocol=udp
/ip firewall nat
add action=redirect chain=dstnat comment="Force Local DNS (TCP)" dst-address=!192.168.1.2 dst-port=53 protocol=tcp to-addresses=192.168.1.2 to-ports=53
add action=redirect chain=dstnat comment="Force Local DNS (UdP)" dst-address=!192.168.1.2 dst-port=53 protocol=udp to-addresses=192.168.1.2 to-ports=53

J’ai trouvé cela sur les Internets 1 2.
J’espère que cela va fonctionner et pas tout déglinguer.

Hetzner Boxstorage

J’ai commencé à mettre en place une stratégie de backup. Je dis bien commencé car elle n’est pas finie : il manque des documents et de l’automatisation à 100%. J’avance petit à petit.

Je dois rajouter qu, pour Hetzner Box Storage, l’adresse pour se connecter est ssh://user_id@user_id.your-storagebox.de:23/./

Un dossier que je devrais encore finir

Accéder à un disque dur sans Samba depuis Windows

Je souhaitais accéder à un disque situé sur un serveur Debian depuis un PC sous Windows. Vu que je ne souhaite pas prévoir un accès dans le temps, j’ai écarté la solution Samba.

J’avais une solution entre deux ordinateurs sous Debian avec sshfs. J’aurais pu faire de même avec Windows. Mais … il y a toujours un mais (sinon je n’écrirai pas !) les limitations imposées par le sysadmin font que je ne peux pas installer les applications pour utiliser SSHFS Pour mémoire : il faut installer WinFsp et SSHFS-Win

Solution mise en place : WinSCP L’application est portable. Elle est plein de fonctionnalités (filter sur les fichiers, file d’attente, … ). Il est également possible de copier d’abord la structure des dossiers puis d’y copier les fichiers.

Monter un disque via WebDav

  1. Créer un dossier où sera monté le disque : sudo mkdir /mnt/dav
  2. Installer davfs2 sudo apt install davfs2
  3. (re-)Configurer le paquet pour autoriser son utilisation par des utilisateurs moins privilégiés : sudo dpkg-reconfigure davfs2
  4. Editer ~/.davfs2/secrets pour ajouter les identifiants au disque via WebDAV :
  1. Ajouter une ligne dans /etc/fstab selon le modèle suivant : https://<WebDAV URI> /mnt/dav/ davfs user,noauto,file_mode=600,dir_mode=700 0 1
  2. Relancer systemd systemctl daemon-reload
  3. Ajouter son utilisateur au groupe davfs2 sudo usermod -a -G davfs2 username (Je pense même que sudo usermod -a -G davfs2 $USER devrait fonctionner si on veut s’ajouter soi-même).
  4. Déconnecter et (se) relogger (pour que l’ajout au groupe soit effectif).
  5. C’est tout ! Il est possible d’utiliser mount /mnt/dav/ sans soucis.

Pratique si vous souhaitez accéder (temporairement) à votre kDrive d’Infomaniak.

goaway, alternative à PiHole

Juste pour information : il existe une alternative à PiHole : goaway. C’est écrit en Go, récent et graphiquement très similaire à PiHole (du moins la page de garde).

qBittorent

  1. Installer qBittorent Il existe deux versions : une version GUI local (qbittorrent) et une version Web GUI (qbittorrent-nox). Pour installer, il faut invoquer sudo apt-get install qbittorrent ou sudo apt-get qbittorrent-nox

  2. Lancer qBittorrent Cela se fait en utilisant une des commandes : qbittorent ou qbittorrent-nox

  3. Lancement de qBittorent à chaque redémarrage Pour permettre le lancement de qBittorent à chaque (re-)démarrage du système, il faut le renseigner comme un service.

    1. Dans les explications que j’ai suivies, il préconise de créer un nouvel utilisateur. J’avoue ne pas avoir compris pourquoi. sudo useradd -r -m qbittorrent L’argument -r est utilisé pour signaler que nous voulons un utilisateur système. L’argument -m est utilisé pour créer son répertoire parent/propre.
    2. Il faut rajouter l’utilisateur au groupe qbittorrent juste créé : sudo usermod -a -g qbittorrent $USER L’argument -a est utilisé pour ajouter un attribut à l’utilisateur. L’argument -G est utilisé pour signaler que c’est sur un groupe que l’on travaille.
    3. Maintenant, nous pouvons créer le service en créant le fichier suivant /etc/systemd/system/qbittorrent.service (il faut le créer en tant que sudo) :
Description=qBittorrent
After=network.target

[Service]
Type=forking
User=qbittorrent
Group=qbittorrent
UMask=002
ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=8080
Restart=on-failure

[Install]
WantedBy=multi-user.target
Personnellement, j'ai d'abord lancé `qbittorrent-nox` et configuré tout dans l'interface via mon utilisateur. J'ai donc modifié l'user pour mettre le mien.

1. Il faut démarrer le service nouvellement créé : `sudo systemctl start qbittorrent`
1. Il est possible de vérifier le status du service : `sudo systemctl status qbittorrent`
1. Pour permettre que le service s'active à chaque démarrage, il faut activer le service : `sudo systemctl enable qbittorrent`
  1. Modifier le port pour accéder Si besoin, modifier le port auquel accéder à GUI Web (utile si vous avez de multiples services). Personnellement, je l’ai mis sur 49152.

  2. Ignorer l’authentification pour les clients avec une adresse IP spécifique Dans Options/IU Web > Nécessite une authentification, cocher les deux options commençant par “Ignorer […]” et rajouter les lignes suivantes dans l’encadré :

127.0.0.1/32
192.168.1.0/24
  1. Rediriger l’adresse via nginx J’utilise personnellement nginx Proxy Manager. Aller dans Hosts > Proxy Hosts > Add Proxy Host.
Domain Names : qbit.lan
Scheme : http
IP : 192.168.1.2
Forward port : 49152

Cela fonctionne très bien … sauf avec le point précédent. Pour éviter l’authentification, il faut configurer un Redirection Host

Domaine Names : qbit.lan
Scheme: http # en laissant à 'auto', une erreur est générée
Forward domain: 192.168.1.2:49152
HTTP Code : 308 Permanent redirect
Preserve Path : OK

Serveur DLNA

Nous avons une vieille télévision : elle date de 2010. Elle est smart. Sauf que … Avec le temps, les applications smart ont disparu, faute de support des éditeurs de logiciels (RTBF, Arte, …).

Elle possède toute de même une fonctionnalité qui est native : DLNA. Il s’agit de lire des données (vidéo, audio, photo) sur le réseau. Pour cela, il faut un serveur qui émet les données. Chez nous, notre box Internet permet cela nativement pour les supports USB qu’on y insère. Pas pratique si on souhaite modifier régulièrement ce que l’on regarde.

Nous avons trouvé une application : Serviio. Pratique et facile, bref assez simple pour que Madame et moi l’utilisions essentiellement pour les enfants. Ce qui est moins cool, c’est que cela fonctionne sous Java. Lors du passage de Windows à Linux, j’ai cherché une alternative.

Elles existent :

Les tutoriels (parfois anciens) fonctionnent assez bien. Il y a pour l’un des deux un soucis dans les tutoriels par rapport aux droits d’accès. Rien à redire mise à part … à moins que ? Naturellement, il y a un “Mais”. Mais, pour une raison que j’ignore, la télévision n’affiche pas les dossiers ; tous les fichiers sont à la racine. ce qui rend impraticable le choix de la vidéo.

Bref, pas de choix: je réinstalle Serviio (sur Linux cette fois) et bim, bam, cela fonctionne. Il ne me reste plus qu’à vérifier s’il est possible d’ajouter des images pour illustrer les dossiers (plus facile pour que le dernier comprenne ce qu’il choisit).

Installation

  1. Installer les dépendances : Java, sous son package openjdk, ffmpeg et x264. Cela se fait simplement avec un apt install openjdk -*-jdk ffmpeg x264. Il faut vérifier la dernière version de openjdk (aujourd’hui, c’est le 25).
  2. Téléchargement et installation de Serviio : Sur le site de Serviio, il faut vérifier le numéro de la dernière version (aujourd’hui, c’est la 2.4). Pour le récupérer : wget http://download.serviio.org/releases/serviio-2.4-linux.tar.gz Pour le décompresser (ici, on le met dans /opt) : tar -xzvf serviio-2.4-linux.tar.gar -C /opt
  3. Permettre à Serviio d’être lancé au boot. Vu que nous avons juste décompressé l’application dans /opt, le système ne sait pas comment lancer au boot Serviio ni surveiller qu’il fonctionne en continu. Nous allons le renseigner en créant un service pour systemd. Pour commencer, nous allons écrire un fichier dans /lib/systemd/system/serviio.services :
[Unit]
Description=Serviio media Server
After=syslog.target network.target

[Service]
User=serviio
ExecStart=/opt/serviio-2.4/bin/serviio.sh
ExecStop=/opt/serviio-2.4/bin/serviio.sh -stop

[Install]
WantedBy=multi-user.target

Ici, nous lançons l’application avec l’utilisateur serviio. Il faut créer cet utilisateur avec useradd -r -U -s /bin/false serviio puis lui donner les accès au dossier serviio avec chown -R serviio:serviio /opt/serviio-2.4/.

  1. Rendre le service accessible avec systemctl enable serviio.service
  2. Vérifier le status avec systemctl status serviio.service. S’il n’est pas lancé, nous le lançons : systemctl start serviio.service.
  3. Configurer Serviio via sa console Web. Elle est accessible via http://IP_Machine:23423/console

Source:

Linuxconfig - How to install Serviio media server on Raspberry Pi

Pi-Hole

PiHole permet de filtrer les requetes depuis le réseau vers l’extérieur. Le routeur Internet ne sert plus qu’à se connecter au réseau. Tout ce qui est DNS (= savoir où se trouve Google.com sur le réseau) et l’attribution des adresses IP sur le réseau (=DHCP) est géré par Pi-Hole.

  1. Installation Le site de Pi-Hole renseigne la méthode pour installer Pi-Hole. https://docs.pi-hole.net/main/basic-install/ donne la commande suivant : curl -sSL https://install.pi-hole.net | bash à lancer dans la ligne de commande en tant que sudo.

  2. Ajouter votre user dans le groupe ‘pihole’ : sudo usermod -aG pihole $USER

  3. Configurer Pi-Hole

  4. Ajouter un DNS Alternatif Sebsauvage propose une liste de DNS alternatif : https://sebsauvage.net/wiki/doku.php?id=dns-alternatifs. Personnellement, je n’ai pas su configurer celle de Mullvad.

  5. Créer des groupes de clients et assigner les clients au groupe

  6. Ajouter des listes de blocages https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts est la liste de base. https://sebsauvage.net/hosts/hosts est celle de SebSauvage. Elle est régulièrement mise à jour. https://github.com/hagezi/dns-blocklists en propose une série. La version Multi Pro est la plus utilisée. Elle peut être complétée avec d’autres sous-listes. Quand toutes les listes sont ajoutées, il faut encore (re-)constituer la base de données de Pi-Hole soit via l’interface web (dans Tools / Update Gravity) soit via la ligne de commande : pihole -g

  7. Passer en revue toutes les options dans Settings.

  8. Configurer votre serveur Pi-Hole avec une ip statique.

  9. Configurer votre routeur pourqu’il cède la gestion des DNS et du DHCP à votre Pi-Hole.

  10. Avertir vos utilisateurs que certains sites peuvent être bloqués. Il suffit de vous le signaler ;-)

Et si je veux donner un nom à mes machines ?

Pourquoi un nom ? Parce que c’est parfois plus facile de retenir cela qu’une adresse IP. En réalité, la procédure est identique et peut être fait parallèlement. Pour cela, se rendre dans Settings > DHCP puis activier l’interface Expert en cliquant sur l’onglet vert Basic. Apparait alors tout en bas un cadre Static DHCP configuration. Pour chaque ligne, vous spécifier l’adresse MAC puis l’adresse IP fixe et/ou le nom de la machine. Tout est séparé par une virgule. Par exemple : d8:d4:3c:f3:c5:49,192.168.1.20,mamachine Personnellement, j’ai mis :

Pourquoi donner un nom ?

Cela permet alors de fixer le nom dans le menu Clients (plus facilement qu’avec les options proposées dans le drop-down) et donc d’identifier la machine dans Query Log.

Retour d’expérience

Pihole était d’abord installé sur un Raspberry Pi 4 - 4 GO avec Raspberry OS en version desktop. Régulièrement, Pihole affichait une charge importante. J’ai fait l’acquisition du même Raspberry mais avec une version light/sans desktop. La charge est toujours faible et aucun ralentissement. A voir quand il y aura plus d’utilisateurs sur le réseau.

Installation Raspberry Pi

Et voilà, c’est reparti. Après une petite erreur de manipulation sur des droits de fichiers (genre su et sudo), me revoici derrière le clavier.

À mon programme:

La liste évoluera avec le temps.