15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
30.10.2024
1 +1

Dominando o Arquivo Hosts do Linux: O Guia Completo para Controle Local de DNS

Quer seja um desenvolvedor a testar uma nova aplicação, um administrador de sistemas a resolver problemas de propagação DNS, ou simplesmente alguém que pretende bloquear sites distrativos, o ficheiro /etc/hosts é uma das ferramentas mais poderosas e subutilizadas em qualquer sistema Linux. Este guia fornece uma explicação detalhada e prática de tudo o que precisa de saber — desde compreender o que é o ficheiro hosts até editá-lo com segurança no seu ambiente de VPS Hosting.

Índice

  1. O Que É o Ficheiro Hosts?
  2. Onde Está Localizado o Ficheiro Hosts no Linux?
  3. Compreender a Estrutura do Ficheiro Hosts
  4. Como Editar o Ficheiro Hosts no Linux (Passo a Passo)
  5. Casos de Uso Comuns para o Ficheiro Hosts
  6. Limpar a Cache DNS Após Edições
  7. Melhores Práticas e Considerações de Segurança
  8. Conclusão

1. O Que É o Ficheiro Hosts? {#what-is-the-hosts-file}

O ficheiro hosts é um ficheiro de sistema em texto simples que mapeia nomes de host legíveis por humanos — como www.example.com — para os seus endereços IP correspondentes. Funciona como um resolvedor DNS local e estático e, de forma crucial, é consultado pelo sistema operativo *antes* de qualquer consulta DNS externa ser efetuada.

Isto significa que as entradas no seu ficheiro hosts têm prioridade absoluta sobre os registos DNS devolvidos por servidores de nomes externos. Esta característica torna-o uma ferramenta incrivelmente versátil para:

  • Ambientes de desenvolvimento local — Testar um site com um domínio de aparência real sem tocar nos registos DNS em produção.
  • Resolução de problemas DNS — Forçar temporariamente um domínio a resolver para um IP específico para testar configurações de servidor.
  • Bloqueio de sites — Redirecionar domínios indesejados para um endereço não encaminhável, bloqueando efetivamente o acesso.
  • Testes de staging e pré-lançamento — Pré-visualizar uma nova configuração de servidor antes de transferir o DNS globalmente.
  • Segurança de rede — Bloquear domínios maliciosos conhecidos ao nível do sistema operativo.

> Nota técnica: No Linux, a ordem de resolução é governada pelo ficheiro /etc/nsswitch.conf. A configuração predefinida coloca tipicamente files (ou seja, /etc/hosts) antes de dns, garantindo que as entradas locais são sempre verificadas primeiro.

2. Onde Está Localizado o Ficheiro Hosts no Linux? {#location}

Em todas as principais distribuições Linux — incluindo Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux e Arch Linux — o ficheiro hosts está localizado em:

/etc/hosts

Este caminho é consistente entre distribuições, facilitando o trabalho independentemente do seu ambiente. O ficheiro pertence a root e requer privilégios elevados para ser editado.

Conteúdo Predefinido de /etc/hosts

Um servidor Linux recém-provisionado — como um a correr no AlexHost VPS Hosting — conterá tipicamente entradas predefinidas semelhantes às seguintes:

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

Estas entradas garantem que:

    localhost resolve sempre para o endereço de loopback 127.0.0.1 (IPv4) e ::1 (IPv6).
    O próprio nome de host do servidor resolve localmente sem necessitar de uma consulta DNS externa.
    
    Não elimine estas entradas predefinidas a menos que tenha uma razão específica e bem compreendida para o fazer. Removê-las pode causar comportamentos inesperados em serviços do sistema, entrega de correio eletrónico e frameworks de aplicações.
    3. Compreender a Estrutura do Ficheiro Hosts {#structure}
    O ficheiro hosts segue um formato simples e consistente. Cada linha não em branco e sem comentário representa um único mapeamento e segue esta sintaxe:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Campo
    Descrição
    
    
    
    
    IP_address
    O endereço IPv4 ou IPv6 para o qual o nome de host deve resolver
    
    
    hostname
    O nome de domínio totalmente qualificado (FQDN) principal ou nome de host curto
    
    
    alias (opcional)
    Um ou mais nomes adicionais que devem resolver para o mesmo IP
    
    
    
    
    Regras de Formatação Principais
    
    Espaço em branco: Os campos são separados por espaços ou tabulações. Múltiplos espaços são aceitáveis.
    Comentários: Qualquer texto após um caractere # numa linha é tratado como comentário e ignorado pelo sistema.
    Sensibilidade a maiúsculas/minúsculas: Os nomes de host são insensíveis a maiúsculas/minúsculas na prática, mas a convenção é usar minúsculas.
    Um IP por linha: Cada linha começa com exatamente um endereço IP, seguido de um ou mais nomes de host.
    
    Exemplos Práticos
    Mapear um único domínio para localhost:
    127.0.0.1    example.com
    Mapear múltiplos nomes de host para o mesmo IP numa única linha:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Bloquear um domínio apontando-o para um endereço não encaminhável:
    0.0.0.0    ads.tracker.com
    Forçar um domínio a resolver para um IP de servidor remoto específico:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Adicionar comentários inline para documentação:
    # 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. Como Editar o Ficheiro Hosts no Linux (Passo a Passo) {#editing}
    Como /etc/hosts é um ficheiro de configuração do sistema, precisa de privilégios de root ou sudo para o modificar. Abaixo encontra um fluxo de trabalho completo e seguro para produção.
    Passo 1: Criar uma Cópia de Segurança Antes de Editar
    Esta é uma boa prática inegociável. Faça sempre uma cópia de segurança do ficheiro antes de efetuar quaisquer alterações:
    sudo cp /etc/hosts /etc/hosts.bak
    Pode verificar se a cópia de segurança foi criada:
    ls -lh /etc/hosts*
    Se algo correr mal, restaure-a instantaneamente com:
    sudo cp /etc/hosts.bak /etc/hosts
    Passo 2: Abrir o Ficheiro Hosts com um Editor de Texto
    Usando nano (recomendado para iniciantes e edições rápidas):
    sudo nano /etc/hosts
    nano é fácil de usar, apresenta atalhos de teclado na parte inferior do ecrã e está disponível em praticamente todas as distribuições Linux por predefinição.
    Usando vim (preferido por administradores experientes):
    sudo vim /etc/hosts
    Usando vi (disponível em instalações mínimas):
    sudo vi /etc/hosts
    Passo 3: Adicionar, Modificar ou Remover Entradas
    Assim que o ficheiro estiver aberto, navegue para o local apropriado e efetue as suas alterações. Aqui estão as operações mais comuns:
    Adicionar um novo mapeamento (acrescentar ao final do ficheiro):
    127.0.0.1    myproject.local    www.myproject.local
    Bloquear um site:
    0.0.0.0    facebook.com    www.facebook.com
    Substituir o DNS para um domínio (por exemplo, para testar um novo servidor):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Passo 4: Guardar e Sair do Editor
    Em nano:
    
    Prima CTRL + O para escrever (guardar) o ficheiro.
    Prima Enter para confirmar o nome do ficheiro.
    Prima CTRL + X para sair.
    
    Em vim ou vi:
    
    Prima Esc para garantir que está em modo de comando.
    Digite :wq e prima Enter para escrever e sair.
    Para sair sem guardar, digite :q! e prima Enter.
    
    Passo 5: Verificar a Sintaxe das Suas Alterações
    Antes de testar, confirme visualmente que as suas entradas estão corretas:
    cat /etc/hosts
    Também pode usar grep para encontrar rapidamente uma entrada específica:
    grep "myproject.local" /etc/hosts
    Passo 6: Testar os Novos Mapeamentos
    Use ping para verificar que o nome de host resolve para o endereço IP esperado:
    ping -c 4 myproject.local
    Para um domínio bloqueado (mapeado para 0.0.0.0 ou 127.0.0.1), o ping deve falhar ou retornar imediatamente:
    ping -c 2 facebook.com
    Também pode usar getent para uma pesquisa mais direta no ficheiro hosts:
    getent hosts myproject.local
    Este comando consulta a pilha de resolução de nomes do sistema (incluindo /etc/hosts) e devolve o IP resolvido, tornando-o mais fiável do que ping para fins de verificação.
    5. Casos de Uso Comuns para o Ficheiro Hosts {#use-cases}
    5.1. Desenvolvimento Web Local
    Este é sem dúvida o caso de uso mais comum entre os programadores. Em vez de aceder ao seu projeto local via http://localhost:3000 ou http://127.0.0.1:8080, pode atribuir um nome de domínio significativo e semelhante ao de produção.
    Exemplo de configuração:
    Adicionar a /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    Após guardar, navegue para http://myproject.local no seu browser. O seu pedido resolverá localmente sem nunca contactar um servidor DNS externo.
    Esta abordagem é especialmente valiosa quando:
    
    A sua aplicação usa virtual hosting e requer um cabeçalho Host específico.
    Está a testar certificados SSL localmente (usando certificados autoassinados mapeados para um nome de domínio adequado).
    Precisa de simular uma arquitetura multi-subdomínio (por exemplo, api., admin., cdn.).
    
    Se estiver a executar múltiplos projetos num VPS com cPanel, o ficheiro hosts também pode ajudá-lo a testar configurações de domínio antes de a propagação DNS estar concluída.
    5.2. Bloquear Sites Indesejados
    O ficheiro hosts é um bloqueador de conteúdo leve e sem dependências. Ao redirecionar um domínio para 0.0.0.0 (preferível a 127.0.0.1 pois falha mais rapidamente sem tentativa de ligação), pode bloquear o acesso ao nível do sistema operativo — afetando todos os browsers e aplicações simultaneamente.
    Bloquear distrações de redes sociais:
    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
    Bloquear domínios conhecidos de publicidade ou rastreamento:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Dica profissional: Listas de bloqueio mantidas pela comunidade (como as do projeto StevenBlack hosts) compilam dezenas de milhares de domínios de publicidade, rastreamento e malware num único formato de ficheiro hosts, que pode ser integrado no seu /etc/hosts.
    5.3. Testes de Servidor Pré-Lançamento e Transferência DNS
    Ao migrar um site para um novo servidor — por exemplo, ao mover de Alojamento Web Partilhado para um Servidor Dedicado — a propagação DNS pode demorar entre minutos e 48 horas. O ficheiro hosts permite-lhe pré-visualizar o novo servidor imediatamente, apenas a partir da sua máquina local, sem afetar outros utilizadores.
    Cenário: Está a migrar mywebsite.com para um novo servidor no IP 203.0.113.42.
    Adicionar ao seu /etc/hosts local:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Agora, quando visitar mywebsite.com no seu browser, verá o conteúdo do novo servidor. Os outros visitantes em todo o mundo continuarão a ver o servidor antigo até que o DNS propague. Assim que confirmar que tudo funciona corretamente, remova a entrada e deixe o DNS assumir o controlo.
    Esta técnica é inestimável para:
    
    Verificar a configuração do servidor web antes do lançamento.
    Testar Certificados SSL no novo servidor.
    Confirmar o encaminhamento de correio eletrónico e o comportamento da aplicação após a migração.
    
    5.4. Contornar Falhas de Resolução DNS
    Se um servidor DNS estiver temporariamente indisponível ou a devolver resultados incorretos, pode usar o ficheiro hosts como substituição de emergência para restaurar a conectividade a serviços críticos.
    Exemplo:
    # Emergency override - DNS server outage 2025-01-15
    198.51.100.10    internal-api.company.com
    198.51.100.11    database.company.com
    Lembre-se de remover estas entradas assim que o problema DNS subjacente estiver resolvido, para evitar que mapeamentos desatualizados causem confusão no futuro.
    5.5. Ambientes de Desenvolvimento Multi-Servidor
    Em configurações de desenvolvimento complexas com múltiplas máquinas virtuais ou contentores, o ficheiro hosts pode mapear nomes amigáveis para cada serviço:
    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
    Isto elimina a necessidade de memorizar endereços IP e torna os ficheiros de configuração mais legíveis e portáteis.
    6. Limpar a Cache DNS Após Edições {#flushing-dns}
    Na maioria dos sistemas Linux modernos, as alterações a /etc/hosts têm efeito imediato para novas ligações. No entanto, se o seu sistema ou aplicações armazenarem respostas DNS em cache, poderá precisar de limpar essa cache para garantir que os novos mapeamentos são utilizados imediatamente.
    Para Sistemas que Usam systemd-resolved (Ubuntu 18.04+, Debian 10+, a maioria das distribuições modernas):
    sudo systemctl restart systemd-resolved
    Ou, para limpar a cache sem um reinício completo:
    sudo resolvectl flush-caches
    Verificar se a cache foi limpa:
    sudo resolvectl statistics
    Para Sistemas que Usam nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Para Sistemas que Usam NetworkManager:
    sudo systemctl restart NetworkManager
    Para Sistemas que Usam dnsmasq:
    sudo systemctl restart dnsmasq
    Verificar Qual o Resolvedor DNS que o Seu Sistema Utiliza
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Caches de browser: Note que os browsers mantêm a sua própria cache DNS interna, independente do sistema operativo. Após modificar /etc/hosts, poderá também precisar de limpar a cache DNS do seu browser. No Chrome/Chromium, navegue para chrome://net-internals/#dns e clique em Clear host cache.
    7. Melhores Práticas e Considerações de Segurança {#best-practices}
    ✅ Faça Sempre uma Cópia de Segurança Antes de Editar
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Usar um timestamp no nome do ficheiro de cópia de segurança garante que pode acompanhar múltiplas versões.
    ✅ Use Comentários para Documentar as Suas Alterações
    # Added 2025-01-15 by admin@example.com - staging server test
    203.0.113.42    staging.mywebsite.com
    Isto é especialmente importante em ambientes de equipa onde múltiplas pessoas podem aceder ao servidor.
    ✅ Remova Entradas Temporárias Prontamente
    As entradas adicionadas para testes ou substituições de emergência devem ser removidas assim que deixem de ser necessárias. Entradas desatualizadas podem causar problemas de conectividade difíceis de diagnosticar meses mais tarde.
    ✅ Valide a Sua Sintaxe
    Uma entrada malformada no ficheiro hosts não causará uma falha do sistema, mas falhará silenciosamente na resolução. Verifique sempre as suas entradas com:
    getent hosts <hostname>
    ⚠️ Aviso de Segurança: Sequestro do Ficheiro Hosts
    Software malicioso por vezes modifica /etc/hosts para redirecionar domínios legítimos (como sites bancários ou servidores de atualização) para IPs controlados por atacantes. Este é um vetor de ataque conhecido chamado sequestro do ficheiro hosts.
    Proteja-se contra isto:
    
    Definindo permissões de ficheiro restritivas: sudo chmod 644 /etc/hosts
  • Monitorizando o ficheiro para alterações não autorizadas usando ferramentas como auditd ou AIDE.
  • Revendo regularmente o conteúdo do ficheiro: cat /etc/hosts
  • ⚠️ O Ficheiro Hosts Não É um Substituto para DNS Adequado

    Para ambientes de produção, o ficheiro hosts deve ser usado apenas para substituições temporárias e desenvolvimento local. Para gestão permanente de domínios, use sempre registos DNS adequados. Se precisar de registar e gerir domínios profissionalmente, o Registo de Domínios através de um fornecedor fiável garante que a sua infraestrutura DNS é robusta e escalável.

    8. Conclusão {#conclusion}

    O ficheiro /etc/hosts é uma ferramenta enganosamente simples, mas notavelmente poderosa no conjunto de ferramentas de qualquer administrador Linux e programador. A sua capacidade de substituir a resolução DNS localmente — com zero latência, sem dependências externas e sem alterações de infraestrutura — torna-o indispensável para:

    • Programadores que constroem e testam aplicações localmente.
    • Administradores de sistemas que gerem migrações de servidores e janelas de transferência DNS.
    • Utilizadores conscientes da segurança que bloqueiam domínios maliciosos ou indesejados.
    • Engenheiros DevOps que orquestram ambientes locais multi-serviço.

    As principais conclusões deste guia:

    TarefaComando / Ação
    Abrir o ficheiro hostssudo nano /etc/hosts
    Fazer cópia de segurança antes de editarsudo cp /etc/hosts /etc/hosts.bak
    Verificar um mapeamentogetent hosts <hostname>
    Testar com pingping -c 4 <hostname>
    Limpar cache DNSsudo resolvectl flush-caches
    Restaurar a partir de cópia de segurançasudo cp /etc/hosts.bak /etc/hosts

    Quer esteja a executar um ambiente de desenvolvimento simples ou a gerir uma frota de servidores de produção no AlexHost VPS Hosting, dominar o ficheiro hosts é uma competência fundamental que traz benefícios sempre que precisar de uma substituição DNS local rápida e fiável. Edite com confiança, documente as suas alterações e mantenha sempre uma cópia de segurança — bom encaminhamento!

    15%

    Poupe 15% em todos os serviços

    Teste as suas habilidades e obtenha Desconto em qualquer plano

    Utilizar o código:

    Skills
    Começar a trabalhar