Hemat 15% untuk semua layanan hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode: Skills Memulai
Bagian FAQ
DNS Linux

Menguasai File Hosts Linux: Panduan Lengkap untuk Kontrol DNS Lokal

Baik Anda seorang developer yang menguji aplikasi baru, sysadmin yang mengatasi masalah propagasi DNS, atau sekadar seseorang yang ingin memblokir situs web yang mengganggu, file /etc/hosts adalah salah satu alat paling powerful dan underutilized di sistem Linux apa pun. Panduan ini menyediakan walkthrough mendalam dan praktis tentang semua yang perlu Anda ketahui — dari memahami apa itu hosts file hingga mengeditnya dengan aman di lingkungan VPS Hosting Anda.

1. Apa Itu Hosts File?

Hosts file adalah file sistem plain-text yang memetakan hostname yang dapat dibaca manusia — seperti www.example.com — ke alamat IP yang sesuai. Berfungsi sebagai local, static DNS resolver, dan yang penting, dikonsultasikan oleh sistem operasi *sebelum* query DNS eksternal apa pun dilakukan.

Ini berarti bahwa entri di hosts file Anda memiliki prioritas absolut atas record DNS yang dikembalikan oleh name server eksternal. Karakteristik tunggal itu menjadikannya alat yang sangat versatile untuk:

  • Local development environments — Uji website di bawah domain yang terlihat nyata tanpa menyentuh live DNS records.
  • DNS troubleshooting — Paksa domain untuk resolve ke IP tertentu secara temporer untuk menguji konfigurasi server.
  • Website blocking — Redirect domain yang tidak diinginkan ke alamat non-routable, secara efektif memblokir akses.
  • Staging and pre-launch testing — Preview setup server baru sebelum melakukan cutover DNS secara global.
  • Network security — Blokir domain berbahaya yang diketahui di tingkat OS.

> Technical note: Di Linux, urutan resolution diatur oleh file /etc/nsswitch.conf. Konfigurasi default biasanya menempatkan files (yaitu /etc/hosts) sebelum dns, memastikan entri lokal selalu diperiksa terlebih dahulu.

2. Di Mana Hosts File Berada di Linux?

Di semua distribusi Linux utama — termasuk Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux, dan Arch Linux — hosts file berada di:

/etc/hosts

Path ini konsisten di seluruh distribusi, memudahkan untuk bekerja terlepas dari lingkungan Anda. File dimiliki oleh root dan memerlukan privilege yang ditingkatkan untuk mengedit.

Default Contents of /etc/hosts

Server Linux yang baru disediakan — seperti yang berjalan di AlexHost VPS Hosting — biasanya akan berisi entri default yang mirip dengan berikut:

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

Entri ini memastikan bahwa:

    localhost selalu resolve ke alamat loopback 127.0.0.1 (IPv4) dan ::1 (IPv6).
    Hostname server sendiri resolve secara lokal tanpa memerlukan external DNS lookup.
    
    Jangan hapus entri default ini kecuali Anda memiliki alasan spesifik dan well-understood untuk melakukannya. Menghapusnya dapat menyebabkan perilaku yang tidak terduga dalam system services, mail delivery, dan application frameworks.
    3. Memahami Struktur Hosts File
    Hosts file mengikuti format yang sederhana dan konsisten. Setiap baris non-blank, non-comment mewakili single mapping dan mematuhi syntax ini:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Field
    Description
    
    
    
    
    IP_address
    Alamat IPv4 atau IPv6 yang hostname harus resolve ke
    
    
    hostname
    Primary fully qualified domain name (FQDN) atau short hostname
    
    
    alias (optional)
    Satu atau lebih nama tambahan yang harus resolve ke IP yang sama
    
    
    
    
    Key Formatting Rules
    
    Whitespace: Fields dipisahkan oleh spaces atau tabs. Multiple spaces dapat diterima.
    Comments: Teks apa pun yang mengikuti karakter # pada baris diperlakukan sebagai comment dan diabaikan oleh sistem.
    Case sensitivity: Hostnames tidak case-sensitive dalam praktik, tetapi lowercase adalah convention.
    One IP per line: Setiap baris dimulai dengan exactly one IP address, diikuti oleh satu atau lebih hostnames.
    
    Practical Examples
    Map single domain ke localhost:
    127.0.0.1    example.com
    Map multiple hostnames ke IP yang sama pada satu baris:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Blokir domain dengan menunjukkannya ke alamat non-routable:
    0.0.0.0    ads.tracker.com
    Paksa domain untuk resolve ke specific remote server IP:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Tambahkan inline comments untuk 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. Cara Mengedit Hosts File di Linux (Step-by-Step)
    Karena /etc/hosts adalah system configuration file, Anda memerlukan root atau sudo privileges untuk memodifikasinya. Di bawah ini adalah complete, production-safe workflow.
    Step 1: Buat Backup Sebelum Mengedit
    Ini adalah non-negotiable best practice. Selalu backup file sebelum membuat perubahan apa pun:
    sudo cp /etc/hosts /etc/hosts.bak
    Anda dapat memverifikasi backup dibuat:
    ls -lh /etc/hosts*
    Jika ada yang salah, restore secara instant dengan:
    sudo cp /etc/hosts.bak /etc/hosts
    Step 2: Buka Hosts File dengan Text Editor
    Menggunakan nano (recommended untuk beginners dan quick edits):
    sudo nano /etc/hosts
    nano adalah user-friendly, menampilkan keyboard shortcuts di bagian bawah screen, dan tersedia di virtually every Linux distribution secara default.
    Menggunakan vim (preferred oleh experienced administrators):
    sudo vim /etc/hosts
    Menggunakan vi (tersedia di minimal installations):
    sudo vi /etc/hosts
    Step 3: Tambahkan, Modifikasi, atau Hapus Entri
    Setelah file terbuka, navigate ke lokasi yang sesuai dan buat perubahan Anda. Berikut adalah operasi paling umum:
    Tambahkan mapping baru (append ke akhir file):
    127.0.0.1    myproject.local    www.myproject.local
    Blokir website:
    0.0.0.0    facebook.com    www.facebook.com
    Override DNS untuk domain (misalnya, untuk menguji server baru):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Step 4: Simpan dan Keluar dari Editor
    Di nano:
    
    Tekan CTRL + O untuk write (save) file.
    Tekan Enter untuk confirm filename.
    Tekan CTRL + X untuk exit.
    
    Di vim atau vi:
    
    Tekan Esc untuk memastikan Anda berada di command mode.
    Ketik :wq dan tekan Enter untuk write dan quit.
    Untuk quit tanpa saving, ketik :q! dan tekan Enter.
    
    Step 5: Verifikasi Syntax dari Perubahan Anda
    Sebelum testing, secara visual confirm entri Anda terlihat benar:
    cat /etc/hosts
    Anda juga dapat menggunakan grep untuk quickly find entri spesifik:
    grep "myproject.local" /etc/hosts
    Step 6: Uji Mappings Baru
    Gunakan ping untuk verify bahwa hostname resolve ke expected IP address:
    ping -c 4 myproject.local
    Untuk blocked domain (mapped ke 0.0.0.0 atau 127.0.0.1), ping harus fail atau return immediately:
    ping -c 2 facebook.com
    Anda juga dapat menggunakan getent untuk more direct hosts-file lookup:
    getent hosts myproject.local
    Command ini queries system’s name resolution stack (termasuk /etc/hosts) dan returns resolved IP, membuatnya lebih reliable daripada ping untuk verification purposes.
    5. Common Use Cases untuk Hosts File
    5.1. Local Web Development
    Ini adalah arguably the most common use case di antara developers. Alih-alih mengakses local project Anda via http://localhost:3000 atau http://127.0.0.1:8080, Anda dapat assign meaningful, production-like domain name.
    Example setup:
    Tambahkan ke /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    Setelah saving, navigate ke http://myproject.local di browser Anda. Request Anda akan resolve secara lokal tanpa pernah menyentuh external DNS server.
    Pendekatan ini sangat valuable ketika:
    
    Aplikasi Anda menggunakan virtual hosting dan memerlukan specific Host header.
    Anda menguji SSL certificates secara lokal (menggunakan self-signed certs mapped ke proper domain name).
    Anda perlu simulate multi-subdomain architecture (misalnya api., admin., cdn.).
    
    Jika Anda menjalankan multiple projects di VPS dengan cPanel, hosts file juga dapat membantu Anda menguji domain configurations sebelum DNS propagation selesai.
    5.2. Blocking Unwanted Websites
    Hosts file adalah lightweight, zero-dependency content blocker. Dengan redirect domain ke 0.0.0.0 (preferred daripada 127.0.0.1 karena gagal lebih cepat tanpa connection attempt), Anda dapat block access di OS level — affecting semua browsers dan applications secara bersamaan.
    Blokir social media distractions:
    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
    Blokir known ad-serving atau tracking domains:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Pro tip: Community-maintained blocklists (seperti dari StevenBlack hosts project) compile tens of thousands dari ad, tracking, dan malware domains ke dalam single hosts file format, yang dapat Anda merge ke /etc/hosts Anda.
    5.3. Pre-Launch Server Testing dan DNS Cutover
    Ketika migrate website ke server baru — misalnya, moving dari Shared Web Hosting ke Dedicated Server — DNS propagation dapat memakan waktu dari minutes hingga 48 hours. Hosts file memungkinkan Anda preview server baru secara immediate, dari local machine Anda saja, tanpa affecting other users.
    Scenario: Anda migrate mywebsite.com ke server baru di IP 203.0.113.42.
    Tambahkan ke local /etc/hosts Anda:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Sekarang, ketika Anda visit mywebsite.com di browser, Anda akan melihat content server baru. Visitors lain worldwide akan tetap melihat server lama sampai DNS propagates. Setelah Anda confirm semuanya bekerja dengan benar, remove entri dan biarkan DNS take over.
    Teknik ini invaluable untuk:
    
    Verifying web server configuration sebelum go-live.
    Testing SSL Certificates di server baru.
    Confirming email routing dan application behavior post-migration.
    
    5.4. Bypassing DNS Resolution Failures
    Jika DNS server temporarily unavailable atau returning incorrect results, Anda dapat menggunakan hosts file sebagai emergency override untuk restore connectivity ke critical services.
    Example:
    # Emergency override - DNS server outage 2025-01-15
    198.51.100.10    internal-api.company.com
    198.51.100.11    database.company.com
    Ingat untuk remove entri ini setelah underlying DNS issue resolved untuk menghindari stale mappings menyebabkan future confusion.
    5.5. Multi-Server Development Environments
    Dalam complex development setups dengan multiple virtual machines atau containers, hosts file dapat map friendly names ke setiap 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
    Ini menghilangkan kebutuhan untuk remember IP addresses dan membuat configuration files lebih readable dan portable.
    6. Flushing DNS Cache Setelah Edits
    Di most modern Linux systems, perubahan ke /etc/hosts take effect immediately untuk new connections. Namun, jika sistem atau aplikasi Anda cache DNS responses, Anda mungkin perlu flush cache itu untuk memastikan mappings baru digunakan right away.
    Untuk Systems Menggunakan systemd-resolved (Ubuntu 18.04+, Debian 10+, most modern distros):
    sudo systemctl restart systemd-resolved
    Atau, untuk flush cache tanpa full restart:
    sudo resolvectl flush-caches
    Verify cache diflushed:
    sudo resolvectl statistics
    Untuk Systems Menggunakan nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Untuk Systems Menggunakan NetworkManager:
    sudo systemctl restart NetworkManager
    Untuk Systems Menggunakan dnsmasq:
    sudo systemctl restart dnsmasq
    Checking Which DNS Resolver Sistem Anda Gunakan
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Browser caches: Perhatikan bahwa web browsers maintain internal DNS cache mereka sendiri, independent dari OS. Setelah memodifikasi /etc/hosts, Anda juga mungkin perlu clear browser’s DNS cache. Di Chrome/Chromium, navigate ke chrome://net-internals/#dns dan klik Clear host cache.
    7. Best Practices dan Security Considerations
    ✅ Selalu Backup Sebelum Mengedit
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Menggunakan timestamp dalam backup filename memastikan Anda dapat track multiple versions.
    ✅ Gunakan Comments untuk Document Perubahan Anda
    # Added 2025-01-15 by admin@example.com - staging server test
    203.0.113.42    staging.mywebsite.com
    Ini sangat penting dalam team environments di mana multiple people dapat mengakses server.
    ✅ Remove Temporary Entries Promptly
    Entri yang ditambahkan untuk testing atau emergency overrides harus dihapus segera setelah tidak lagi diperlukan. Stale entries dapat menyebabkan hard-to-diagnose connectivity issues berbulan-bulan kemudian.
    ✅ Validate Syntax Anda
    Entri hosts file yang malformed tidak akan menyebabkan system crash, tetapi akan silently fail untuk resolve. Selalu double-check entri Anda dengan:
    getent hosts <hostname>
    ⚠️ Security Warning: Hosts File Hijacking
    Malicious software kadang memodifikasi /etc/hosts untuk redirect legitimate domains (seperti banking websites atau update servers) ke attacker-controlled IPs. Ini adalah known attack vector yang disebut hosts file hijacking.
    Lindungi terhadap ini dengan:
    
    Setting restrictive file permissions: sudo chmod 644 /etc/hosts
  • Monitoring file untuk unauthorized changes menggunakan tools seperti auditd atau AIDE.
  • Regularly reviewing file contents: cat /etc/hosts
  • ⚠️ Hosts File Bukan Substitute untuk Proper DNS

    Untuk production environments, hosts file hanya harus digunakan untuk temporary overrides dan local development. Untuk permanent domain management, selalu gunakan proper DNS records. Jika Anda perlu register dan manage domains secara professional, Domain Registration melalui reliable provider memastikan DNS infrastructure Anda robust dan scalable.

    8. Conclusion

    File /etc/hosts adalah deceptively simple namun remarkably powerful tool di toolkit setiap Linux administrator dan developer. Kemampuannya untuk override DNS resolution secara lokal — dengan zero latency, no external dependencies, dan no infrastructure changes — membuatnya indispensable untuk:

    • Developers building dan testing applications secara lokal.
    • Sysadmins managing server migrations dan DNS cutover windows.
    • Security-conscious users blocking malicious atau unwanted domains.
    • DevOps engineers orchestrating multi-service local environments.

    Key takeaways dari panduan ini:

    TaskCommand / Action
    Buka hosts filesudo nano /etc/hosts
    Backup sebelum mengeditsudo cp /etc/hosts /etc/hosts.bak