/ 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.

핑하면 제대로 작동합니다. 그러나 dev.julianfernand.esChrome 또는 Firefox를 사용하여 액세스 할 때 그렇지 않습니다.

이제 몇 번 다시 시작하면 작동합니다. 그러나 관리되는 WordPress 호스팅 회사에서 일하기 때문에 서버에서 고객의 웹 사이트를 보려면 파일을 편집해야하는 많은 상황을 처리합니다.

컴퓨터를 계속 다시 시작할 수 없습니다. 전혀 생산적이지 않습니다. 캐시를 지우는 경우와 마찬가지로 네트워킹 서비스를 다시 시작해도 작동하지 않습니다 (내부 Chrome DNS 캐시).

누구든지 여기에 아이디어가 있습니까? 이것은 elementaryOS (Ubuntu 12.04 기반)와 Ubuntu 13.10 (매일)에서 발생합니다. 아직 다른 버전으로 시도하지 않았습니다.

추신 : 이 문제가 발생하면이 기계에서 PHP-FPM 및 MySQL을 사용하는 NGINX 서버가 있습니다.

미리 감사드립니다 :)


문제를 알기가 어렵습니다. 호스트 이름 (dev.julianfernand.es)을 통해 사이트에 액세스 할 수없는 경우 ip 주소 (192.168.1.100)를 통해 사이트에 액세스 할 수 있습니까?
Panther

@ bodhi.zazen 예, 가능합니다. 그러나 회사는 공유 호스트에서 기본 "액세스 IP를 사용하여 웹 사이트에 액세스"아이디어를 사용하지 않으므로 작동하지 않습니다.
Julian Fernandes

장기적인 솔루션으로 ip를 통해 웹 사이트에 액세스하도록 제안하지 않았습니다. 이 정보는 방화벽에서 서버 측 문제로의 라우팅에 이르기까지 다른 문제를 배제하기 때문에 디버깅에 도움이됩니다.
Panther

브라우저의 주소 표시 줄에 IP 주소를 입력하면 어떻습니까?
Sergiy Kolodyazhnyy 오전

답변:


14

우분투에서 DNS 캐시를 플러시하려면 nscd데몬 을 다시 시작해야합니다 .

nscd다음 명령을 사용하여 설치 하십시오.

sudo apt-get install nscd

다음 명령을 사용하여 우분투에서 DNS 캐시 플러시 :

sudo service nscd restart

또는

sudo service dns-clean start

참조 : http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html


Nginx 구성 및 오류 로그 파일도 확인하십시오. 사이트에 액세스 할 때 실마리가 있어야합니다.
Arnold

7

다음은 나를 위해 일했습니다 : 추가

addn-hosts=/etc/hosts

...에서

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

dnsmasq를 죽이고

service NetworkManager restart

6

나에게 해결책은 /etc/nsswitch.conf파일 을 편집하는 것이 었습니다 (command 사용 가능 sudo vim /etc/nsswitch.conf). 나는 줄을 바꿨다 :

hosts:          files mdns4_minimal [NOTFOUND=return] dns

에:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

이제 예상대로 작동합니다!


1
당신은 아마 원하는 files당신이 원하는 경우 첫 번째 항목으로 /etc/hostsDNS 서버에서 결과보다 우선 할 수 있습니다.
muru

그것은 이상하지만 실수는 아닙니다. 제대로 작동하려면이 순서가 있어야합니다.
jmarceli

4

허용 된 답변은 12.04 ~ 13.04에서을 비활성화하여 작동 dnsmasq하지만 13.10에서 나를 위해 작동을 멈췄습니다. 13.10에 대한 다음과 같은 새로운 솔루션을 찾았습니다.

/ etc / default / dnsmasq를 편집하고로 변경 ENABLED=1ENABLED=0후 다시 시작하십시오.


2
지정된 경로에 dnsmasq 파일이 없습니다. 저는 리눅스 15.04에 있습니다
Hiren

더 이상 허용되는 답변이 없습니다. 당신은 어떤 대답을하고 있습니까?
toon81

3

보낸 사람 : http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

Ubuntu 12.04 데스크탑 에디션의 새로운 "기능"은 dnsmasq로컬 DNS 용 NetworkManager에 대한 플러그인으로 사용 하는 것입니다. Dnsmasq는 DNS 및 DHCP 서비스의 속도를 높이기위한 것이지만 불행한 부작용이 있습니다. dnsmasq로컬 DNS를 캐시하고의 변경 사항을 무시합니다 /etc/hosts. 웹 사이트에서 작업하는 동안 호스트 파일을 자주 변경하므로이 "기능"은 상당히 성가신 일입니다.

해결책은 dnsmasqNetworkmanager 구성 파일에서 비활성화 하는 것입니다. 줄을 열고 /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과 초등학교 OS에서 이것을 시도했지만 여전히 아무것도 아닙니다. 그러나 도움을 주셔서 감사합니다! :)
Julian Fernandes

@JulianFernandes 13.10에서 작동하지 않는 것 같습니다. 나는이 조언을 따르고 12.04에서 다시 작동했지만 13.10으로 업그레이드 한 후 dnsmasq가 돌아 왔고 제거 할 수 없었습니다.
Mark E. Haase 2019


1

간단하고 업데이트

  1. 을 만듭니다 /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. address=/whatever/1.2.3.4그것에 선을 넣으십시오 . 문서를 참조하십시오 ( --address). 와일드 카드가 가능합니다 : address/.whatever./1.2.3.4.
  3. 죽여라 dnsmasq( bug ).
  4. 다시 시작하십시오 $ service network-manager restart.

0

설정이 내 것과 매우 흡사합니다. 사무실 서버 및 개발 호스트로 Ubuntu를 실행하는 상자가 있습니다. 그 상자에서 Nginx, Apache, Tomcat, Rails 앱 및 기타 필요한 것을 실행합니다.

내 Mac에서 간단히 호스트 항목을 추가하고 필요한 이름으로 서버를로드 할 수 있지만 ElementaryOS 클라이언트에서는 작동하지 않습니다.

나는 위의 수정을 시도했지만 성공하지 못했습니다.

내가 한 것은 Squid Proxy Server를 실행하고 서버의 / etc / hosts에 호스트 이름을 추가하는 것입니다. (편집은 오징어를 다시 시작해야합니다.)

그런 다음 브라우저 또는 OS 제어판에서 적절한 프록시 설정을 지정하십시오.


0

에 대한 권한을 확인하십시오 /etc/hosts파일에 .

호스트에 대한 사용 권한에서 변경된 파일 서버를 복제 한 후 내 클라우드 서비스에 644600파일이 아파치 (읽을 수 없습니다 수 있도록 www-data) 같아요. 나는 실행 sudo chmod 644 hosts에서/etc 그게 고정.

문제는 다음과 같이 시작되었습니다.

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

localhost를 가리키는 MongoClient의 서버 변수까지 추적했습니다. localhost 또는 호스트 이름을 ping 할 수 없습니다.


이런 종류의 경우에 때때로 '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.