/ etc / hosts ดัดแปลงทำงานไม่ถูกต้อง จะทำอย่างไร?


10

ฉันได้เพิ่มบรรทัดเหล่านี้ไปยังไฟล์โฮสต์:

127.0.0.1 localhost adobe.com
127.0.0.1 adobe.com

มันทำงานได้อย่างสมบูรณ์บน Windows แต่ใน Ubuntu 11.10 เมื่อฉันพยายามเข้าถึงโดยใช้ Firefox เว็บไซต์กำลังเปิด

Google chrome แม้ว่าจะรองรับการกำหนดค่า / etc / hosts Google chrome กำลังแสดง:

"ใช้งานได้! นี่เป็นหน้าเว็บเริ่มต้นสำหรับเซิร์ฟเวอร์นี้ซอฟต์แวร์เว็บเซิร์ฟเวอร์กำลังทำงานอยู่ แต่ยังไม่มีการเพิ่มเนื้อหา"

คำตอบ:


10

ฉันสามารถยืนยันปัญหาของคุณที่ดูเหมือนว่าจะมีผลกระทบระหว่างทั้ง Chrome และ Firefox เฉพาะ Firefox นี่คือคำตอบสำหรับผู้ใช้ที่ได้รับผลกระทบจากปัญหาเดียวกันและหากพวกเขาได้รับผลกระทบจากเบราว์เซอร์ทั้ง / ทั้งหมด ทำตามขั้นตอนนี้เพื่อให้การทำงานนี้ถูกต้อง สมมติว่าคุณแก้ไข/etc/hostsไฟล์ที่ฉันแนะนำ 2 วิธีต่อไปนี้ในการแก้ไขไฟล์:

  • Gedit - gksudo gedit /etc/hosts(ตอนนี้คุณมีวิธีที่เป็นมิตรกับ GUI ในการแก้ไขไฟล์ gksu ซึ่งให้ gksudo ถูกหยุดใน 18.04 อย่างเป็นทางการและที่เก็บในภายหลัง)
  • nano - sudo nano /etc/hosts(ตอนนี้คุณมีวิธีแก้ไขไฟล์อย่างง่าย)

และคุณมีตัวอย่าง:

127.0.0.1 localhost adobe.com

หรือ

127.0.0.1 localhost
127.0.0.1 adobe.com

(ทั้งคู่เป็นสิ่งเดียวกัน)

คุณทำการทดสอบก่อนเพื่อดูว่าเครื่องทำงานได้อย่างถูกต้องหรือไม่ พิมพ์ping adobe.comและควรตอบสนองจาก IP ที่กำหนดให้ ในกรณีนี้ควรตอบกลับด้วย 127.0.0.1 นั่นหมายความว่ามันใช้ได้

จากนั้นเราดำเนินการทดสอบเบราว์เซอร์ต่อ คุณทดสอบ Chrome แล้วและใช้งานได้ คุณเปลี่ยน/etc/hostsระหว่างมีและไม่มีรายการสำหรับ adobe.com และทำงานได้ทุกครั้งที่คุณเปลี่ยน แต่คุณไปกับ Firefox มันอาจจะทำงานได้ในครั้งแรก แต่หลังจากเปลี่ยนhostsไฟล์ไปมามันก็หยุดทำงาน นี่หมายความว่าเป็นปัญหาแคชหรือปัญหาในการแก้ไขชื่อที่ถูกต้อง

ในกรณีของ Firefox และการแก้ไขชื่อ Firefox จะเพิ่มคำนำหน้าwwwไปยังเว็บไซต์ adobe ดังนั้นจึงดูเหมือนว่า "www.adobe.com" แต่บน Chrome ดูเหมือนว่า "adobe.com" พวกเขาทั้งสองชี้ไปที่สถานที่เดียวกันและคำนำหน้า www อยู่ที่นั่นเพื่อบอกคุณว่าสถานที่ที่คุณกำลังเยี่ยมชมเป็นบริการเว็บ แต่ในกรณีที่เกิดปัญหาของคุณคุณจะต้องเพิ่มมันเข้าไปในhostsไฟล์ดังนั้นเมื่อ Firefox เพิ่มคำนำหน้า www มันจะทำงาน ดังนั้นจะมีลักษณะเช่นนี้:

127.0.0.1 localhost
127.0.0.1 adobe.com www.adobe.com

หรือเพียงแค่เดียวกัน

127.0.0.1 localhost adobe.com www.adobe.com

หมายเหตุ: จำไว้ว่าคุณต้องกดF5เพื่อรีเฟรชเว็บไซต์ / แท็บ Firefox หรือปิดแท็บและเปิดอีกครั้งเพื่อทดสอบ อย่างใดการกดEnterอย่างบ้าคลั่งจะไม่ทำ

สิ่งนี้จะช่วยแก้ปัญหาสำหรับผู้ใช้บางคน แต่เมื่อถึงตอนนี้คุณยังไม่ได้แก้ไขปัญหาเราสามารถทดสอบได้ว่าจะเป็นอย่างไร

เรามาถึงที่นี่สองสามระดับของแคชเพื่อตรวจสอบแล้ว คุณได้รับแคชโปรแกรมของคุณในกรณีนี้ Firefox จากนั้นคุณมีแคชระบบของคุณในกรณีนี้ Ubuntu และจากนั้นคุณมีแคชฮาร์ดแวร์ของคุณในกรณีนี้เราเตอร์ของคุณ

สำหรับสิ่งที่ฉันรู้รุ่น Ubuntu Desktop ไม่มีบริการแคช DNS ติดตั้งโดยค่าเริ่มต้น รู้จักกันมากที่สุดคือnscdและถ้าคุณมีการติดตั้งง่าย/etc/init.d/nscd restartจะทำ แต่สำหรับคนส่วนใหญ่พวกเขาจะไม่ได้ติดตั้งสิ่งนี้ดังนั้นเราจึงสามารถลบล้างความผิดของระบบ Ubuntu ได้

นั่นทำให้เราเตอร์และเว็บเบราว์เซอร์ทิ้ง ในกรณีของเราเตอร์คุณจะต้องกำหนดค่าให้หยุดแคช DNS หรือกำหนดค่าใหม่เพื่อแก้ไขปัญหานี้ ทั้งหมดนี้ขึ้นอยู่กับรุ่นเราเตอร์ผู้ผลิต ฯลฯ เราเตอร์บางตัวไม่ทำแคช DNS แต่มีบางอย่างที่คุณต้องดูในการกำหนดค่าหากมีตัวเลือกนี้และหากเปิดใช้งานตัวเลือก แต่ให้เราสมมติว่าคุณไม่มีเราเตอร์ที่เปิดใช้งานการแคช DNS

สิ่งนี้ทำให้เบราว์เซอร์

ในการตรวจสอบว่า Firefox มีแคชไม่ดีกับ DNS Cache หรือไม่คุณสามารถติดตั้ง Add-on เพื่อตรวจสอบ DNS Cache ใน Firefox อย่างใดอย่างหนึ่งที่ผมแนะนำคือแคช DNS

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากรีสตาร์ท Firefox คุณจะเห็นฟันเฟืองที่ด้านล่าง (คล้ายกับ Ubuntu cog ที่มุมขวาบน) คุณสามารถคลิกซ้ายหรือคลิกขวาที่ฟันเฟืองและคุณจะเห็นตัวเลือกต่าง ๆ เช่นเปิด / ปิดการใช้งาน DNS และล้างออก สิ่งนี้จะช่วยในกรณีที่เกิดปัญหาเป็นแคช DNS ของ Firefox เล่นกับมัน.

ฉันคิดว่าฉันได้ทุกวิธีที่คุณสามารถแก้ไขได้ หากฉันพลาดบางสิ่งแจ้งให้ฉันทราบ


หาก Firefox ไม่เคารพhostsไฟล์ของเครื่องท้องถิ่น(นั่นคือหากปัญหายังคงเกิดขึ้นแม้ว่าจะเพิ่มโดเมนที่มีwwwโดเมนย่อยและแม้หลังจากที่มีการรีเฟรชหน้าเพจ) ฉันขอแนะนำให้รายงานว่าเป็นข้อบกพร่อง (ฉันไม่แน่ใจว่าสิ่งที่มันจะเป็นข้อผิดพลาดในเนื่องจาก Firefox สันนิษฐานว่าสิ่งอำนวยความสะดวกการแก้ปัญหา DNS ของระบบปฏิบัติการซึ่งทำหรือควรจะเคารพมัน แต่คุณสามารถรายงานได้firefoxใน Ubuntu และจากนั้นการแก้ไขปัญหาต่อไปอาจเป็นไปได้ retarget จากที่นั่น)
Eliah Kagan

@EliahKagan นอกจากนี้ยังขึ้นอยู่กับว่าโฮสติ้ง / โดเมนอยู่ที่ใดและอย่างไร บางเว็บไซต์มีตัวเลือกในการเปิดใช้งานโดยใช้โดเมนย่อย www และบางเว็บไซต์ไม่มีการกำหนดค่าไว้ล่วงหน้าดังนั้นเมื่อมีผู้พยายามไปที่ www.eliah.com จะไม่สามารถใช้งานได้ แต่ eliah.com จะใช้งานได้
Luis Alvarado

ใช่แน่นอน ฉันไม่ได้บอกว่าwww.foo.netควรทำงานได้เพราะfoo.netผลงาน แต่ถ้าfoo.netและwww.foo.netมีทั้งที่กำหนดให้127.0.0.1ใน/etc/hostsการพิมพ์foo.netในแถบที่อยู่ของเว็บเบราเซอร์และกด Enter 127.0.0.1:80จะส่งผลในเบราว์เซอร์พยายามที่จะเปิดการเชื่อมต่อไปยัง ถ้าไม่เป็นเช่นนั้น
Eliah Kagan

@EliahKagan - Ah! ใช่แน่นอน ในกรณีนี้ถ้ามันไม่ทำงานคอมพิวเตอร์จะถูกปีศาจครอบงำ เราอาจต้องการหมอผีและน้ำมนต์จำนวนมากหรือการวินิจฉัยปัญหาที่ดีขึ้น
Luis Alvarado

หมอผี + น้ำศักดิ์สิทธิ์และการวินิจฉัยที่ดีกว่าดูเหมือนว่าเป็นหลักสูตรที่รอบคอบที่สุด :)
Eliah Kagan

7

ฉันรู้ว่ากระทู้นี้มีอายุหนึ่งปี แต่ฉันสะดุดเมื่อค้นหาคำตอบของปัญหาเดียวกัน ในที่สุดฉันก็พบทางออก! ปรากฎว่า/etc/hostsไฟล์นั้นถูกข้ามโดย DNS อย่างสมบูรณ์ การเปลี่ยนแปลงนี้คุณจะต้องแก้ไข/etc/nsswitch.confและรวมถึงภายใต้files hostsตัวอย่างด้านล่าง:

passwd:         compat
group:          compat
shadow:         compat

hosts:          dns files myhostname <-- this line here.
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

นี่จะทำให้แน่ใจว่า/etc/hostsไฟล์นั้นรวมอยู่ในการตรวจสอบการจำแนกชื่อ มันจะตรวจสอบ DNS ก่อนแล้วจึงhostsไฟล์ ฉันแน่ใจว่า OP ไม่ต้องการข้อมูลนี้อีกต่อไป แต่ยังดีสำหรับผู้ที่ต้องการคำตอบสำหรับปัญหานี้

คุณต้องรีสตาร์ทเพื่อให้สิ่งนี้มีผล


ฉันมี "files mdns4_minimal [NOTFOUND = return] dns mdns4" ที่นั่นใน Ubuntu 12.04 แต่ / etc / hosts ยังคงไม่ทำงาน ... ดูเหมือนว่าฉันกำลังตีปัญหาอื่นอยู่
Shnatsel

คุณสามารถวางรหัสเต็มได้หรือไม่
แซมชลบุรี

นี่คือไฟล์ปรับแต่งแบบเต็ม: pastebin.com/hDBGrrwnฉันคิดว่านี่เป็นค่าเริ่มต้นบน Ubuntu 12.04
Shnatsel

ทุกอย่างดูถูกต้อง คุณพยายามทำอะไร
สามชลบุรี

ฉันไม่ได้รับ: ฉันต้องเพิ่มอะไรในบรรทัดนี้ /etc/hosts? hosts? หรืออะไร?
Hi-Angel

2

ฉันเชื่อว่าetc/hostsใช้งานในระดับคนรักในซอฟต์แวร์เครือข่ายสแต็กมากกว่าเบราว์เซอร์เอง เช่นการเปลี่ยนแปลงในไฟล์นั้นควรมีผลกับเบราว์เซอร์ใด ๆ

สิ่งที่คุณเห็นอาจเป็นผลมาจากรายการแคช DNS ของ Firefox - เช่นคุณเปิดเว็บไซต์ใน Firefox, Firefox จะจดจำที่อยู่ IP ที่สอดคล้องกับโดเมน adobe.com คุณทำการปรับเปลี่ยน/etc/hostsและโหลดหน้าเว็บใหม่ - Firefox ไม่ทำการค้นหา DNS ใหม่ และใช้ข้อมูลที่แคชแทน จากนั้นคุณเปิด Chrome มันจะทำการสืบค้น DNS ใหม่และใช้สิ่งที่คุณป้อน/etc/hostsเป็นที่อยู่ IP สำหรับ adobe.com

การรีสตาร์ท Firefox ควรแก้ไขปัญหา


2

คำตอบทั้งหมดนั้นยอดเยี่ยม แต่วิธีที่สั้นที่สุดในการแก้ไขคือ:

หลังจากแก้ไข / etc / hosts (และอาจจะรีสตาร์ท Firefox), Ctrl+Shift+Rโหลดปัญหาแท็บด้วย มันจะข้ามประเภทของแคช Firefox ที่อาจมี


1

ปัญหาของฉันคือฉันมีหลายรายการสำหรับชื่อโดเมนเดียวกัน ระบบเห็นการเกิดขึ้นครั้งแรกเท่านั้น

127.0.0.1 domain1.com domain2.com domain3.com # <-- WENT UNNOTICED
# .
# .
192.168.1.21 domain1.com # <-- DOESN'T WORK

0

คุณลองได้ไหม:

  1. แก้ไขไฟล์ / etc / hosts
  2. เพิ่มบรรทัดถัดไป

     # /etc/hosts
     127.0.0.1  localhost
     127.0.1.1  myhost01
     127.0.1.2  myhost02
    

0

ใน Ubuntu 14.04 การเปลี่ยนไฟล์ / etc / hosts จะมีเพียงโฮสต์เดียวต่อหนึ่งบรรทัดที่ทำงานให้ฉันฉันพยายามทำงานกับโฮสต์โฮสต์ IP โฮสต์หลายชั่วโมงต่อชั่วโมงแทนที่จะเปลี่ยนเป็นโฮสต์ IP ในแต่ละบรรทัดและทำงาน>


0

ฉันมีปัญหาเดียวกันนี้ใน Ubuntu รุ่นต่างๆ คนล่าสุดเลี้ยงหัวน่าเกลียดเมื่อวันที่ 17.04 และ 16.04 ฉันพบว่าฉันต้องจัดรูปแบบไฟล์โฮสต์เช่นนี้:

127.0.0.1 localhost

127.0.0.1 www.facebook.com facebook.com

เช่นคุณต้องใส่ URL ทั้ง www และอีกครั้งโดยไม่ต้อง ฉันไม่รู้ว่าทำไมงานนี้ เพียงบันทึกไฟล์แล้ว ping url เช่นเดียวกับใน:

ping www.facebook.com

และควรแก้ไขเป็นที่อยู่ลูปแบ็คหรือที่อยู่อื่น ๆ ที่คุณต้องการ:

80.82.xxx.xxx www.example.com example.com

ทำงานให้ฉัน

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