Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
DNS Linux

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

Quer você seja um desenvolvedor testando uma nova aplicação, um sysadmin resolvendo problemas de propagação DNS, ou simplesmente alguém que quer bloquear sites distrativos, o arquivo /etc/hosts é uma das ferramentas mais poderosas e subutilizadas em qualquer sistema Linux. Este guia fornece um passo a passo profundo e prático de tudo o que você precisa saber — desde entender o que é o arquivo hosts até editá-lo com segurança no seu ambiente de VPS Hosting.

1. O que é o Ficheiro Hosts?

O ficheiro hosts é um ficheiro de sistema em texto simples que mapeia nomes de domínio 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 crucialmente, é consultado pelo sistema operativo *antes* de qualquer consulta DNS externa ser feita.

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

  • Ambientes de desenvolvimento local — Testar um website sob um domínio com aparência real sem tocar nos registos DNS em direto.
  • 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 websites — 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 mudar DNS globalmente.
  • Segurança de rede — Bloquear domínios maliciosos conhecidos ao nível do SO.

> Nota técnica: No Linux, a ordem de resolução é governada pelo ficheiro /etc/nsswitch.conf. A configuração padrão tipicamente coloca 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?

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 é propriedade de root e requer privilégios elevados para editar.

Conteúdo Padrão de /etc/hosts

Um servidor Linux recém-provisionado — como um em execução em Alojamento VPS AlexHost — normalmente conterá entradas padrão 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 sempre resolve para o endereço loopback 127.0.0.1 (IPv4) e ::1 (IPv6).
    O nome de anfitrião do próprio servidor é resolvido localmente sem necessidade de uma pesquisa DNS externa.
    
    Não elimine estas entradas padrão a menos que tenha uma razão específica e bem compreendida para o fazer. A sua remoção pode causar comportamento inesperado em serviços do sistema, entrega de correio e estruturas de aplicações.
    3. Compreender a Estrutura do Ficheiro Hosts
    O ficheiro hosts segue um formato simples e consistente. Cada linha não vazia e não comentada representa um mapeamento único e adere a esta sintaxe:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Campo
    Descrição
    
    
    
    
    IP_address
    O endereço IPv4 ou IPv6 para o qual o nome de anfitrião deve ser resolvido
    
    
    hostname
    O nome de domínio totalmente qualificado (FQDN) primário ou nome de anfitrião curto
    
    
    alias (opcional)
    Um ou mais nomes adicionais que devem ser resolvidos para o mesmo IP
    
    
    
    
    Regras de Formatação Principais
    
    Espaçamento: 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 carácter # numa linha é tratado como um comentário e ignorado pelo sistema.
    Sensibilidade a maiúsculas: Os nomes de anfitriões não diferenciam maiúsculas de minúsculas na prática, mas as minúsculas são a convenção.
    Um IP por linha: Cada linha começa com exatamente um endereço IP, seguido por um ou mais nomes de anfitriões.
    
    Exemplos Práticos
    Mapear um domínio único para localhost:
    127.0.0.1    example.com
    Mapear múltiplos nomes de anfitriões para o mesmo IP numa 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 ser resolvido 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 Arquivo Hosts no Linux (Passo a Passo)
    Como /etc/hosts é um arquivo de configuração do sistema, você precisa de privilégios root ou sudo para modificá-lo. Abaixo está um fluxo de trabalho completo e seguro para produção.
    Passo 1: Criar um Backup Antes de Editar
    Esta é uma prática recomendada inegociável. Sempre faça backup do arquivo antes de fazer qualquer alteração:
    sudo cp /etc/hosts /etc/hosts.bak
    Você pode verificar se o backup foi criado:
    ls -lh /etc/hosts*
    Se algo der errado, restaure-o instantaneamente com:
    sudo cp /etc/hosts.bak /etc/hosts
    Passo 2: Abrir o Arquivo Hosts com um Editor de Texto
    Usando nano (recomendado para iniciantes e edições rápidas):
    sudo nano /etc/hosts
    nano é amigável ao usuário, exibe atalhos de teclado na parte inferior da tela e está disponível em praticamente todas as distribuições Linux por padrã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
    Depois que o arquivo estiver aberto, navegue até o local apropriado e faça suas alterações. Aqui estão as operações mais comuns:
    Adicionar um novo mapeamento (anexar ao final do arquivo):
    127.0.0.1    myproject.local    www.myproject.local
    Bloquear um site:
    0.0.0.0    facebook.com    www.facebook.com
    Substituir DNS para um domínio (por exemplo, para testar um novo servidor):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Passo 4: Salvar e Sair do Editor
    Em nano:
    
    Pressione CTRL + O para gravar (salvar) o arquivo.
    Pressione Enter para confirmar o nome do arquivo.
    Pressione CTRL + X para sair.
    
    Em vim ou vi:
    
    Pressione Esc para garantir que você está no modo de comando.
    Digite :wq e pressione Enter para gravar e sair.
    Para sair sem salvar, digite :q! e pressione Enter.
    
    Passo 5: Verificar a Sintaxe das Suas Alterações
    Antes de testar, confirme visualmente que suas entradas parecem corretas:
    cat /etc/hosts
    Você 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 se o nome do host é resolvido 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
    Você também pode usar getent para uma busca mais direta no arquivo hosts:
    getent hosts myproject.local
    Este comando consulta a pilha de resolução de nomes do sistema (incluindo /etc/hosts) e retorna o IP resolvido, tornando-o mais confiável que ping para fins de verificação.
    5. Casos de Uso Comuns do Arquivo Hosts
    5.1. Desenvolvimento Web Local
    Este é, sem dúvida, o caso de uso mais comum entre desenvolvedores. Em vez de acessar seu projeto local via http://localhost:3000 ou http://127.0.0.1:8080, você pode atribuir um nome de domínio significativo, semelhante ao de produção.
    Exemplo de configuração:
    Adicione a /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    Após salvar, navegue para http://myproject.local no seu navegador. Sua solicitação será resolvida localmente sem nunca tocar em um servidor DNS externo.
    Esta abordagem é especialmente valiosa quando:
    
    Sua aplicação usa hospedagem virtual e requer um cabeçalho Host específico.
    Você está testando certificados SSL localmente (usando certificados auto-assinados mapeados para um nome de domínio apropriado).
    Você precisa simular uma arquitetura multi-subdomínio (por exemplo, api., admin., cdn.).
    
    Se você está executando múltiplos projetos em um VPS com cPanel, o arquivo hosts também pode ajudá-lo a testar configurações de domínio antes que a propagação DNS seja concluída.
    5.2. Bloqueio de Websites Indesejados
    O arquivo hosts é um bloqueador de conteúdo leve, 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 conexão), você pode bloquear o acesso no nível do SO — afetando todos os navegadores e aplicações simultaneamente.
    Bloqueie 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
    Bloqueie 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 em um único formato de arquivo hosts, que você pode mesclar ao seu /etc/hosts.
    5.3. Testes de Servidor Pré-Lançamento e Cutover de DNS
    Ao migrar um website para um novo servidor — por exemplo, mudando de Hospedagem Web Compartilhada para um Servidor Dedicado — a propagação de DNS pode levar de minutos a 48 horas. O arquivo hosts permite que você visualize o novo servidor imediatamente, apenas da sua máquina local, sem afetar outros usuários.
    Cenário: Você está migrando mywebsite.com para um novo servidor no IP 203.0.113.42.
    Adicione ao seu /etc/hosts local:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Agora, quando você visitar mywebsite.com no seu navegador, você verá o conteúdo do novo servidor. Outros visitantes em todo o mundo ainda verão o servidor antigo até que o DNS se propague. Depois de confirmar que tudo funciona corretamente, remova a entrada e deixe o DNS assumir.
    Esta técnica é inestimável para:
    
    Verificar a configuração do servidor web antes do lançamento.
    Testar Certificados SSL no novo servidor.
    Confirmar roteamento de email e comportamento da aplicação pós-migração.
    
    5.4. Contornando Falhas de Resolução de DNS
    Se um servidor DNS estiver temporariamente indisponível ou retornando resultados incorretos, você pode usar o arquivo hosts como uma substituição de emergência para restaurar a conectividade com 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 de DNS subjacente for resolvido para evitar mapeamentos obsoletos causando confusão futura.
    5.5. Ambientes de Desenvolvimento Multi-Servidor
    Em configurações de desenvolvimento complexas com múltiplas máquinas virtuais ou contêineres, o arquivo 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 lembrar endereços IP e torna os arquivos de configuração mais legíveis e portáveis.
    6. Limpeza da Cache DNS Após Edições
    Na maioria dos sistemas Linux modernos, as alterações em /etc/hosts entram em vigor imediatamente para novas conexões. No entanto, se o seu sistema ou aplicações armazenarem em cache respostas DNS, pode ser necessário limpar essa cache para garantir que os novos mapeamentos sejam utilizados imediatamente.
    Para Sistemas Usando systemd-resolved (Ubuntu 18.04+, Debian 10+, distros modernas):
    sudo systemctl restart systemd-resolved
    Ou, para limpar a cache sem um reinício completo:
    sudo resolvectl flush-caches
    Verifique se a cache foi limpa:
    sudo resolvectl statistics
    Para Sistemas Usando nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Para Sistemas Usando NetworkManager:
    sudo systemctl restart NetworkManager
    Para Sistemas Usando dnsmasq:
    sudo systemctl restart dnsmasq
    Verificar Qual Resolvedor DNS o Seu Sistema Utiliza
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Caches do navegador: Tenha em conta que os navegadores web mantêm a sua própria cache DNS interna, independente do SO. Após modificar /etc/hosts, pode também ser necessário limpar a cache DNS do seu navegador. No Chrome/Chromium, navegue até chrome://net-internals/#dns e clique em Limpar cache de host.
    7. Melhores Práticas e Considerações de Segurança
    ✅ Sempre Faça Backup Antes de Editar
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Usar um timestamp no nome do arquivo de backup garante que você possa rastrear múltiplas versões.
    ✅ Use Comentários para Documentar 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 equipe onde múltiplas pessoas podem acessar o servidor.
    ✅ Remova Entradas Temporárias Prontamente
    Entradas adicionadas para testes ou substituições de emergência devem ser removidas assim que não forem mais necessárias. Entradas obsoletas podem causar problemas de conectividade difíceis de diagnosticar meses depois.
    ✅ Valide Sua Sintaxe
    Uma entrada malformada no arquivo hosts não causará uma falha do sistema, mas falhará silenciosamente em resolver. Sempre verifique suas entradas com:
    getent hosts <hostname>
    ⚠️ Aviso de Segurança: Sequestro do Arquivo Hosts
    Software malicioso às 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 arquivo hosts.
    Proteja-se contra isso:
    
    Definindo permissões de arquivo restritivas: sudo chmod 644 /etc/hosts
  • Monitorando o arquivo para alterações não autorizadas usando ferramentas como auditd ou AIDE.
  • Revisando regularmente o conteúdo do arquivo: cat /etc/hosts
  • ⚠️ O Arquivo Hosts Não é um Substituto para DNS Apropriado

    Para ambientes de produção, o arquivo hosts deve ser usado apenas para substituições temporárias e desenvolvimento local. Para gerenciamento permanente de domínios, sempre use registros DNS apropriados. Se você precisar registrar e gerenciar domínios profissionalmente, Registo de Domínios através de um provedor confiável garante que sua infraestrutura DNS seja robusta e escalável.

    8. Conclusão

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

    • Desenvolvedores construindo e testando aplicações localmente.
    • Administradores de sistemas gerenciando migrações de servidores e janelas de transição DNS.
    • Utilizadores conscientes de segurança bloqueando domínios maliciosos ou indesejados.
    • Engenheiros DevOps orquestrando ambientes locais multi-serviço.

    Os principais pontos-chave deste guia:

    TarefaComando / Ação
    Abrir o arquivo 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 enxuto ou a gerir uma frota de servidores de produção em Alojamento VPS AlexHost, dominar o arquivo hosts é uma habilidade fundamental que compensa sempre que precisa de uma substituição DNS local rápida e confiável. Edite com confiança, documente suas alterações e sempre mantenha uma cópia de segurança — feliz roteamento!