Maîtriser le fichier Hosts Linux : Le guide complet pour le contrôle DNS local
Que vous soyez un développeur testant une nouvelle application, un administrateur système résolvant des problèmes de propagation DNS, ou simplement quelqu’un qui souhaite bloquer des sites Web distrayants, le fichier /etc/hosts est l’un des outils les plus puissants et les moins utilisés de tout système Linux. Ce guide fournit une présentation approfondie et pratique de tout ce que vous devez savoir — de la compréhension du fichier hosts à sa modification en toute sécurité sur votre environnement VPS Hosting.
Table des matières
- Qu’est-ce que le fichier Hosts ?
- Où se trouve le fichier Hosts sur Linux ?
- Comprendre la structure du fichier Hosts
- Comment modifier le fichier Hosts sur Linux (étape par étape)
- Cas d’utilisation courants du fichier Hosts
- Vider le cache DNS après les modifications
- Bonnes pratiques et considérations de sécurité
- Conclusion
1. Qu’est-ce que le fichier Hosts ? {#what-is-the-hosts-file}
Le fichier hosts est un fichier système en texte brut qui associe des 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 surtout, 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 production.
- Le dépannage DNS — Forcez temporairement un domaine à se résoudre vers une IP spécifique pour tester des configurations serveur.
- Le blocage de sites Web — Redirigez les domaines indésirables vers une adresse non routable, bloquant ainsi efficacement l’accès.
- Les tests de staging et de pré-lancement — Prévisualisez une nouvelle configuration serveur avant de basculer le 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 ? {#location}
Sur toutes les principales distributions Linux — notamment Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux et Arch Linux — le fichier hosts est situé à :
/etc/hostsCe chemin est cohérent entre les distributions, ce qui facilite le travail quel que soit votre environnement. Le fichier appartient à root et nécessite des privilèges élevés pour être modifié.
Contenu par défaut de /etc/hosts
Un serveur Linux fraîchement provisionné — tel que celui fonctionnant sur AlexHost VPS Hosting — contiendra généralement des entrées par défaut similaires aux suivantes :
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 vers l’adresse de bouclage 127.0.0.1 (IPv4) et ::1 (IPv6).
Le nom d’hôte du serveur se résout localement sans nécessiter de recherche DNS externe.
Ne supprimez pas ces entrées par défaut à moins d’avoir une raison spécifique et bien comprise de le faire. Les supprimer peut provoquer un comportement inattendu dans les services système, la distribution des e-mails et les frameworks d’application.
3. Comprendre la structure du fichier Hosts {#structure}
Le fichier hosts suit un format simple et cohérent. Chaque ligne non vide et non commentée représente un mappage unique et respecte cette syntaxe :
IP_address hostname [alias1] [alias2] ...
Champ
Description
IP_address
L’adresse IPv4 ou IPv6 vers laquelle le nom d’hôte doit se résoudre
hostname
Le nom de domaine complet (FQDN) principal ou le nom d’hôte court
alias (optionnel)
Un ou plusieurs noms supplémentaires devant se résoudre vers la même IP
Règles de formatage clés
Espaces blancs : 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 sont insensibles à la casse en pratique, mais la convention est d’utiliser des minuscules.
Une IP par ligne : Chaque ligne commence par exactement une adresse IP, suivie d’un ou plusieurs noms d’hôtes.
Exemples pratiques
Associer un seul domaine à localhost :
127.0.0.1 example.com
Associer plusieurs noms d’hôtes à la même 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 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 modifier le fichier Hosts sur Linux (étape par étape) {#editing}
Étant donné 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écurisé pour la production.
Étape 1 : Créer une sauvegarde avant de modifier
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*
En cas de problème, restaurez-la 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 modifications rapides) :
sudo nano /etc/hosts
nano est convivial, affiche les raccourcis clavier en bas de l’écran et est disponible sur pratiquement toutes les distributions Linux par défaut.
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, naviguez jusqu’à l’emplacement approprié et effectuez 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 le 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 d’être 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 semblent 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 vers l’adresse IP attendue :
ping -c 4 myproject.local
Pour un domaine bloqué (mappé vers 0.0.0.0 ou 127.0.0.1), le ping devrait échouer ou retourner 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, la rendant plus fiable que ping à des fins de vérification.
5. Cas d’utilisation courants du fichier Hosts {#use-cases}
5.1. Développement Web local
C’est sans doute le cas d’utilisation 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 attribuer un nom de domaine significatif ressemblant à la production.
Exemple de configuration :
Ajouter à /etc/hosts :
127.0.0.1 myproject.local api.myproject.local admin.myproject.local
Après l’enregistrement, naviguez vers http://myproject.local dans votre navigateur. Votre requête se résoudra localement sans jamais contacter un serveur DNS externe.
Cette approche est particulièrement utile lorsque :
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 la fin de la propagation DNS.
5.2. Blocage des 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 simultanément tous les navigateurs et applications.
Bloquer 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
Bloquer les domaines de publicité ou de suivi connus :
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 malware dans un format de fichier hosts unique, que vous pouvez fusionner dans votre /etc/hosts.
5.3. Tests 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 immédiatement le nouveau serveur, 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.
Ajouter à votre /etc/hosts local :
203.0.113.42 mywebsite.com www.mywebsite.com
Maintenant, lorsque 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’à la propagation DNS. Une fois que vous avez confirmé que tout fonctionne correctement, supprimez l’entrée et laissez le DNS prendre le relais.
Cette technique est indispensable pour :
Vérifier la configuration du serveur Web avant la mise en production.
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 échecs de résolution DNS
Si un serveur DNS est temporairement indisponible ou renvoie des résultats incorrects, vous pouvez utiliser le fichier hosts comme remplacement d’urgence pour rétablir 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 le problème DNS sous-jacent résolu, afin d’éviter que des mappages obsolètes ne causent de futures confusions.
5.5. Environnements de développement multi-serveurs
Dans des configurations de développement complexes avec plusieurs machines virtuelles ou conteneurs, le fichier hosts peut associer 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 {#flushing-dns}
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 des navigateurs : Notez que les navigateurs Web maintiennent leur propre cache DNS interne, indépendant du système d’exploitation. Après avoir modifié /etc/hosts, vous devrez peut-être également vider le cache DNS de votre navigateur. Dans Chrome/Chromium, naviguez vers chrome://net-internals/#dns et cliquez sur Vider le cache des hôtes.
7. Bonnes pratiques et considérations de sécurité {#best-practices}
✅ 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 rapidement les entrées temporaires
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 malformée dans le fichier hosts ne provoquera pas de 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 des domaines légitimes (tels que des sites bancaires ou des serveurs de mise à jour) vers des IP contrôlées par des attaquants. Il s’agit d’un vecteur d’attaque connu appelé détournement du fichier hosts.
Protégez-vous contre cela 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 des 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, l’Enregistrement de domaine auprès d’un fournisseur fiable garantit que votre infrastructure DNS est robuste et évolutive.
8. Conclusion {#conclusion}
Le fichier /etc/hosts est un outil d’une simplicité trompeuse mais remarquablement puissant dans la boîte à outils de tout 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 qui créent et testent des applications localement.
- Les administrateurs système qui gèrent les migrations de serveurs et les fenêtres de basculement DNS.
- Les utilisateurs soucieux de la sécurité qui bloquent les domaines malveillants ou indésirables.
- Les ingénieurs DevOps qui orchestrent des environnements locaux multi-services.
Les points clés à retenir de ce guide :
| Tâche | Commande / Action |
|---|---|
| Ouvrir le fichier hosts | sudo nano /etc/hosts |
| Sauvegarder avant de modifier | 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 depuis la sauvegarde | sudo cp /etc/hosts.bak /etc/hosts |
Que vous gériez un environnement de développement léger ou 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 — bonne navigation !
