เหตุใดไฟล์ / etc / hosts จึงไม่ทำงาน


29

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

การแก้ไขใด ๆ ที่ฉันทำไป/etc/hostsไม่ได้ผล

ตัวอย่าง:

julian@ifrit:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   ifrit
192.168.1.100   dev.julianfernand.es

ในตัวอย่างข้างต้นเมื่อฉันเข้าถึงdev.julianfernand.es(นี้ไม่ได้อยู่) 192.168.1.100ก็ควรจะโหลดจาก

ถ้าฉัน ping มันใช้งานได้ดี อย่างไรก็ตามเมื่อฉันเข้าถึงdev.julianfernand.esด้วย Google Chrome หรือ Firefox มันไม่ได้

ตอนนี้หลังจากที่ฉันรีสตาร์ทสองสามครั้งก็ใช้งานได้ แต่เนื่องจากฉันทำงานกับ บริษัท โฮสติ้ง WordPress ที่มีการจัดการฉันจึงจัดการกับสถานการณ์ต่าง ๆ ที่ฉันต้องแก้ไขไฟล์เพื่อดูเว็บไซต์ของลูกค้าบนเซิร์ฟเวอร์ของเรา

ฉันไม่สามารถรีสตาร์ทคอมพิวเตอร์ของฉันได้ มันไม่ได้มีประสิทธิภาพเลย การรีสตาร์ทบริการระบบเครือข่ายไม่ทำงานเช่นเดียวกับการล้างแคช (แม้กระทั่งแคช DNS ของ Chrome ภายใน)

ไม่มีใครมีความคิดที่นี่? สิ่งนี้เกิดขึ้นกับ primaryOS (ขึ้นอยู่กับ Ubuntu 12.04) และ Ubuntu 13.10 (ทุกวัน) ยังไม่ได้ลองกับรุ่นอื่น ๆ

PS:ถ้าเป็นกรณีนี้ฉันมีเซิร์ฟเวอร์ NGINX ที่ทำงานบนเครื่องนี้ด้วย PHP-FPM และ MySQL

ขอบคุณล่วงหน้า :)


ยากที่จะรู้ปัญหา เมื่อเข้าถึงไซต์ผ่านชื่อโฮสต์ (dev.julianfernand.es) ล้มเหลวคุณสามารถเข้าถึงไซต์ผ่านทางที่อยู่ IP (192.168.1.100) ได้หรือไม่
Panther

@ bodhi.zazen ใช่ฉันทำได้ อย่างไรก็ตามเนื่องจาก บริษัท ของเราไม่ได้ใช้แนวคิด "เข้าถึง IP เพื่อเข้าถึงเว็บไซต์" เริ่มต้นจากโฮสต์ที่ใช้ร่วมกันจึงไม่ทำงาน
Julian Fernandes

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

ถ้าคุณพิมพ์ที่อยู่ ip ในแถบที่อยู่ของเบราว์เซอร์ของคุณล่ะ
Sergiy Kolodyazhnyy

คำตอบ:


14

ใน Ubuntu หากคุณต้องการล้างแคช DNS คุณต้องรีสตาร์ทnscddaemon

ติดตั้งnscdโดยใช้คำสั่งต่อไปนี้:

sudo apt-get install nscd

ล้างแคช DNS ใน Ubuntu โดยใช้คำสั่งต่อไปนี้:

sudo service nscd restart

หรือ

sudo service dns-clean start

การอ้างอิง: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html


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

7

ต่อไปนี้ใช้งานได้สำหรับฉัน: เพิ่ม

addn-hosts=/etc/hosts

ใน

/etc/NetworkManager/dnsmasq.d/hosts.conf

ฆ่า dnsmasq และ

service NetworkManager restart

6

สำหรับฉันทางออกคือการแก้ไข/etc/nsswitch.confไฟล์ (คุณอาจใช้คำสั่งsudo vim /etc/nsswitch.conf) ฉันเปลี่ยนสายแล้ว:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

ไปที่:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

และตอนนี้ก็ทำงานได้ตามที่คาดไว้!


1
คุณอาจต้องการfilesเป็นรายการแรกหากคุณต้องการ/etc/hostsนำหน้าผลลัพธ์จากเซิร์ฟเวอร์ DNS
muru

มันแปลก แต่ก็ไม่ผิดฉันต้องมีคำสั่งนี้เพื่อให้มันทำงาน
jmarceli

4

คำตอบที่ได้รับการยอมรับทำงานใน 12.04 ถึง 13.04 โดยการปิดการใช้งานdnsmasqแต่มันก็หยุดทำงานสำหรับฉันใน 13.10 ฉันพบโซลูชันใหม่ต่อไปนี้สำหรับ 13.10

แก้ไข / etc / default / dnsmasq ของคุณและเปลี่ยนENABLED=1เป็นENABLED=0และรีสตาร์ท


2
ฉันไม่มีไฟล์ dnsmasq ใด ๆ ในพา ธ ที่ระบุ ฉันใช้ linux 15.04
Hiren

ไม่มีคำตอบที่ยอมรับได้อีกต่อไป คุณกำลังพูดถึงคำตอบอะไร
toon81

3

จาก: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

"ฟีเจอร์" ใหม่ใน Ubuntu รุ่นเดสก์ท็อป 12.04 คือใช้dnsmasqเป็นปลั๊กอินสำหรับ NetworkManager สำหรับ DNS ในเครื่อง dnsmasq มีวัตถุประสงค์เพื่อเพิ่มความเร็วในการ DNS และ DHCP บริการ แต่มาพร้อมกับผลข้างเคียงหนึ่งที่โชคร้าย: dnsmasqแคช DNS /etc/hostsและการละเว้นท้องถิ่นการเปลี่ยนแปลง ฉันทำการเปลี่ยนแปลงไฟล์โฮสต์บ่อยครั้งในขณะที่ทำงานบนเว็บไซต์ดังนั้น "คุณสมบัติ" นี้ค่อนข้างน่ารำคาญ

วิธีแก้ไขคือปิดใช้งานdnsmasqในไฟล์กำหนดค่า Networkmanager เปิด/etc/NetworkManager/NetworkManager.confและแสดงความคิดเห็นบรรทัด:

dns=dnsmasq

NetworkManager.confไฟล์ของฉันมีดังต่อไปนี้:

[main]
plugins=ifupdown,keyfile
# dns=dnsmasq

[ifupdown]
managed=false

ดูเพิ่มเติมที่https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298


1
พยายามทำสิ่งนี้ใน 13.10 และระดับประถมศึกษายังไม่มีอะไร แต่ขอบคุณสำหรับความช่วยเหลือ! :)
Julian Fernandes

@JulianFernandes ดูเหมือนว่าสิ่งนี้จะไม่ทำงานใน 13.10 ฉันทำตามคำแนะนำนี้และทำงานได้ในวันที่ 12.04 แต่หลังจากอัปเกรดเป็น 13.10 dnsmasq กลับมาแล้วและฉันไม่สามารถกำจัดมันได้
Mark E. Haase


1

ง่ายและอัปเดต

  1. /etc/NetworkManager/dnsmasq.d/hosts.confสร้าง
  2. ใส่สายเหมือนaddress=/whatever/1.2.3.4ในนั้น ดูเอกสาร (ค้นหา--address) address/.whatever./1.2.3.4สัญลักษณ์แทนเป็นไปได้:
  3. ฆ่าdnsmasq( บั๊ก )
  4. รีสตาร์ทมัน: $ service network-manager restart.

0

ดูเหมือนว่าการตั้งค่าของคุณจะเหมือนกับของฉันมาก ฉันมีกล่องที่ใช้ Ubuntu เป็นเซิร์ฟเวอร์สำนักงานและโฮสต์การพัฒนาของฉัน ในกล่องนั้นฉันใช้งาน Nginx, Apache, Tomcat, Rails apps และทุกอย่างที่ฉันต้องการ

จาก Mac ของฉันฉันสามารถเพิ่มรายการโฮสต์และโหลดเซิร์ฟเวอร์ด้วยชื่ออะไรก็ได้ที่ฉันต้องการ แต่จากไคลเอนต์ ElementaryOS ที่ไม่ทำงาน

ฉันลองแก้ไขด้านบนแล้วโดยไม่สำเร็จ

สิ่งที่ฉันทำคือการเรียกใช้ Squid Proxy Server และเพิ่มชื่อโฮสต์ไปยัง / etc / hosts บนเซิร์ฟเวอร์ (การแก้ไขต้องเริ่มปลาหมึกใหม่)

หลังจากนั้นให้ตั้งค่าพร็อกซีที่เหมาะสมในเบราว์เซอร์ของคุณหรือแผงควบคุมของระบบปฏิบัติการ


0

ตรวจสอบการอนุญาตใน/etc/hostsไฟล์

บนบริการคลาวด์ของฉันหลังจากการโคลนเซิร์ฟเวอร์การอนุญาตในไฟล์โฮสต์เปลี่ยนจาก644เป็น600ดังนั้นไฟล์ไม่สามารถอ่านได้โดย apache ( www-data) ฉันเดา ฉันวิ่งsudo chmod 644 hostsออกมาจาก/etcนั้นก็ซ่อมมัน

ปัญหาเริ่มต้นจาก:

MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted. 

ฉันติดตามมันไปยังตัวแปรเซิร์ฟเวอร์ใน MongoClient ชี้ไปที่ localhost ฉันไม่สามารถ ping localhost หรือชื่อโฮสต์


บางครั้งผมเคยประสบความสำเร็จเปลี่ยน 'localhost' ถึง '127.0.0.1 ในประเภทนี้กรณี
PBR

0

แก้ไข/etc/nsswitch.confแสดงความคิดเห็นด้านล่างบรรทัดโดยการเพิ่ม # ที่ด้านหน้าของบรรทัด

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

และเพิ่ม

hosts:          files mdns4_minimal [NOTFOUND=return] dns

โดยทั่วไปการกำหนดค่าจะถูกจัดลำดับใหม่ ตอนนี้กระบวนการค้นหาโดเมนจะปรึกษาไฟล์ก่อนซึ่งก็คือ/etc/hostsหลังจากนั้นจะศึกษา DNS ด้วยการกำหนดค่าเริ่มต้นจะให้คำปรึกษา DNS ก่อนบริการหรือไฟล์อื่นที่เหมาะสม

สำหรับการทดสอบอย่างรวดเร็วไม่ว่าจะใช้งานได้หรือไม่ก็ตาม

sudo python -m SimpleHTTPServer 80

เพื่อสร้างเซิร์ฟเวอร์ HTTP อย่างง่ายเพื่อให้บริการไฟล์จากไดเรกทอรีจากนั้นแสดงความคิดเห็นด้านล่างบรรทัดใน/etc/hostsไฟล์

127.0.0.1      localhost
127.0.1.1      01hw730983

และเพิ่ม

127.0.0.1       content

จากนั้นไปที่เบราว์เซอร์และพิมพ์content/หากคุณสามารถเห็นโครงสร้างของไดเรกทอรีมันทำงานไม่ได้

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