방금 네트워킹에 대해 배웠습니다.
저는 Mint-18을 사용하고 있습니다. 사용 network-manager
. dnsmasq
활성화되었습니다.
특정 도메인 이름으로 끝나는 주소를 개인 이름 서버를 통해 확인하고 싶습니다.
server
dnsmasq 구성 파일의 옵션을 사용하여 개인 이름 서버를 추가하면 모든 것이 실패합니다. 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/hosts
dnsmasq
dnsmasq
요약하자면 dnsmasq.resolv
다른 이름이 전달될 IP 주소를 설정하세요. 설정 에 dnsmasq
따라 특정 도메인에 대한 DNS 서버의 IP 주소와 해당 도메인의 이름에 대한 주소를 얻을 수 있는 위치가 결정됩니다.server
local