isc-dhcp-server + BIND9 + Unbound + dnscrypt 및 DDNS가 작동하지 않습니다


3

기발한

Ubuntu 서버를 실행하는 홈 라우터에 복잡한 DNS 설정이 있습니다. 저의 목표는

  1. 내가 관심있는 지역 레오 케이션 감지 조회를 위해 로컬 ISP의 DNS를 조회하십시오.
  2. dnscrypt-proxy대부분의 조회를 위해. 특정 도메인 (내가 아는 일부)의 경우, 내가 모르는 특정 도메인과 다른 도메인의 대부분의 ISP는 잘못된 주소로 조회를 블랙홀 트래픽에 중독시킵니다. 이것이 기본 DNS 조회 서버가되기를 바랍니다.
  3. 인터넷 DNS 조회를 최소화하십시오. 인터넷 연결이 안정적이지 않으며 하루 중 특정 시간에 DNS 검색이 성공하지 못할 확률이 50/50 정도로 낮습니다.
  4. 주로 역방향 조회가 작동하도록 내 내부 도메인을 보유하십시오.

이러한 목표를 달성하기 위해 구현해야하는 솔루션은

  1. unbound 캐시 캐싱, 적극적으로 캐시 유지 및 캐시 누락을 위해 관련 DNS 서버로 주소 전달을위한 LAN의 기본 DNS 서버
  2. dnscrypt-proxy127.0.2.1:53는 AS forward-addr에 대한 "."언 바운드에서
  3. bind192.168.1.1:40내 로컬 도메인에 대한 권한 만
  4. isc-dhcp-server IP 주소를 전달하고 정방향 및 역방향 조회를 삽입합니다.

나는 대부분의 목표를 달성했다. 따라서 LAN에있는 비 정적 호스트에 대한 정방향 / 역방향 조회를 제외하고 는 크게 변경해야 합니다.

내 의심은 isc-dhcp-serverDDNS 업데이트를 전송하여 unbound어떤 조치를 취해야할지 전혀 모른다는 것입니다. 어떻게 묻죠 isc-dhcp-server에 보내 192.168.1.1:40, bind내 클라이언트에 대한 DNS 서버가되고 싶어하더라도 192.168.1.1:53, unbound또는 수 unbound에 DDNS 업데이트를 전달하는 방법을 알고 bind?

오류 메시지 예

Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPREQUEST for 192.168.1.101 from 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0
Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPACK on 192.168.1.101 to 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0
Sep 29 08:01:22 ubuntu dhcpd[7057]: Unable to add forward map from Xbox-SystemOS.mydomain.ddns.net. to 192.168.1.101: timed out

관련 라인 dhcpd.conf

ddns-updates on;
ddns-update-style interim;
key rndc-key { algorithm hmac-md5; secret MIND_YOUR_BUSINESS; }

subnet ...... {
    ....
    option domain-name-servers 192.168.1.1;
    ...
    ddns-domainname "mydomain.ddns.net.";
    ddns-rev-domainname "in-addr.arpa.";
}

관련 라인 /etc/bind/named.conf.local

zone "mydomain.ddns.net" {
        type master;
        file "/etc/bind/zones/db.mydomain.ddns.net"; # Zone file path
       allow-update { key rndc-key; };               # allow for dynamic updates
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/zones/db.192.168";           # 192.168.0.0/16 subnet
        allow-update { key rndc-key; };              # allow for dynamic updates
};

업데이트 1

파고 들자 dhcpd.conf나는 바인딩 서버의 포트 번호를 지정할 수 없다는 결론에 도달했습니다. 그러나에서 ddns-local-address4DDNS에 다른 서버 IP 주소를 지정할 수 있는 매직 옵션이라는 이름 이 domain-name-server option있습니다.

수신하도록 바인드를 변경 127.0.0.1했으며 크게 작동합니다. 그러나 권한이 부족합니다.

Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: signer "rndc-key" approved
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' A 192.168.1.104
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' TXT "316a52934f2adcaf4c95004e870a4c0f70"
Sep 29 19:21:40 ubuntu named[31415]: /etc/bind/zones/db.mydomain.ddns.net.jnl: open: permission denied
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': error: journal open failed: unexpected error
Sep 29 19:21:40 ubuntu kernel: [212079.779512] audit: type=1400 audit(1475148100.710:25): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/etc/bind/zones/db.mydomain.ddns.net.jnl" pid=31419 comm="named" requested_mask="w" denied_mask="w" fsuid=110 ouid=0

그러나 최선의 시도는 해당 파일을 업데이트하기 위해 바인드에 충분한 권한을 부여하는 것입니다. 무엇을 제공합니까?

ps aux | grep named
bind     31415  0.0  0.2 429564 19572 ?        Ssl  19:10   0:00 /usr/sbin/named -f -u bind

ls -la /etc/bind/zones
total 16
drwxrwsr-x 2 root bind 4096 Sep 29 19:21 .
drwxr-sr-x 3 root bind 4096 Sep 29 19:07 ..
-rw-r--r-- 1 root bind  340 Sep 28 08:01 db.192.168
-rw-r--r-- 1 root bind  514 Sep 27 07:40 db.mydomain.ddns.net
-rw-rw-r-- 1 bind bind    0 Sep 29 19:21 db.mydomain.ddns.net.jnl

업데이트 2

명명 된 이름으로 내 의류 프로필을 수정했는데 더 이상 권한 오류가 발생하지 않습니다.

bind127.0.0.1에서 직접 쿼리하면 모든 것이 작동합니다.

그러나를 통해 쿼리 할 때 조회 ubuntubind올바르게 전달하지 않습니다 .

내가 지금 뭘 잘못하고 있니?

에서 unbound.conf

    local-zone: "1.168.192.in-addr.arpa." nodefault
    local-zone:   "168.192.in-addr.arpa." nodefault

    stub-zone:
            name:   "168.192.inaddr.arpa."
            stub-addr: 127.0.0.1

    stub-zone:
            name: "1.168.192.inaddr.arpa."
            stub-addr: 127.0.0.1

    stub-zone:
            name: "mydomain.ddns.net."
            stub-addr: 127.0.0.1

저널 파일을 작성 하려면 BIND 디렉토리에 / etc / bind / zones / 디렉토리에 대한 쓰기 액세스 권한이 있어야 합니다. 일반적 chown bind:bind /etc/bind/zones으로 충분합니다 (BIND 사용자를 디렉토리의 소유자로 만드십시오).
milli

답변:


0

에 추가 파일이 /etc/unbound/unbound.d/있어의 해상도를 방해했습니다 mydomain.ddns.net.. 파일이 제거되면 문제가 해결되었습니다.

최종 셋업

  1. dnscrypt-proxy듣고 127.0.2.1.
  2. bind듣고 127.0.0.1.
  3. unbound을 (를) 듣고 질문에 있는 문장 을 사용하여 192.168.1.1전달 하는 기본값은으로 설정됩니다 .mydomain.ddns.netbindstub-zonednscrypt-proxy
  4. isc-server-dhcpbindddns*옵션을 사용하여 업데이트dhcpd.conf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.