Les fichiers hosts et hostname
hostname
Le fichier /etc/hostname contient le nom d'hôte de l'ordinateur. Celui-ci est utilisé pour identifier la machine sur un réseau, et apparaît dans l'invite de commande (prompt) du terminal.
Sa modification requiert les permissions administrateur en l'éditant avec votre éditeur préféré, ou en entrant depuis un terminal :
sudo sh -c "echo nouveau_nom_du_pc > /etc/hostname"
Un redémarrage est nécessaire pour la prise en compte.
De façon temporaire on peut simplement utiliser la commande hostname :
sudo hostname nouveau_nom_du_pc
hosts
Le fichier /etc/hosts est consulté par tous les systèmes d'exploitations lors de l'accès à Internet, avant l'accès au serveur DNS, afin de résoudre une adresse IP. C'est un simple fichier qui associe, en les déclarant sur une même ligne, une adresse IP à un nom de domaine. Le fichier hosts est l'ancêtre des DNS utilisé sur ARPANET.
Ce fichier permet de :
- définir les noms des machines sur un réseau (privé ou public)
- bloquer l'accès à un site Internet
- le rediriger
- bloquer les publicités
- dans une certaine mesure améliorer l'accès à certains sites.
Il peut être utile pour protéger un ordinateur, empêcher un enfant (par exemple) d'accéder à un site particulier.
hosts n'est cependant utile ni fonctionnelle que pour la machine sur laquelle il se trouve, et facilement contournable. Pour définir (ou bloquer) plus largement des noms de domaine, que ce soit sur Internet ou sur un réseau privé, on préférera généralement utiliser d'autres méthodes, qui s'appliqueront à plusieurs machines (voir mDNS, NetBIOS, les serveurs DNS, le projet Pi-hole, ou PeerGuardian).
Trouver et modifier le fichier hosts
Le fichier hosts se trouve dans /etc/. Son chemin est donc /etc/hosts.
sudo cp -av /etc/hosts /etc/hosts.bak.$(date -d "yesterday" '+%Y-%m-%d')
hosts sont cruciales. N'y touchez pas si vous ne savez pas exactement ce que vous faites – au risque de rendre la machine inutilisable.
Pour modifier le fichier hosts, il faut les permissions administrateur.
En ligne de commande :
sudo nano /etc/hosts
Pour enregistrer : Ctrl+O puis Entrée. Pour quitter : Ctrl+X.
En mode graphique :
- Copier le fichier (sans changer son nom) dans le répertoire personnel (et pas dans un de ses sous-répertoires) :
cp -v /etc/hosts ~
- Modifier cette copie avec votre éditeur de texte favori.
- L'enregistrer (toujours sans changer son nom).
- Le déplacer dans
/etc/(c'est la seule opération qui requiert les permissions administrateur) :sudo mv -v ~/hosts /etc/hosts
/etc/hosts est instantanément appliquée par le système.
Utiliser le fichier hosts pour bloquer des sites web
En définissant comme adresse IP une adresse autre, on peut empêcher l'accès à certains sites web, ou bloquer les publicités.
La plupart du temps c'est l'adresse de la boucle locale 127.0.0.1 qui est utilisée, cependant il est conseillé d'utiliser 0.0.0.0 à la place car il n'y a pas d'attente de timeout. Résultat : beaucoup moins de lenteurs. De plus, de cette façon, le fichier hosts n'interfère pas avec les serveurs Web qui peuvent être hébergés en local.
systemd-resolved est utilisé comme résolveur DNS par défaut et un trop gros fichier hosts (plusieurs Mo) peut bloquer complètement l'accès à internet.
Divers fichiers hosts
On trouve sur le web des fichiers hosts listant des noms de domaine à bloquer. On peut les utiliser et les inclure dans son propre fichier /etc/hosts pour bloquer de très nombreux domaines. Cependant pour être efficace, ces listes devraient être mises à jour en permanence au moyen d'un utilitaire (voir les scripts proposés avec ces listes).
Cette liste n'est pas exhaustive. Les liens sont classés par ordre alphabétique.
D'autres listes et sources sont disponibles sur GitHub :
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts (bloque principalement les sites interdits aux mineurs)
- https://github.com/Ultimate-Hosts-Blacklist/Ultimate.Hosts.Blacklist (fournit également un fichier hosts.deny)
