/ etc / hosts를 사용하도록 NetworkManager의 dnsmasq 구성


22

DNSMASQ를 설치했지만 53 포트가 사용 중이므로 시작되지 않았습니다.

우분투에는 이미 dnsmasq 패키지가 있으며 작동 중이라는 것을 알았습니다.

이제 문제는 ... 그냥 / etc / hosts에서 호스트를 해결할 수 있기를 원합니다.

nslookup somehostonlan localhost , / etc / hosts 파일에서 가져온 특정 IP로 확인됩니다.

그러나 이것은 일어나지 않습니다.

왜? BTW, 캐싱 DNS 서버로서 잘 작동합니다. 나는 단지 / etc / hosts 파일에서 호스트를 해결하기를 원합니다.

답변:


22

인터넷 속도를 높이기 위해 ubuntu 12.04는 Network Manager에 플러그인을 추가하여 dns 항목을 캐시하는 로컬 dns 서버 인 dnsmasq를 시작했습니다. 문제는 플러그인이 --no-hosts 문자열을 하드 코딩했다는 것입니다.

따라서 한 가지 해결책은 NetworkManager 구성 파일에 플러그인을로드하는 라인을 주석 처리하고 NetworkManager를 다시 시작하는 것입니다.

sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#\1/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

또 다른 해결책은 dnsmasq를 랩하여 원하지 않는 인수를 필터링하는 것입니다.

sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin

exec $dnsmasq `echo $@ | sed -e s/--no-hosts//`
EOF

sudo chmod 755 /usr/sbin/dnsmasq

버그가 자신에게 영향을 미치는 것으로 표시 하십시오 .

시스템 파일을 패치하지 않는 다른 솔루션

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

addn-hosts=/etc/hosts

7

이 버그는 여전히 나에게 영향을 미쳤다 (Ubuntu 14.04).

마지막 으로이 행 'addn-hosts = / etc / hosts'를 Newworkmanager 패키지의 dnsmasq 구성 파일에 추가하는 솔루션을 찾았습니다.

echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart

아이디어는 / etc / hosts를 추가 호스트 파일로 추가하는 것입니다.

해결책을 찾을 수 있다고해도 바이너리 파일 / usr / sbin / NetworkManager에서 하드 코딩 된 옵션 '--no-hosts'는 실망합니다.


7

2015 년 8 월 현재 다른 답변은 구식입니다.

간단한 답변

  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.

1

dnsmasq는 자동으로 /etc/hosts파일을 사용해야 합니다. 이것은 -h명령 행 옵션 또는 no-hosts구성 옵션 으로 비활성화 할 수 있습니다 . 기본 구성으로 설정되지 않을 것으로 예상됩니다.

dnsmasq를 강제로 호스트 파일을 다시로드하십시오. 구성 파일을 변경하려면 다시 시작해야합니다. 이 명령 중 하나가 작동해야합니다.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

no-hosts지정한 시스템으로 작업 하는 경우 addn-hosts옵션을 사용하여 시스템 을 재정 의 할 수 있어야 합니다. 일반적으로 이는 추가 파일을 /etc/hosts형식으로 읽는 데 사용 됩니다. 이것은 DNS가 제공하지만 /etc/hosts파일 에는 원하지 않는 추가 호스트 데이터를 지정하는 데 사용될 수 있습니다 . /etc/hosts추가 호스트 데이터가 대체 파일로 제공되는 동안 패키지 관리자 및 관련 도구가 관리 하는 데 사용할 수 있습니다 .


/etc/dnsmasq.conf에는 모든 옵션이 주석 처리되어 있습니다. 재
장전

내가 무슨 짓을했는지 모르겠습니다. 지금 작동하는 것 같군
bakytn

3
실제로 답을 모른다면 왜이 질문에 대답 하시겠습니까? "기본 구성으로 설정 될 것으로 기대하지 않는다"는 사실이 NetworkManger에서 dnsmasq로 설정되고 하드 코딩되어 있기 때문에 사실이 아닙니다.
Justin Buser

구성 파일에서 변경 사항을로드하려면 dnsmasq를 다시 시작해야합니다.
txwikinger

@txwikinger 많은 옵션 파일은 신호를 dnsmasq받을 때 다시 읽습니다 HUP. 여기에는 /etc/hosts/etc/ethers파일 이 모두 포함됩니다 . 재시작 시간이 충분히 빠르기 때문에 클라이언트가 응답을 얻지 못하는 경우가 드 will니다.
BillThor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.