참고: 이것은 재포스트입니다.내 이전 질문, 보류되었으며 더 명확하게 설명하기 위해 바꿔 달라고 요청했습니다(이것이 더 이해가 되기를 바랍니다).
DNS 서버가 설치되어 있고 모든 도메인의 장치가 단일 DNS 서버에서 DNS 쿼리를 처리할 수 있도록 상위 도메인( )과 두 개의 하위 도메인( 및 )을 bind
호스팅하도록 설정하려고 합니다 .example.org
cnc.example.org
report.example.org
첫 번째 질문이 가능합니까?
그렇다면 왜 다음 오류가 발생합니까?
내가 받은 도메인 nslookup host1
에서 이 작업을 수행 할 때report.example.org
server can't find host1: SERVFAIL
내가 받은 도메인 nslookup host2
에서 이 작업을 수행 할 때cnc.example.org
server can't find host1: SERVFAIL
설정은 다음과 같습니다:
호스트 1:
- IP 192.168.252.21/24
- 도메인 이름 확인 192.168.252.22
/etc/hosts
포함하다host1.cnc.example.org
호스트 2:
- IP 192.168.252.20/24
- 도메인 이름 확인 192.168.252.22
/etc/hosts
포함하다host2.report.example.org
DNS 서버:
- IP 192.168.252.22/24
- 도메인 이름 확인 127.0.0.1
/etc/hosts
포함하다DNSServer.example.org
named.conf.local
구성
/
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "example.org" {
type master;
file "/etc/bind/zones/example.org";
# allow-transfer { 192.168.252.22; };
};
zone "cnc.example.org" {
type master;
file "/etc/bind/zones/cnc.example.org";
# allow-transfer { 192.168.252.22; };
};
zone "report.example.org" {
type master;
file "/etc/bind/zones/report.example.org";
# allow-transfer { 192.168.252.22; };
};
zone "252.168.192.in-appr.arpa" {
type master;
file "/etc/bind/zones/reverse/rev.252.168.192";
allow-transfer { 192.168.252.22; };
};
example.org
구성
;
; BIND data for example.org or report.example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
;delegated zones
cnc.example.org. IN NS DNSServer.example.org.
report.example.org. IN NS DNSServer.example.org.
* DNSServer의 /etc/resolv.conf 출력 *
# Generated by NetworkManager
search example.org
nameserver 127.0.0.1
* 호스트1의 /etc/resolv.conf 출력 *
# Generated by NetworkManager
search report.example.org
nameserver 192.168.252.22
* 호스트 2의 /etc/resolv.conf 출력 *
# Generated by NetworkManager
search cnc.example.org
nameserver 192.168.252.22
* DNSServer의 dig DNSServer 출력 *
root@DNSServer:/etc/bind/zones/reverse# dig DNSServer
; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 45573
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:47:23 GMT 2017
;; MSG SIZE rcvd: 38
* dig DNSServer.example.org 출력 사용 *
root@DNSServer:/home/osboxes# dig DNSServer.example.org
; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer.example.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12335
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer.example.org. IN A
;; ANSWER SECTION:
DNSServer.example.org. 10800 IN A 192.168.252.22
;; AUTHORITY SECTION:
example.org. 10800 IN NS DNSServer.example.org.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 11:01:19 GMT 2017
;; MSG SIZE rcvd: 79
* DNSServer의 dig host1 출력 *
root@DNSServer:/etc/bind/zones/reverse# dig host1
; <<>> DiG 9.10.3-P4-Debian <<>> host1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:48:15 GMT 2017
;; MSG SIZE rcvd: 40
cnc.example.org
구성
;
; BIND data for example.org or report.example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
@ IN NS DNSServer.example.org.
; main domain name servers - A records
;DNSServer IN A 192.168.252.22
;192.168.252.0/24 - A Records
host1.cnc.example.org. IN A 192.168.252.21
report.example.org
구성
;
; BIND data for example.org or report.example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
@ IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
;192.168.252.0/24 - A Records
host2.report.example.org. IN A 192.168.252.20
감사해요
답변1
위임을 사용할 수 있지만 꼭 필요한 경우가 아니면 단순하게 유지하고 example.org
, cnc.example.org
및 가 포함된 영역을 사용하는 것이 좋습니다 report.example.org
.
;
; BIND data for example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
; public targets
cnc IN CNAME host1.cnc
report IN CNAME host2.report
; hosts delivering services
host1.cnc IN A 192.168.252.21
host2.report IN A 192.168.252.20
의견을 인용하면 다음과 같습니다.
DNS 서버에 있을 때
nslookup host1
나는 다음을 얻습니다.root@host1:/home/osbixes# nslookup host2 Server: 127.0.0.1 Address 127.0.0.1#53 ** server can’t find host2: SERVFAIL
DNSServer에는 검색 경로가 없지만 도메인은 입니다 example.org
. 이는 정규화되지 않은 모든 이름이 해당 도메인에 있어야 함을 의미합니다. 귀하의 답변이 잘못 반환 host2.example.org
되지 않았습니다 . nslookup
이 경우에는 domain example.org
귀하의 /etc/resolv.conf
것을 로 바꾸 search example.org report.example.org
거나 를 찾아야 합니다 nslookup host2.report
.
Host1 또는 Host2에서 나는 다음을 얻습니다.
root@host1:/home/osbixes# nslookup host2 Server: 192.168.252.22 Address 192.168.252.22#53 ** server can’t find host2: SERVFAIL
같은 이유. 귀하의 도메인(검색 경로)에는 /etc/resolv.conf
포함된 구성 요소가 포함되어 있지 않으므로 host2
어디에서도 nslookup
정규화되지 않은 이름이 표시되지 않습니다 host2
.
나는 호스트1과 호스트2의
/etc/hosts
합계 파일이 여전히 합계/etc/hostname
여야 한다고 가정합니다.host1.cnc.example.org
host2.report.example.org
/etc/hosts
"해야 한다"라고 말할 때 무슨 뜻인지 잘 모르겠습니다 host1.cnc.example.org
. 이 /etc/hosts
파일은 호스트 이름과 IP 주소를 매핑하는 또 다른 방법입니다. 호스트 이름이 2~3개만 있는 경우 내부 DNS의 복잡성을 피하고 해당 항목을 /etc/hosts
. 중앙 집중식 솔루션. (그러나 이것은 nslookup
의도적으로 무시 된다는 점을 기억하십시오 /etc/hosts
.)
이렇게 하면 어느 호스트에서나
nslookup host1.cnc.example.org
IPnslookup host2.report.example.org
주소가 올바르게 확인됩니다.
예. 정규화된 이름을 제공하면 올바르게 확인 nslookup
됩니다 bind
. 이는 DNS 중 하나가 제대로 작동하고 있음을 증명합니다.
모든 쿼리를 처리하려면 DNS 서버가 필요하며
example.org
새 장치가 네트워크에 통신하여 새 명령 실행을 요청할 때 쿼리하고cnc.example.org
( 192.168.252.21) 로 연결되지만 보고서를 네트워크로 다시 보내려고 할 때 도메인을 쿼리 하고 (192.168.252.20) 로 직접 연결합니다.report.example.org
cnc.example.org
host1.cnc.example.org
report.example.org
host2.report.example.org
이를 위해 CNAME
DNS의 (별칭) 레코드를 사용하여 쿼리를 report.example.org
호스트에 매핑합니다 host2.report.example.org
. 귀하의 질문에 host2
호출하면 안되는 기술적 이유가 없다는 점에 유의하십시오 host2.example.org
. CNAME
레코드는 현재 (하위)도메인의 호스트뿐만 아니라 어디든 가리킬 수 있습니다.
답변2
예. 하지만 하위 도메인에 대해 별도의 구성을 만들 필요는 없습니다.
끝에 있는 "A"는 .
전체 도메인 이름을 나타내고, "A"가 없으면 .
원래 도메인의 하위 도메인을 나타냅니다.
cnc.example.com
해당 항목은 구성에만 추가하세요 example.com
.
host1.cnc IN A 192.168.252.21
따라서 다음 업데이트가 필요합니다.
- 삭제
cnc.example.org
하고report.example.com
named.conf.local
.
상위 도메인 구성에 하위 도메인에 해당하는 모든 항목(후행 없음)을 추가합니다. 부모 영역에서 명시적으로 언급할 수도 있습니다.host1.cnc.example.com. IN A 192.168.252.21
cnc.example.com
해당 영역 파일을 삭제 하고 서버를report.example.com
다시 시작합니다 .BIND