전달 모드에서만 작동하는 바인딩9 기반 DNS 서버를 만들었습니다.
이것은 내 명명된.conf.options 파일입니다.
#acl goodclients {
# localhost;
# localnets;
#};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
recursion yes;
#allow-query { goodclients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
클라이언트를 구성했고 모든 것이 잘 작동했지만 다음 오류가 발생했습니다.
May 15 08:54:49 digitalocean named[3294]: client x.x.x.x#8137 (unix.stackexchange.com): query (cache) 'unix.stackexchange.com/A/IN' denied
여기서 xxxx는 내 공용 IP 주소입니다.
DNS 서버는 공개 서버이며 클라이언트 구성에서 해당 공개 IP를 사용합니다.
오류 메시지를 무시해야 합니까?
DNS 서버의 공개 IP(yyyy)를 사용하여 google.com을 채굴할 때:
dig @y.y.y.y google.com
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> @y.y.y.y google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 28091
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A
;; Query time: 15 msec
;; SERVER: y.y.y.y#53(y.y.y.y)
;; WHEN: Sun May 15 14:57:56 CEST 2016
;; MSG SIZE rcvd: 39
이것은 매우 혼란스럽습니다.
답변1
allow-query
및 지시어를 주석 처리했기 때문에 작동하지 않습니다 goodclients
. 해당 주석을 제거하고 goodclients
쿼리에 응답해야 하는 IP/네트워크로 BIND를 채워야 합니다.
acl goodclients {
localhost;
x.x.x.0/24;
};
options {
...
allow-query { goodclients; };
}
~에서http://www.zytrax.com/books/dns/ch7/queries.html#allow-query
allowed-query는 서버에 쿼리를 발행하도록 허용되는 일치하는 IP 주소 목록을 정의합니다.
또한 BIND 9.4.1-P1부터 기본 동작이 allow-query
허용에서 허용 안함으로 변경됩니다.
답변2
그것을 발견. 해결책은 다음을 추가하는 것입니다.
allow-query {
any;
};
편집하다: Rui F Ribeiro의 솔루션은 작동하지만 공용 서버를 만들어야 합니다. 보안 문제를 피하려면 설명을 참조하세요.