Since following a delegation resets most fetch context state, address marks (FCTX_ADDRINFO_MARK) set inside lib/dns/resolver.c are not preserved when a delegation is followed. This is fine for full recursive resolution but when named is configured with "forward first;" and one of the specified forwarders times out, triggering a fallback to full recursive resolution, that forwarder should no longer be consulted at each delegation point subsequently reached within a given fetch context. Add a new badnstype_t enum value, badns_forwarder, and use it to mark a forwarder as bad when it times out in a "forward first;" configuration. Since the bad server list is not cleaned when a fetch context follows a delegation, this prevents a forwarder from being queried again after falling back to full recursive resolution. Yet, as each fetch context maintains its own list of bad servers, this change does not cause a forwarder timeout to prevent that forwarder from being used by other fetch contexts.
63 lines
1.0 KiB
Plaintext
63 lines
1.0 KiB
Plaintext
/*
|
|
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* See the COPYRIGHT file distributed with this work for additional
|
|
* information regarding copyright ownership.
|
|
*/
|
|
|
|
options {
|
|
query-source address 10.53.0.2;
|
|
notify-source 10.53.0.2;
|
|
transfer-source 10.53.0.2;
|
|
port @PORT@;
|
|
pid-file "named.pid";
|
|
listen-on { 10.53.0.2; };
|
|
listen-on-v6 { none; };
|
|
recursion no;
|
|
dnssec-validation no;
|
|
};
|
|
|
|
zone "." {
|
|
type hint;
|
|
file "root.db";
|
|
};
|
|
|
|
zone "example1." {
|
|
type master;
|
|
file "example.db";
|
|
};
|
|
|
|
zone "example2." {
|
|
type master;
|
|
file "example.db";
|
|
};
|
|
|
|
zone "example3." {
|
|
type master;
|
|
file "example.db";
|
|
};
|
|
|
|
zone "example4." {
|
|
type master;
|
|
file "example.db";
|
|
};
|
|
|
|
zone "example7." {
|
|
type master;
|
|
file "example.db";
|
|
};
|
|
|
|
zone "grafted." {
|
|
type master;
|
|
file "example.db";
|
|
};
|
|
|
|
zone "1.0.10.in-addr.arpa." {
|
|
type master;
|
|
file "example.db";
|
|
};
|