폐쇄된 네트워크 DHCP+DNS - in-addr.arpa 업데이트 측이 유효하며 전달 측에서는 업데이트를 거부합니다.

폐쇄된 네트워크 DHCP+DNS - in-addr.arpa 업데이트 측이 유효하며 전달 측에서는 업데이트를 거부합니다.

폐쇄된 네트워크의 작은 문제를 해결하려고 합니다. 새 DNS와 DHCP를 구축했는데 DNS가 DHCP에서 보낸 전달 정보로 파일 업데이트를 거부하는 것을 제외하고는 모든 것이 잘 작동합니다. dhcpd.conf를 여러 번 변경하고 파일 및 디렉터리 권한 등을 확인하고 다시 확인하려고 했습니다. 원본 파일 대신 수정된 파일을 보여드려서 죄송합니다. 민감한 데이터가 변경되었습니다. 이 문제의 결과는 두 가지 nslookup 예에서 볼 수 있습니다.

$ nslookup
> testname1
Server:    10.0.0.100
Address:   10.0.0.100#53
** server can't find testname1: REFUSED

> 10.0.0.101
Server:    10.0.0.100
Address:   10.0.0.100#53
101.0.0.1.in-addr.arpa     name = testname1.example.com.

보시다시피 클라이언트 이름을 찾는 것은 작동하지 않지만 IP 주소를 묻는 것은 작동합니다. 이는 클라이언트 PC가 정방향 및 역방향 영역 파일에 미리 정의되어 있지 않고 DHCP가 데이터를 보내야 하는 경우에 발생합니다. 역방향 파일은 업데이트되고 순방향 파일은 수정되지 않습니다. 명명된.run 로그에 따르면 이는 클라이언트가 DHCP에서 주소를 요청할 때 발생합니다.

nov 07 08:51:41 localhost.localdomain dhcpd[2744]: DHCPREQUEST for 10.0.0.101 from 1a:2b:3c:4d:5e:6f via ens32
nov 07 08:51:41 localhost.localdomain dhcpd[2744]: DHCPACK on 10.0.0.101 to 1a:2b:3c:4d:5e:6f via ens32
nov 07 08:51:41 localhost.localdomain named[2549]: client 127.0.0.1#42022/key rndc-key: signer "rndc-key" approved
nov 07 08:51:41 localhost.localdomain named[2549]: client 127.0.0.1#42022/key rndc-key: updating zone '0.0.10.in-addr.arpa/IN': deleting rrset at '101.0.0.10.in-addr.arpa' PTR
nov 07 08:51:41 localhost.localdomain named[2549]: client 127.0.0.1#42022/key rndc-key: updating zone '0.0.10.in-addr.arpa/IN': adding an RR at '101.0.0.10.in-addr.arpa' PTR
nov 07 08:51:41 localhost.localdomain dhcpd[2744]: Added reverse map from 101.0.0.10.in-addr.arpa. to hostname1.example.com
nov 07 08:51:44 localhost.localdomain dhcpd[2744]: DHCPINFORM from 10.0.0.101 via ens32
nov 07 08:51:44 localhost.localdomain dhcpd[2744]: DHCPACK to 10.0.0.101 (1a:2b:3c:4d:5e:6f) via ens32
nov 07 08:51:44 localhost.localdomain named[2549]: client 10.0.0.101#54095: update 'example.com/IN' denied
nov 07 08:51:44 localhost.localdomain named[2549]: client 10.0.0.101#55624: update 'example.com/IN' denied

누가 무엇을 요청하는지 자세히 살펴보면 내 문제를 볼 수 있습니다. 127.0.0.1은 0.0.10.in-addr.arpa/IN에 대한 업데이트 요청을 요청하고 전달된 업데이트 요청은 대신 10.0.0.101에 의해 이루어집니다. of 127.0.0.1 .물론, names.conf의 보안 정책은 DNSSEC 키를 가진 사람만이 영역을 업데이트할 수 있다고 정의합니다.

dhcpd 구성 파일

authoritative;
option domain-name "example.com";
option domain-name-servers ns1.example.com;
default-lease-time 72000;
max-lease-time 72000;
ddns-update-style interim;
ddns-updates on;
update-static-leases on;
ddns-domainname "example.com";
###allow client-updates;
###ignore client-updates;
###do-forward-updates;  #if uncommented, this line crashes dhcpd at start, with strange errors reported in config file.
key "rndc-key" {
   algorithm hmac-md5;
   secret "secret-DNS-key";
};

subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.110 10.0.0.120;
  option broadcast-address 10.0.0.255;
  option domain-name-servers 10.0.0.100;
  option domain-name "example.com";
  option routers 10.0.0.1;
}

zone example.com. {
  primary localhost;
  key rndc-key;
}

zone 0.0.10.in-addr.arpa. {
  primary localhost;
  key rndc-key;
}

host testname1 {
  option host-name "testname1.example.com";
  hardware ethernet 1a:2b:3c:4d:5e:6f;
  fixed-address 10.0.0.101;
}

명명된 구성 파일

options {
        listen-on port 53 { 127.0.0.1; 10.0.0.100;}; #IP address of DNS server and localhost
#       listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 10.0.0.0/24;}; #which computers can ask
        allow-transfer  { localhost; }; #No backup DNS server yet
        recursion no;   #no connection to internet, to speed up requests for unknown names and domains.

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

/*      forwarders {                    #nothing, so far
                10.0.0.100
        }
*/
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/rndc.key";

zone "example.com." IN {
  type master;
  file "data/example.com";
  allow-update {key rndc-key;};
#  allow-update {127.0.0.1;10.0.0.0/24;};
};

zone "0.0.10.in-addr.arpa." IN {
  type master;
  file "data/0.0.10.in-addr.arpa";
  allow-update {key rndc-key;};
#  allow-update {127.0.0.1;10.0.0.0/24;};
};

ls -al /var/이름이 지정된/데이터

drwxrwx---. 2 named named    4096  7. nov 10.11 .
drwxrwx---. 7 named named    4096  7. nov 09.02 ..
-rw-r--r--  1 named named    1810  7. nov 10.11 example.com
-rw-r--r--. 1 named named    2640  7. nov 09.58 example.com.jnl
-rw-r--r--  1 named named 1494887  7. nov 10.34 named.run
-rw-r--r--  1 named named    2353  7. nov 10.10 0.0.10.in-addr.arpa
-rw-r--r--. 1 named named    8010  7. nov 09.58 0.0.10.in-addr.arpa.jnl

정방향 영역 파일, example.com

$TTL 604800     ; 1 week
example.com                IN SOA  ns1.example.com. admin.example.com. (
                            2016110411 ; serial
                            604800     ; refresh (1 week)
                            86400      ; retry (1 day)
                            2419200    ; expire (4 weeks)
                            604800     ; minimum (1 week)
                            )
                    NS      ns1.example.com.

testname2                A       10.0.0.102

역방향 영역 파일, 0.0.10.in-addr.arpa

$TTL 604800     ; 1 week
0.0.10.in-addr.arpa   IN SOA  ns1.example.com. admin.example.com. (
                            34         ; serial
                            604800     ; refresh (1 week)
                            86400      ; retry (1 day)
                            2419200    ; expire (4 weeks)
                            604800     ; minimum (1 week)
                            )
                    NS      ns1.example.com.

102                       PTR     testname2.example.com.

키 없이 10.0.0.0/24에서 업데이트를 허용하도록 명명된.conf를 변경하면 이 문제를 쉽게 해결할 수 있습니다. 작동하는지 테스트했지만 보안은 터무니없을 것입니다. 더 나은 답변을 찾고 있습니다. 역방향 파일 요청은 localhost에서 오는 것으로 처리되는 반면 정방향 파일 요청은 클라이언트 IP에서 오는 것으로 처리되는 이유는 무엇이며 이를 해결하는 방법은 무엇입니까?

편집: "채굴" 테스트 결과를 추가했습니다.

발굴 10.0.0.101

; <<>> DiG 9.4.2-P2 <<>> 10.0.0.101
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 14648
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;10.0.0.101.                  IN      A

;; Query time: 1 msec
;; SERVER: 10.0.0.100#53(10.0.0.100)
;; WHEN: Tue Nov  8 09:43:50 2016
;; MSG SIZE  rcvd: 30

마이닝 테스트 이름 1

; <<>> DiG 9.4.2-P2 <<>> testname1
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 60894
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;testname1.                         IN      A

;; Query time: 1 msec
;; SERVER: 10.0.0.100#53(10.0.0.100)
;; WHEN: Tue Nov  8 09:44:07 2016
;; MSG SIZE  rcvd: 23

testname1.example.com을 살펴보세요.

; <<>> DiG 9.4.2-P2 <<>> testname1.example.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 40151
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;testname1.example.com.                        IN      A

;; AUTHORITY SECTION:
example.com.               604800  IN      SOA     ns1.example.com. admin.example.com. 2016110411 604800 86400 2419200 604800

;; Query time: 1 msec
;; SERVER: 10.0.0.100#53(10.0.0.100)
;; WHEN: Tue Nov  8 09:44:15 2016
;; MSG SIZE  rcvd: 78

관련 정보