Network Manager와 함께 작동하도록 dnsmasq 개인 이름 서버를 얻으려면 어떻게 해야 합니까?

Network Manager와 함께 작동하도록 dnsmasq 개인 이름 서버를 얻으려면 어떻게 해야 합니까?

방금 네트워킹에 대해 배웠습니다.

저는 Mint-18을 사용하고 있습니다. 사용 network-manager. dnsmasq활성화되었습니다.

특정 도메인 이름으로 끝나는 주소를 개인 이름 서버를 통해 확인하고 싶습니다.

serverdnsmasq 구성 파일의 옵션을 사용하여 개인 이름 서버를 추가하면 모든 것이 실패합니다. google.com을 구문 분석할 수도 없습니다.

> nslookup google.com
;; connection timed out; no servers could be reache

해당 옵션을 제거 server하고 동일한 개인 이름 서버를 상단에 추가하고 \etc\resolve.conf네트워크 관리자를 다시 시작하면 문제가 다시 작동하고 개인 호스트 이름을 확인할 수 있습니다.

> nslookup abcprivate.net
Server:     nn.nn.nn.nn
Address:    nn.nn.nn.nn#53

Non-authoritative answer:
Name:   abcprivate.net
Address: mm.mm.mm.mm

그래서 나는 개인 네임서버가 정확하다는 것을 알고 있습니다. 이것이 내가 dnsmasq를 구성한 방법임에 틀림없습니다.

이것은 내 구성 파일입니다.

>cat /etc/NetworkManager/dnsmasq.d/dnsmasq.conf
server=/abcprivate.net/nn.nn.nn.nn

여기서 abcprivate.net은 개인 네트워크의 도메인이고 nn은 숫자입니다.

답변1

내 설정이 정확했지만 사용되지 않은 것으로 나타났습니다.

>ps ax | grep dnsmasq
 1273 ?        S      0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d

보시다시피 conf 파일을 사용하고 있지 않습니다. 이것이 사실인지 확인하기 위해 몇 가지 추가 테스트를 수행했습니다.


결국 문제를 해결했지만 다음과 같은 방법으로 문제를 해결했습니다.

  • Network-manager dnsmasq 플러그인 비활성화: dns해당 행을 주석 처리합니다./etc/NetworkManager/NetworkManager.conf
  • 이동 /etc/NetworkManager/dnsmasq.d/dnsmasq.conf하다/etc/dnsmasq.conf
  • 모든 네임서버 캡처를 /etc/dnsmasq.conf에 추가합니다(아래 파일 목록 참조).
  • /etc/resolve.conf 상단에 dnsmasq 주소를 추가합니다( /etc/resolvconf/resolv.conf.d/head파일을 변경하여...아래 파일 목록 참조).
  • Resolve.conf를 읽지 않도록 dnsmasq를 시작합니다. ( dnsmasq -d -R -q무슨 일이 일어나고 있는지 볼 수 있도록 화면에 쿼리를 기록하고 싶습니다.)
  • 1. 모든 것이 잘 작동합니다. systemD 단위 파일에 dnsmasq를 캡슐화했습니다.

$ cat /etc/dnsmasq.conf
cache-size=1000
listen-address=127.0.1.1
server=8.8.8.8
server=/abcprivate.net/nn.nn.nn.nn
cache-size=1000

$ cat /etc/resolvconf/resolv.conf.d/head    
nameserver 127.0.1.1

$ cat /etc/systemd/system/dnsmasq.service
[Unit]
Description=SystemD - Dnsmasq is a Domain Name System (DNS) forwarder
Requires=network-manager.service

[Service]
Type=simple
ExecStart=/usr/sbin/dnsmasq -d -q -R

답변2

나는 당신이 원하는 것을 하는 것이 가능하다고 믿지만 dnsmasq, 당신도 몇 가지 문제에 직면하고 있는 것 같습니다.dnsmasq.conf

다음 위치에서 이 줄의 주석 처리를 제거해야 할 수도 있습니다 dnsmasq.conf.

resolv-file=/etc/dnsmasq.resolv

그런 다음 다른 이름 서버를 포함하는 파일이 필요합니다 /etc/dnsmasq.resolv. 나는 이것을 가지고있다:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 4.3.2.1

또한 다음과 같은 줄이 필요하다고 생각합니다 /etc/dnsmasq.conf.

server=/.intranet/10.0.0.3
server=/0.0.10.in-addr.arpa/10.0.0.3
local=/.intranet/

첫 번째 서버는 ".intranet" 도메인의 IP 주소를 설정합니다. 내 원래 DSL 모뎀은 내부적으로 10.0.0.0/24 주소를 사용했기 때문에 오늘 얻은 주소입니다. 두 번째 줄을 사용하면 IP 주소에서 호스트 이름을 찾을 수 있습니다. 세 번째 줄은 ".intranet" 도메인 이나 DHCP에 등록된 클라이언트 에서 dnsmasq정규화된 이름을 찾도록 지시합니다. 10.0.0.3은 실행 중인 시스템의 IP 주소입니다 ./etc/hostsdnsmasqdnsmasq

요약하자면 dnsmasq.resolv다른 이름이 전달될 IP 주소를 설정하세요. 설정 에 dnsmasq따라 특정 도메인에 대한 DNS 서버의 IP 주소와 해당 도메인의 이름에 대한 주소를 얻을 수 있는 위치가 결정됩니다.serverlocal

관련 정보