Tại sao tệp / etc / hosts không hoạt động?


29

Tôi đã gặp vấn đề với điều này trong một thời gian và đã thử mọi thứ tôi biết, vì vậy tôi đoán rằng cuối cùng đã đến lúc để yêu cầu một số trợ giúp.

Bất kỳ chỉnh sửa nào tôi thực hiện để /etc/hostskhông hoạt động.

Thí dụ:

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

Trong ví dụ trên, khi tôi truy cập dev.julianfernand.es(cái này không tồn tại), nó sẽ tải từ đó 192.168.1.100.

Nếu tôi ping, nó hoạt động tốt. Tuy nhiên, khi tôi truy cập dev.julianfernand.esbằng Google Chrome hoặc Firefox thì không.

Bây giờ, sau khi tôi khởi động lại một vài lần, nó hoạt động. Nhưng vì tôi làm việc tại một công ty lưu trữ WordPress được quản lý, tôi xử lý nhiều tình huống phải chỉnh sửa tệp của mình để xem trang web của khách hàng trên máy chủ của chúng tôi.

Tôi không thể tiếp tục khởi động lại máy tính của mình. Nó không hiệu quả chút nào. Khởi động lại dịch vụ mạng không hoạt động, tương tự để xóa bộ nhớ cache (ngay cả bộ đệm DNS DNS bên trong).

Có ai có ý tưởng ở đây không? Điều này xảy ra với sơ cấp (dựa trên Ubuntu 12.04) và Ubuntu 13.10 (hàng ngày). Chưa thử với bất kỳ phiên bản nào khác.

PS: nếu vấn đề này, tôi có một máy chủ NGINX đang chạy trên máy này với PHP-FPM và MySQL.

Cảm ơn trước :)


Khó biết vấn đề. Khi truy cập trang web qua tên máy chủ (dev.julianfernand.es) không thành công, bạn có thể truy cập nó qua địa chỉ IP (192.168.1.100) không?
Panther

@ bodhi.zazen Vâng, tôi có thể. Tuy nhiên, vì công ty chúng tôi không sử dụng ý tưởng "truy cập IP để truy cập trang web" mặc định từ các máy chủ được chia sẻ, nên điều này không hoạt động.
Julian Fernandes

Tôi không đề nghị bạn truy cập các trang web qua ip như một giải pháp lâu dài. Thông tin giúp gỡ lỗi mặc dù nó loại trừ các vấn đề khác từ tường lửa để định tuyến đến các vấn đề phía máy chủ.
Panther

Còn nếu bạn nhập địa chỉ IP vào thanh địa chỉ của trình duyệt thì sao?
Sergiy Kolodyazhnyy

Câu trả lời:


14

Trong Ubuntu nếu bạn muốn xóa bộ đệm DNS, bạn cần khởi động lại nscddaemon.

Cài đặt nscdbằng lệnh sau:

sudo apt-get install nscd

Xóa bộ đệm DNS trong Ubuntu bằng lệnh sau:

sudo service nscd restart

HOẶC LÀ

sudo service dns-clean start

Tham khảo: http : //www.upub Ubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html


Vui lòng kiểm tra cấu hình Nginx và tệp nhật ký lỗi. Phải có một số đầu mối trong đó khi bạn truy cập trang web.
Arnold

7

Sau đây làm việc cho tôi: thêm

addn-hosts=/etc/hosts

trong

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

giết dnsmasq và

service NetworkManager restart

6

Đối với tôi giải pháp là chỉnh sửa /etc/nsswitch.conftập tin (bạn có thể sử dụng lệnh sudo vim /etc/nsswitch.conf). Tôi đã thay đổi dòng:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

đến:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

và bây giờ nó đang hoạt động như mong đợi!


1
Bạn có thể muốn fileslà mục đầu tiên nếu bạn muốn /etc/hostsđược ưu tiên hơn các kết quả từ máy chủ DNS.
muru

Điều đó thật lạ nhưng đó không phải là một sai lầm, tôi phải có chính xác thứ tự này để làm cho nó hoạt động.
jmarceli

4

Câu trả lời được chấp nhận hoạt động trong 12.04 đến 13.04 bằng cách vô hiệu hóa dnsmasq , nhưng nó đã ngừng hoạt động đối với tôi trong 13.10. Tôi tìm thấy giải pháp mới sau đây cho 13.10.

Chỉnh sửa / etc / default / dnsmasq của bạn và thay đổi ENABLED=1thành ENABLED=0và khởi động lại.


2
tôi không có bất kỳ tập tin dnsmasq trong đường dẫn cụ thể. Tôi đang dùng linux 15.04
Hiren

Không có câu trả lời được chấp nhận nữa. Câu trả lời nào bạn đang nói về?
toon81

3

Từ: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubfox-1204.html

Một "tính năng" mới trong phiên bản máy tính để bàn Ubuntu 12.04 là sử dụng dnsmasqlàm plugin cho NetworkManager cho DNS cục bộ. Dnsmasq nhằm tăng tốc các dịch vụ DNS và DHCP nhưng đi kèm với một tác dụng phụ đáng tiếc: dnsmasqlưu trữ DNS cục bộ và bỏ qua các thay đổi đối với/etc/hosts . Tôi thường xuyên thay đổi tệp máy chủ trong khi làm việc trên các trang web để "tính năng" này khá khó chịu.

Giải pháp là vô hiệu hóa dnsmasqtrong tệp cấu hình Networkmanager. Mở /etc/NetworkManager/NetworkManager.confvà nhận xét dòng:

dns=dnsmasq

NetworkManager.confTập tin của tôi chứa như sau:

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

[ifupdown]
managed=false

Xem thêm https://bugs.launchpad.net/ubfox/+source/network-manager/+orms/993298


1
Đã thử điều này vào ngày 13.10 và sơ cấp, vẫn không có gì. Nhưng cảm ơn vì sự giúp đỡ! :)
Julian Fernandes

@JulianFernandes Dường như điều này không hoạt động vào ngày 13.10. Tôi đã làm theo lời khuyên này và nó đã hoạt động trở lại vào ngày 12.04, nhưng sau khi nâng cấp lên 13.10, dnsmasq đã hoạt động trở lại và tôi không thể thoát khỏi nó.
Đánh dấu E. Haase


1

Đơn giản và cập nhật

  1. Tạo /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Đặt các dòng như address=/whatever/1.2.3.4trong đó. Xem các tài liệu (tìm kiếm --address). Ký tự đại diện là có thể : address/.whatever./1.2.3.4.
  3. Giết dnsmasq( lỗi ).
  4. Khởi động lại nó : $ service network-manager restart.

0

Có vẻ như thiết lập của bạn rất giống với tôi. Tôi có một hộp chạy Ubuntu làm máy chủ văn phòng và máy chủ phát triển. Trên hộp đó, tôi chạy các ứng dụng Nginx, Apache, Tomcat, Rails và bất cứ thứ gì tôi cần.

Từ máy Mac của tôi, tôi chỉ có thể thêm một mục nhập máy chủ và tải máy chủ với bất kỳ tên nào tôi cần, nhưng từ máy khách Sơ cấp, điều đó không hoạt động.

Tôi đã thử các bản sửa lỗi ở trên, không thành công.

Những gì tôi đã làm là chạy Squid Proxy Server và thêm tên máy chủ vào / etc / hosts trên máy chủ. (Chỉnh sửa yêu cầu khởi động lại con mực.)

Sau đó, tạo các cài đặt proxy phù hợp trong bảng điều khiển của trình duyệt hoặc hệ điều hành của bạn.


0

Kiểm tra các quyền trên /etc/hoststập tin.

Trên dịch vụ đám mây của tôi sau khi sao chép máy chủ, các quyền trên tệp máy chủ đã thay đổi từ 644thành 600để không thể đọc được tệp bởi apache ( www-data) tôi đoán. Tôi chạy sudo chmod 644 hoststừ /etcđó và sửa nó.

Vấn đề bắt đầu như:

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

Tôi đã theo dõi nó xuống biến máy chủ trong MongoClient trỏ vào localhost. Tôi không thể ping localhost hoặc tên máy chủ.


Đôi khi tôi đã thay đổi thành công 'localhost' thành '127.0.0.1' trong các trường hợp này
pbr

0

Chỉnh sửa /etc/nsswitch.conf, nhận xét bên dưới dòng bằng cách thêm # ở phía trước của dòng

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

và thêm

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Về cơ bản, cấu hình được sắp xếp lại. Bây giờ quá trình tra cứu tên miền sẽ tham khảo tệp đầu tiên /etc/hostsvà sau đó nó sẽ tham khảo DNS. Với cấu hình mặc định, nó truy cập DNS trước bất kỳ dịch vụ hoặc tệp thích hợp nào khác.

Để kiểm tra nhanh xem nó có hoạt động hay không, bạn có thể sử dụng

sudo python -m SimpleHTTPServer 80

để tạo một Máy chủ HTTP đơn giản để phục vụ các tệp từ thư mục và sau đó nhận xét bên dưới dòng trong /etc/hoststệp

127.0.0.1      localhost
127.0.1.1      01hw730983

và thêm

127.0.0.1       content

sau đó vào một trình duyệt và gõ content/, nếu bạn có thể thấy cấu trúc thư mục thì nó không hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.