Maîtriser le fichier Hosts Linux : Le guide complet du contrôle DNS local
Que vous soyez un développeur testant une nouvelle application, un sysadmin dépannant la propagation DNS, ou simplement quelqu’un qui souhaite bloquer des sites distrayants, le fichier /etc/hosts est l’un des outils les plus puissants et sous-utilisés de tout système Linux. Ce guide fournit une explication approfondie et pratique de tout ce que vous devez savoir — de la compréhension de ce qu’est le fichier hosts à son édition sécurisée dans votre environnement VPS Hosting.
1. Qu’est-ce que le fichier Hosts ?
Le fichier hosts est un fichier système en texte brut qui mappe les noms d’hôtes lisibles par l’homme — tels que www.example.com — à leurs adresses IP correspondantes. Il fonctionne comme un résolveur DNS local et statique, et de manière cruciale, il est consulté par le système d’exploitation *avant* toute requête DNS externe.
Cela signifie que les entrées de votre fichier hosts ont une priorité absolue sur les enregistrements DNS renvoyés par les serveurs de noms externes. Cette seule caractéristique en fait un outil incroyablement polyvalent pour :
- Les environnements de développement local — Testez un site web sous un domaine réaliste sans toucher aux enregistrements DNS en direct.
- Le dépannage DNS — Forcez temporairement un domaine à se résoudre à une IP spécifique pour tester les configurations du serveur.
- Le blocage de sites web — Redirigez les domaines indésirables vers une adresse non routable, bloquant efficacement l’accès.
- Les tests de staging et de pré-lancement — Prévisualisez une nouvelle configuration de serveur avant de basculer DNS globalement.
- La sécurité réseau — Bloquez les domaines malveillants connus au niveau du système d’exploitation.
> Note technique : Sur Linux, l’ordre de résolution est régi par le fichier /etc/nsswitch.conf. La configuration par défaut place généralement files (c’est-à-dire /etc/hosts) avant dns, garantissant que les entrées locales sont toujours vérifiées en premier.
2. Où se trouve le fichier Hosts sur Linux ?
Sur toutes les principales distributions Linux — y compris Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux et Arch Linux — le fichier hosts se trouve à :
/etc/hostsCe chemin est cohérent entre les distributions, ce qui facilite le travail quel que soit votre environnement. Le fichier est détenu par root et nécessite des privilèges élevés pour être modifié.
Contenu par défaut de /etc/hosts
Un serveur Linux nouvellement provisionné — tel qu’un serveur exécuté sur AlexHost VPS Hosting — contient généralement des entrées par défaut similaires à ce qui suit :
127.0.0.1 localhost
127.0.1.1 your-hostname.example.com your-hostname
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersCes entrées garantissent que :
localhost se résout toujours à l’adresse de boucle locale 127.0.0.1 (IPv4) et ::1 (IPv6).
Le nom d’hôte du serveur se résout localement sans nécessiter une recherche DNS externe.
Ne supprimez pas ces entrées par défaut sauf si vous avez une raison spécifique et bien comprise de le faire. Les supprimer peut causer un comportement inattendu dans les services système, la livraison des e-mails et les frameworks d’application.
3. Comprendre la structure du fichier Hosts
Le fichier hosts suit un format simple et cohérent. Chaque ligne non vide et non commentée représente un mappage unique et adhère à cette syntaxe :
IP_address hostname [alias1] [alias2] ...
Champ
Description
IP_address
L’adresse IPv4 ou IPv6 vers laquelle le nom d’hôte doit être résolu
hostname
Le nom de domaine complet (FQDN) principal ou le nom d’hôte court
alias (optionnel)
Un ou plusieurs noms supplémentaires qui doivent être résolus vers la même adresse IP
Règles de formatage clés
Espaces : Les champs sont séparés par des espaces ou des tabulations. Plusieurs espaces sont acceptables.
Commentaires : Tout texte suivant un caractère # sur une ligne est traité comme un commentaire et ignoré par le système.
Sensibilité à la casse : Les noms d’hôtes ne sont pas sensibles à la casse en pratique, mais les minuscules sont la convention.
Une adresse IP par ligne : Chaque ligne commence par exactement une adresse IP, suivie d’un ou plusieurs noms d’hôtes.
Exemples pratiques
Mapper un domaine unique à localhost :
127.0.0.1 example.com
Mapper plusieurs noms d’hôtes vers la même adresse IP sur une seule ligne :
127.0.0.1 example.com www.example.com staging.example.com
Bloquer un domaine en le pointant vers une adresse non routable :
0.0.0.0 ads.tracker.com
Forcer un domaine à se résoudre vers une adresse IP de serveur distant spécifique :
203.0.113.42 mywebsite.com www.mywebsite.com
Ajouter des commentaires en ligne pour la documentation :
# Local development environment - Project Alpha
127.0.0.1 alpha.local api.alpha.local
# Blocked domains - updated 2025-01-15
0.0.0.0 malicious-site.com
4. Comment éditer le fichier Hosts sur Linux (Étape par étape)
Parce que /etc/hosts est un fichier de configuration système, vous avez besoin de privilèges root ou sudo pour le modifier. Voici un flux de travail complet et sûr pour la production.
Étape 1 : Créer une sauvegarde avant d’éditer
C’est une bonne pratique non négociable. Sauvegardez toujours le fichier avant d’apporter des modifications :
sudo cp /etc/hosts /etc/hosts.bak
Vous pouvez vérifier que la sauvegarde a été créée :
ls -lh /etc/hosts*
Si quelque chose se passe mal, restaurez-le instantanément avec :
sudo cp /etc/hosts.bak /etc/hosts
Étape 2 : Ouvrir le fichier Hosts avec un éditeur de texte
Utilisation de nano (recommandé pour les débutants et les éditions rapides) :
sudo nano /etc/hosts
nano est convivial, affiche les raccourcis clavier en bas de l’écran et est disponible par défaut sur pratiquement toutes les distributions Linux.
Utilisation de vim (préféré par les administrateurs expérimentés) :
sudo vim /etc/hosts
Utilisation de vi (disponible sur les installations minimales) :
sudo vi /etc/hosts
Étape 3 : Ajouter, modifier ou supprimer des entrées
Une fois le fichier ouvert, accédez à l’emplacement approprié et apportez vos modifications. Voici les opérations les plus courantes :
Ajouter un nouveau mappage (ajouter à la fin du fichier) :
127.0.0.1 myproject.local www.myproject.local
Bloquer un site web :
0.0.0.0 facebook.com www.facebook.com
Remplacer DNS pour un domaine (par exemple, pour tester un nouveau serveur) :
198.51.100.25 mywebsite.com www.mywebsite.com
Étape 4 : Enregistrer et quitter l’éditeur
Dans nano :
Appuyez sur CTRL + O pour écrire (enregistrer) le fichier.
Appuyez sur Enter pour confirmer le nom du fichier.
Appuyez sur CTRL + X pour quitter.
Dans vim ou vi :
Appuyez sur Esc pour vous assurer que vous êtes en mode commande.
Tapez :wq et appuyez sur Enter pour écrire et quitter.
Pour quitter sans enregistrer, tapez :q! et appuyez sur Enter.
Étape 5 : Vérifier la syntaxe de vos modifications
Avant de tester, confirmez visuellement que vos entrées sont correctes :
cat /etc/hosts
Vous pouvez également utiliser grep pour trouver rapidement une entrée spécifique :
grep "myproject.local" /etc/hosts
Étape 6 : Tester les nouveaux mappages
Utilisez ping pour vérifier que le nom d’hôte se résout à l’adresse IP attendue :
ping -c 4 myproject.local
Pour un domaine bloqué (mappé à 0.0.0.0 ou 127.0.0.1), le ping devrait échouer ou revenir immédiatement :
ping -c 2 facebook.com
Vous pouvez également utiliser getent pour une recherche plus directe dans le fichier hosts :
getent hosts myproject.local
Cette commande interroge la pile de résolution de noms du système (y compris /etc/hosts) et retourne l’IP résolue, ce qui la rend plus fiable que ping à des fins de vérification.
5. Cas d’usage courants du fichier Hosts
5.1. Développement Web local
C’est sans doute le cas d’usage le plus courant parmi les développeurs. Au lieu d’accéder à votre projet local via http://localhost:3000 ou http://127.0.0.1:8080, vous pouvez assigner un nom de domaine significatif, semblable à la production.
Exemple de configuration :
Ajoutez à /etc/hosts :
127.0.0.1 myproject.local api.myproject.local admin.myproject.local
Après avoir enregistré, naviguez vers http://myproject.local dans votre navigateur. Votre requête sera résolue localement sans jamais contacter un serveur DNS externe.
Cette approche est particulièrement utile quand :
Votre application utilise l’hébergement virtuel et nécessite un en-tête Host spécifique.
Vous testez des certificats SSL localement (en utilisant des certificats auto-signés mappés à un nom de domaine approprié).
Vous devez simuler une architecture multi-sous-domaines (par exemple, api., admin., cdn.).
Si vous exécutez plusieurs projets sur un VPS avec cPanel, le fichier hosts peut également vous aider à tester les configurations de domaine avant que la propagation DNS soit complète.
5.2. Blocage de sites Web indésirables
Le fichier hosts est un bloqueur de contenu léger, sans dépendances. En redirigeant un domaine vers 0.0.0.0 (préféré à 127.0.0.1 car il échoue plus rapidement sans tentative de connexion), vous pouvez bloquer l’accès au niveau du système d’exploitation — affectant tous les navigateurs et applications simultanément.
Bloquez les distractions des réseaux sociaux :
0.0.0.0 facebook.com www.facebook.com
0.0.0.0 twitter.com www.twitter.com
0.0.0.0 reddit.com www.reddit.com
Bloquez les domaines connus de diffusion d’annonces ou de suivi :
0.0.0.0 doubleclick.net
0.0.0.0 ads.google.com
0.0.0.0 tracking.example-analytics.com
> Conseil pro : Les listes de blocage maintenues par la communauté (comme celles du projet StevenBlack hosts) compilent des dizaines de milliers de domaines publicitaires, de suivi et de malveillance dans un format de fichier hosts, que vous pouvez fusionner dans votre /etc/hosts.
5.3. Test de serveur avant lancement et basculement DNS
Lors de la migration d’un site Web vers un nouveau serveur — par exemple, en passant de l’Hébergement Web Partagé à un Serveur Dédié — la propagation DNS peut prendre de quelques minutes à 48 heures. Le fichier hosts vous permet de prévisualiser le nouveau serveur immédiatement, depuis votre machine locale uniquement, sans affecter les autres utilisateurs.
Scénario : Vous migrez mywebsite.com vers un nouveau serveur à l’IP 203.0.113.42.
Ajoutez à votre /etc/hosts local :
203.0.113.42 mywebsite.com www.mywebsite.com
Maintenant, quand vous visitez mywebsite.com dans votre navigateur, vous verrez le contenu du nouveau serveur. Les autres visiteurs dans le monde verront toujours l’ancien serveur jusqu’à ce que DNS se propage. Une fois que vous avez confirmé que tout fonctionne correctement, supprimez l’entrée et laissez DNS prendre le relais.
Cette technique est inestimable pour :
Vérifier la configuration du serveur Web avant le lancement.
Tester les Certificats SSL sur le nouveau serveur.
Confirmer le routage des e-mails et le comportement de l’application après la migration.
5.4. Contournement des défaillances de résolution DNS
Si un serveur DNS est temporairement indisponible ou retourne des résultats incorrects, vous pouvez utiliser le fichier hosts comme remplacement d’urgence pour restaurer la connectivité aux services critiques.
Exemple :
# Emergency override - DNS server outage 2025-01-15
198.51.100.10 internal-api.company.com
198.51.100.11 database.company.com
N’oubliez pas de supprimer ces entrées une fois que le problème DNS sous-jacent est résolu pour éviter que des mappages obsolètes ne causent de la confusion à l’avenir.
5.5. Environnements de développement multi-serveurs
Dans les configurations de développement complexes avec plusieurs machines virtuelles ou conteneurs, le fichier hosts peut mapper des noms conviviaux à chaque service :
192.168.1.10 db.local # Database server
192.168.1.11 cache.local # Redis/Memcached
192.168.1.12 queue.local # Message broker
192.168.1.13 search.local # Elasticsearch
Cela élimine le besoin de mémoriser les adresses IP et rend les fichiers de configuration plus lisibles et portables.
6. Vider le cache DNS après les modifications
Sur la plupart des systèmes Linux modernes, les modifications apportées à /etc/hosts prennent effet immédiatement pour les nouvelles connexions. Cependant, si votre système ou vos applications mettent en cache les réponses DNS, vous devrez peut-être vider ce cache pour vous assurer que les nouveaux mappages sont utilisés immédiatement.
Pour les systèmes utilisant systemd-resolved (Ubuntu 18.04+, Debian 10+, la plupart des distributions modernes) :
sudo systemctl restart systemd-resolved
Ou, pour vider le cache sans redémarrage complet :
sudo resolvectl flush-caches
Vérifiez que le cache a été vidé :
sudo resolvectl statistics
Pour les systèmes utilisant nscd (Name Service Cache Daemon) :
sudo systemctl restart nscd
Pour les systèmes utilisant NetworkManager :
sudo systemctl restart NetworkManager
Pour les systèmes utilisant dnsmasq :
sudo systemctl restart dnsmasq
Vérifier quel résolveur DNS votre système utilise
systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
> Caches du navigateur : Notez que les navigateurs web maintiennent leur propre cache DNS interne, indépendant du système d’exploitation. Après modification de /etc/hosts, vous devrez peut-être également vider le cache DNS de votre navigateur. Dans Chrome/Chromium, accédez à chrome://net-internals/#dns et cliquez sur Effacer le cache d’hôte.
7. Bonnes pratiques et considérations de sécurité
✅ Toujours sauvegarder avant de modifier
sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
L’utilisation d’un horodatage dans le nom du fichier de sauvegarde vous permet de suivre plusieurs versions.
✅ Utiliser des commentaires pour documenter vos modifications
# Added 2025-01-15 by admin@example.com - staging server test
203.0.113.42 staging.mywebsite.com
C’est particulièrement important dans les environnements d’équipe où plusieurs personnes peuvent accéder au serveur.
✅ Supprimer les entrées temporaires rapidement
Les entrées ajoutées pour les tests ou les remplacements d’urgence doivent être supprimées dès qu’elles ne sont plus nécessaires. Les entrées obsolètes peuvent causer des problèmes de connectivité difficiles à diagnostiquer des mois plus tard.
✅ Valider votre syntaxe
Une entrée de fichier hosts mal formée ne causera pas un crash système, mais elle échouera silencieusement à se résoudre. Vérifiez toujours vos entrées avec :
getent hosts <hostname>
⚠️ Avertissement de sécurité : Détournement du fichier hosts
Les logiciels malveillants modifient parfois /etc/hosts pour rediriger les domaines légitimes (tels que les sites bancaires ou les serveurs de mise à jour) vers des adresses IP contrôlées par des attaquants. C’est un vecteur d’attaque connu appelé détournement du fichier hosts.
Protégez-vous en :
Définissant des permissions de fichier restrictives : sudo chmod 644 /etc/hostsauditd ou AIDE.cat /etc/hosts⚠️ Le fichier hosts n’est pas un substitut à un DNS approprié
Pour les environnements de production, le fichier hosts ne doit être utilisé que pour les remplacements temporaires et le développement local. Pour la gestion permanente des domaines, utilisez toujours des enregistrements DNS appropriés. Si vous avez besoin d’enregistrer et de gérer des domaines de manière professionnelle, Enregistrement de domaine par un fournisseur fiable garantit que votre infrastructure DNS est robuste et évolutive.
8. Conclusion
Le fichier /etc/hosts est un outil déceptivement simple mais remarquablement puissant dans la boîte à outils de chaque administrateur Linux et développeur. Sa capacité à remplacer la résolution DNS localement — avec une latence nulle, aucune dépendance externe et aucun changement d’infrastructure — le rend indispensable pour :
- Les développeurs construisant et testant des applications localement.
- Les administrateurs système gérant les migrations de serveurs et les fenêtres de basculement DNS.
- Les utilisateurs soucieux de sécurité bloquant les domaines malveillants ou indésirables.
- Les ingénieurs DevOps orchestrant des environnements locaux multi-services.
Les points clés de ce guide :
| Tâche | Commande / Action |
|---|---|
| Ouvrir le fichier hosts | sudo nano /etc/hosts |
| Sauvegarder avant modification | sudo cp /etc/hosts /etc/hosts.bak |
| Vérifier un mappage | getent hosts <hostname> |
| Tester avec ping | ping -c 4 <hostname> |
| Vider le cache DNS | sudo resolvectl flush-caches |
| Restaurer à partir de la sauvegarde | sudo cp /etc/hosts.bak /etc/hosts |
Que vous exécutiez un environnement de développement léger ou que vous gériez une flotte de serveurs de production sur AlexHost VPS Hosting, maîtriser le fichier hosts est une compétence fondamentale qui porte ses fruits chaque fois que vous avez besoin d’un remplacement DNS local rapide et fiable. Modifiez en toute confiance, documentez vos modifications et conservez toujours une sauvegarde — bon routage !
sur tous les services d'hébergement