나는 가지고있다:
ns1.internal
IP가있는 내부 DNS 서버192.168.0.4
.- 외부 TLD
mydns.example.com
및 내부 IP 가있는 외부 DNS 서버192.168.0.5
. 인터넷 (정적 NAT 규칙을 통해)과 로컬 네트워크에서 모두 액세스 할 수 있습니다.
영역 subzone.mydns.example.com
을 내부 DNS 서버 로 전달하도록 외부 DNS 서버를 설정하려고 합니다. 내부 DNS 서버는이 영역에 대해 권한이 있습니다.
중요 : 내부 DNS 서버 구성을 수정할 수 없습니다. 그러나 문제를 진단하는 데 필요한 경우 읽을 수 있습니다.
/etc/named.conf
외부 DNS 서버의 파일 :
options {
directory "/var/named";
version "get lost";
recursion yes;
allow-transfer {"none";};
allow-query { any; };
allow-recursion { any; };
};
logging{
channel example_log{
file "/var/log/named/named.log" versions 3 size 2m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category default{
example_log;
};
};
// Zones:
zone "mydns.example.com" {
type master;
file "mydns.example.com.zone";
allow-update{none;};
};
zone "subzone.mydns.example.com" {
type forward;
forwarders { 192.168.0.4; };
};
/var/named/mydns.example.com.zone
외부 DNS 서버의 파일 :
$TTL 1
$ORIGIN mydns.example.com.
@ IN SOA mydns.example.com. root.mydns.example.com. (
2003080800 ; se = serial number
60 ; ref = refresh
60 ; ret = update retry
60 ; ex = expiry
60 ; min = minimum
)
@ IN NS mydns.example.com.
이제 일부 DNS 레코드를 해결하려고합니다. 외부 서버 영역이 작동하는 것 같습니다.
workstation$ dig mydns.example.com NS +tcp +short
mydns.example.com.
그러나 전달 영역이 작동하지 않습니다.
workstation$ dig subzone.mydns.example.com NS +tcp
; <<>> DiG 9.8.1-P1 <<>> subzone.mydns.example.com NS +tcp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 36887
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;subzone.mydns.example.com. IN NS
;; AUTHORITY SECTION:
mydns.example.com. 1 IN SOA mydns.example.com. root.mydns.example.com. 2003080800 60 60 60 60
;; Query time: 3 msec
;; SERVER: 91.144.182.3#53(91.144.182.3)
;; WHEN: Thu Jul 19 17:27:54 2012
;; MSG SIZE rcvd: 108
이러한 명령이 원격 인터넷 호스트와 내부 호스트에서 실행될 때 결과는 동일합니다.
subzone.mydns.example.com.
외부 이름 서버에서 확인하고 내부 서버를 명시 적으로 지정 하려고하면 다음 과 같은 결과가 나타납니다.
mydns$ dig @192.168.0.4 subzone.mydns.example.com NS
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> @192.168.0.4 subzone.mydns.example.com NS
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 87
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 3
;; QUESTION SECTION:
;subzone.mydns.example.com. IN NS
;; ANSWER SECTION:
subzone.mydns.example.com. 3600 IN NS ns1.internal.
;; ADDITIONAL SECTION:
ns1.internal. 3600 IN A 192.168.0.4
;; Query time: 613 msec
;; SERVER: 192.168.0.4#53(192.168.0.4)
;; WHEN: Thu Jul 19 18:20:55 2012
;; MSG SIZE rcvd: 163
뭐가 문제 야? 전달 DNS 영역을 예상대로 작동하도록 구성하려면 어떻게합니까?
내 의심 (확인 방법은 확실하지 않음)은 외부 DNS 서버가 내부 서버에서 레코드를 가져 와서 ns1.internal이 영역을 담당한다는 사실을 덮어 쓰지 않는다는 것입니다. 따라서 클라이언트의 리졸버는 해당 이름 (ns1.internal)을 확인하려고 시도하지만 실패합니다.
—
vadipp
정확히 무슨 일이 일어나고 있는지 알아 보려면 발굴 + 추적을 시도하십시오. 또한 nscd를 사용하여 쿼리 로깅을 활성화하고 오류를 확인하십시오.
—
코어 덤프
먼저 외부 요청의 로그 레벨을 높여 개별 요청을 기록하십시오. 내 subzone.mydns.example.com 영역을 DNS 서버 mydns.example.com 자체에 위임해야한다고 추측합니다. 이를 추가하려고 mydns.example.com zonefile :
—
닐스 Toedtmann
subzone IN NS mydns.example.com.
(나는 zonefile 어딘가에 또한, 올바른 @ = mydns.example.com에 대한 A 레코드가 가정?)