Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

ใช้และแก้ไขไฟล์ Hosts ใน Linux

ไฟล์ /etc/hosts เป็น DNS local database บนเครื่องเอง Map IP address → hostname โดยไม่ต้องมี DNS server ใช้สะดวกสำหรับ:

  • Server 内部 (Raspberry Pi, VM, LXC containers)
  • Block เว็บไซต์ (map ไป 127.0.0.1 หรือ 0.0.0.0)
  • ทดสอบเว็บไซต์ก่อนเปลี่ยน DNS จริง
  • Override DNS สำหรับ development

ดูเนื้อหาปัจจุบัน

cat /etc/hosts

ค่าเริ่มต้นมี 2 บรรทัดสำหรับ localhost:

127.0.0.1   localhost
::1         localhost ip6-localhost ip6-loopback

แก้ไขไฟล์ hosts

ต้องใช้สิทธิ์ root ใช้ editor ใดก็ได้ (nano, vim, gedit):

sudo nano /etc/hosts

รูปแบบบรรทัด:

IP_address   hostname1   hostname2   ...

ตัวอย่างการใช้งาน:

1. Raspberry Pi / Server 内部:

192.168.1.50    pi.local
192.168.1.51    nas.local
192.168.122.10  vm-ubuntu.local

ใช้งาน: ssh pi.local, ping nas.local แทน IP

2. Block เว็บไซต์:

0.0.0.0   facebook.com
0.0.0.0   www.facebook.com
0.0.0.0   ads.example.com

หมายเหตุ: บราวเซอร์สมัยใหม่ใช้ DNS-over-HTTPS (DoH) อาจข้าม hosts ไป → ต้องปิด DoH ใน browser settings

3. Development (local domain):

127.0.0.1   myapp.test
127.0.0.1   api.myapp.test

ตรวจสอบการทำงาน

ping pi.local
getent hosts pi.local
# ควรคืนค่า 192.168.1.50

ข้อควรระวัง

  • ไฟล์ hosts ใช้ได้เฉพาะเครื่องที่แก้ไข (ไม่กระจายไปเครื่องอื่น)
  • ไม่รองรับ wildcard (*.example.com) ต้องระบุทุก subdomain
  • Priority: /etc/hosts → mDNS → DNS server (ขึ้นแต่ nsswitch.conf)
  • IPv6: ใช้ ::1 สำหรับ localhost, หรือ IPv6 address จริง

Windows ก็มี hosts ไฟล์เดียวกันที่ C:\Windows\System32\drivers\etc\hosts ใช้งานเหมือนกันทุกประการ