Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
DNS Linux

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/hosts

Ce 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-allrouters

Ces 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/hosts
  • Surveillant le fichier pour les modifications non autorisées à l’aide d’outils tels que auditd ou AIDE.
  • Examinant régulièrement le contenu du fichier : 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âcheCommande / Action
    Ouvrir le fichier hostssudo nano /etc/hosts
    Sauvegarder avant modificationsudo cp /etc/hosts /etc/hosts.bak
    Vérifier un mappagegetent hosts <hostname>
    Tester avec pingping -c 4 <hostname>
    Vider le cache DNSsudo resolvectl flush-caches
    Restaurer à partir de la sauvegardesudo 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 !