เหตุใดการเปลี่ยนเส้นทางไฟล์โฮสต์จึงล้มเหลว


12

ฉันกำลังพยายามเปลี่ยนเส้นทาง google.com ไปยังเครื่องของฉันเพื่อความสนุกสนานและการเรียนรู้ด้วยไฟล์ / etc / hosts บน Mac ของฉัน

127.0.0.1 www.google.com

อย่างไรก็ตาม www.google.com ยังคงแมปไปยังหน้าแรกของ Google เมื่อฉันเยี่ยมชมใน Chrome บน Mac ของฉัน ทำไม?

โดยทั่วไปนี่คือทั้งหมดที่ฉันทำ:

  1. พิมพ์sudo vim /etc/hostsในอาคารผู้โดยสาร
  2. อินพุต127.0.0.1 www.google.comลงในไฟล์โฮสต์
  3. บันทึกและออกเป็นกลุ่ม

คำตอบ:


11

hostsไฟล์ไม่ได้ทำงานด้วยวิธีนี้ คุณสามารถใช้มันเพื่อ map ชื่อโฮสต์ไปยังที่อยู่ IP localhostไม่

สำหรับกรณีของคุณคุณต้องใช้127.0.0.1 www.google.comเช่น map www.google.com ไปที่ 127.0.0.1

หากคุณต้องการ map ชื่อโฮสต์มากขึ้นเพื่อ IP 127.0.0.1 www.a.com www.b.comไหม้คุณเพียงแค่เพิ่มชื่อโฮสต์ที่ผู้ที่อยู่ในบรรทัดเดียวกันเช่น


1
ขอบคุณ. ฉันเพิ่งเปลี่ยนไฟล์ / etc / hosts บน Mac 127.0.0.1 www.google.comของฉันไป อย่างไรก็ตาม google.com ยังคงนำไปสู่หน้าแรกของ Google ฉันจำเป็นต้องรีเฟรชอะไรหรือไม่? ฉันควรรีสตาร์ทคอมพิวเตอร์หรือไม่
David Faux

คุณไม่จำเป็นต้องทำ ลองเพิ่ม127.0.0.1 google.com(ไม่มี www) หลังบรรทัดนี้และตรวจสอบว่าใช้งานได้หรือไม่
Renan

127.0.0.1 google.comไม่ทำงานเช่นกัน ฉันไม่แน่ใจว่าเกิดอะไรขึ้น ... ฉันรู้ว่านั่น/etc/hostsเป็นลิงค์เชื่อมโยงที่นุ่มนวล/private/etc/hostsบน Mac แต่ฉันไม่คิดว่ามันจะช่วยอะไรได้เลย
David Faux

1
เทคนิค: hostsแมปชื่อโฮสต์ไปยังที่อยู่ IP ไม่ใช่ในทางกลับกัน
Dennis

1
@ เดนนิสนั่นคือสิ่งที่ฉันจะพูด แต่อีกครั้งมันใช้งานได้จริงทั้งสองวิธีเมื่อคุณคิดเกี่ยวกับมันเพราะมันสร้างความสัมพันธ์ระหว่างสองรายการ
Synetech

10

เว็บเบราว์เซอร์ไม่ใช่วิธีที่ดีที่สุดในการตรวจสอบว่าhostsไวยากรณ์ของคุณถูกต้องหรือไม่ ลองดำเนินการ

ping www.google.com

127.0.0.1และยืนยันว่าจะส่ง Ping

สาเหตุที่ Chrome ปรากฏว่าไม่สนใจhostsไฟล์ของคุณคือแคช:

หาก Chrome ได้สอบถาม IP เมื่อเร็ว ๆ นี้ (คำจำกัดความเมื่อเร็ว ๆ นี้ส่วนใหญ่ขึ้นอยู่กับเวลาที่จะถ่ายทอดสด (TTL)ที่เซิร์ฟเวอร์ DNS ส่งคืน) มันจะข้ามhostsไฟล์เนื่องจากรู้ IP ที่ถูกต้องแล้ว สิ่งนี้ทำเพื่อเพิ่มความเร็วในการท่องเว็บ

ในการทำให้ Chrome เคารพรายการใหม่ให้ทำดังนี้:

  1. แก้ไข/etc/hostsตามที่อธิบาย @Renan

  2. chrome://chrome/settings/clearBrowserDataไปที่

  3. since the beginning of timeเลือก

  4. ตรวจสอบEmpty the cacheแต่ไม่ต้องเลือกทุกอย่าง

  5. คลิกClear browsing dataและรอให้เสร็จ

  6. รีสตาร์ท Chrome

Chrome ควรเคารพhostsไฟล์ของคุณทันที


2
ฉันเรียนรู้สิ่งนี้มานานแล้วกับ IE6 หากฉันทำการเปลี่ยนแปลงกับไฟล์ HOSTS ในขณะที่ IE ยังคงเปิดอยู่ฉันจะต้องปิดมันโดยเฉพาะและเรียกใช้อีกครั้งเพื่อรับการเปลี่ยนแปลง นี่เป็นโปรแกรมส่วนใหญ่ อย่างไรก็ตามบางโปรแกรม (เช่นเวอร์ชันของ Chrome จากปีหรือสองปีที่ผ่านมา) จะอ่านไฟล์โฮสต์อีกครั้งเป็นระยะดังนั้นหากคุณทำการเปลี่ยนแปลงเพียงแค่รอหนึ่งหรือสองนาทีจากนั้นรีเฟรช (ไม่จำเป็นต้องล้างแคช) (นโยบายการอ่านซ้ำนี้บางครั้งก็มีประโยชน์เช่นนี้ แต่โดยปกติแล้วค่อนข้างแย่ในความเป็นจริงเพราะมันสิ้นเปลืองและเลวโดยเฉพาะอย่างยิ่งถ้าไฟล์โฮสต์มีขนาดใหญ่)
Synetech

@Synetech: Chrome รับการเปลี่ยนแปลงhostsได้ทันทีตราบใดที่รายการไม่ใช่ชื่อโฮสต์ที่แคชไว้แล้ว ฉันคิดว่ามันจะตรวจสอบhostsเฉพาะในกรณีที่ TTL มีที่ผ่านมา ด้วยเว็บไซต์ขนาดใหญ่ที่อาจใช้เวลาสักครู่
Dennis

ฉันไม่ทราบรายละเอียดเกี่ยวกับเวอร์ชันที่ต่างกันของการอ่านไฟล์ HOSTS อีกครั้ง แต่คุณสามารถใช้ Filemon / ProcMon เพื่อดูการทำงาน chrome.exeจะอ่านไฟล์ทั้งหมดเป็นครั้งคราว
Synetech

2
มีวิธีที่โหดร้ายน้อยล้างแคช DNS โครเมี่ยมเป็นsuperuser.com/questions/203674/...
hakunin

@hakunin: เรียบร้อย ใน Chromium 25.0.1364.160 Ubuntu 12.04 สิ่งนี้ไม่จำเป็นอีกต่อไป ฉันเช็คอินnet-internals/#dnsและโฮสต์แคชจะถูกล้างโดยอัตโนมัติเมื่อ/etc/hostsมีการเปลี่ยนแปลง
Dennis

1

คำตอบของฉันคือการรวมกันของข้างต้นเพราะฉันกำลังเชื่อมต่อกับสำนักงานของฉันผ่านทาง Fortinet SSL VPN สำหรับ Ubuntu 16.04

สิ่งแรกที่ฉันต้องทำคือเปิดคอนโซลเทอร์มินัลขึ้นมาและรันคำสั่งต่อไปนี้:

sudo nano /etc/resolvconf/resolv.conf.d/base

ฉันเพิ่มตัวอย่างต่อไปนี้:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

แล้วฉันจะบันทึกไฟล์โดยการกดและปิดนาโนโดยการกดCTRL-OCTRL-X

จากนั้นฉันทำสิ่งต่อไปนี้และทำงานได้อย่างสมบูรณ์:

ในการทำให้ Chrome เคารพรายการใหม่ให้ทำดังนี้:

แก้ไข/etc/hostsตามที่อธิบาย @Renan

  1. chrome://chrome/settings/clearBrowserDataไปที่
  2. เลือกตั้งแต่จุดเริ่มต้นของเวลา
  3. ทำเครื่องหมายที่ช่องว่างในแคช แต่ไม่เลือกเลย
  4. คลิกล้างข้อมูลการท่องเว็บและรอจนกว่าจะเสร็จ
  5. รีสตาร์ท Chrome

Chrome ควรเคารพไฟล์โฮสต์ของคุณทันที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.