Initial version on public git
This commit is contained in:
@@ -0,0 +1,560 @@
|
||||
|
||||
|
||||
|
||||
|
||||
dnsop O. Kolkman
|
||||
Internet-Draft 12 May 2026
|
||||
Intended status: Informational
|
||||
Expires: 13 November 2026
|
||||
|
||||
|
||||
In-tree Hints for DNS Resiliency
|
||||
draft-kolkman-in-tree-hints-pre-00
|
||||
|
||||
Abstract
|
||||
|
||||
By configuring so called in-tree hints in recursive nameservers and
|
||||
by following operational practices, the resiliency against certain
|
||||
types of DNS failures increases. We describe the approach, the
|
||||
necessary operational practices, and the dilemmas this approach
|
||||
introduces.
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This Internet-Draft is submitted in full conformance with the
|
||||
provisions of BCP 78 and BCP 79.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering
|
||||
Task Force (IETF). Note that other groups may also distribute
|
||||
working documents as Internet-Drafts. The list of current Internet-
|
||||
Drafts is at https://datatracker.ietf.org/drafts/current/.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as "work in progress."
|
||||
|
||||
This Internet-Draft will expire on 13 November 2026.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (c) 2026 IETF Trust and the persons identified as the
|
||||
document authors. All rights reserved.
|
||||
|
||||
This document is subject to BCP 78 and the IETF Trust's Legal
|
||||
Provisions Relating to IETF Documents (https://trustee.ietf.org/
|
||||
license-info) in effect on the date of publication of this document.
|
||||
Please review these documents carefully, as they describe your rights
|
||||
and restrictions with respect to this document. Code Components
|
||||
extracted from this document must include Revised BSD License text as
|
||||
described in Section 4.e of the Trust Legal Provisions and are
|
||||
provided without warranty as described in the Revised BSD License.
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 1]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
2. The in-tree hints concept . . . . . . . . . . . . . . . . . . 4
|
||||
2.1. Recursive nameserver . . . . . . . . . . . . . . . . . . 4
|
||||
2.2. Domain Owner . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
3. Operational Considerations . . . . . . . . . . . . . . . . . 6
|
||||
3.1. Signalling . . . . . . . . . . . . . . . . . . . . . . . 6
|
||||
3.2. Achieving true resiliency of services within the
|
||||
domain. . . . . . . . . . . . . . . . . . . . . . . . . . 7
|
||||
3.3. Serving stale data . . . . . . . . . . . . . . . . . . . 7
|
||||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 8
|
||||
5. Policy Considerations . . . . . . . . . . . . . . . . . . . . 8
|
||||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
|
||||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
8. Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
9. Appendix: Example configuration in Unbound . . . . . . . . . 9
|
||||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
10.1. Normative References . . . . . . . . . . . . . . . . . . 9
|
||||
10.2. Informative References . . . . . . . . . . . . . . . . . 10
|
||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||
|
||||
1. Introduction
|
||||
|
||||
|
||||
The Domain Name System (DNS) is a remarkably stable and resilient
|
||||
system. However, in many environments people are looking on how they
|
||||
can remain in control over their own environments and reduce external
|
||||
dependencies.
|
||||
|
||||
This memo documents an operational approach that, with minor support
|
||||
of recursive nameserver can offer one of the elements towards greater
|
||||
autonomy and resilience of infrastructure dependent on a specific
|
||||
domain.
|
||||
|
||||
In an illustrative scenario, consider an enterprise operating under
|
||||
the domain example.net that provides essential services, such as
|
||||
logistics, to users on its campus. If the transit connection to the
|
||||
broader Internet were to fail, the consequences could be significant.
|
||||
Specifically, if the domain data for example.net is not cached within
|
||||
the enterprise network, users will experience DNS resolution
|
||||
failures. This means they will be unable to access critical services
|
||||
because the necessary delegation from the .net top-level domain to
|
||||
example.net is unavailable.
|
||||
|
||||
Moreover, and perhaps more importantly, this approach offers
|
||||
protection against various attack vectors that could compromise the
|
||||
delegation process. For instance, man-in-the-middle (MITM) attacks
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 2]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
may attempt to alter delegation records, which could lead to denial
|
||||
of service, particularly in systems utilizing DNSSEC (Domain Name
|
||||
System Security Extensions). Additionally, threats such as DNS
|
||||
supply chain attacks or inadvertent errors can result in unauthorized
|
||||
changes to the delegation, including DS (Delegation Signer) records.
|
||||
Finally, this method may offer some protection if, in an event that
|
||||
would be catastrophic for the Internet, geopolitical tensions lead to
|
||||
the de-delegation of a countries top-level domain.
|
||||
|
||||
Our approach is designed for proving resiliency for the Internet's
|
||||
naming function and does not bring full resiliency by itself.
|
||||
Instead, we this is as a building block for resiliency of critical
|
||||
infrastructure or digital autonomy. The approach is complementary to
|
||||
serving stale data from a resolvers cache [RFC8767] more on this in
|
||||
section Section 3.3.
|
||||
|
||||
An important requirement of this approach is consistent with the
|
||||
architecture, design, and operation of the DNS and the global
|
||||
Internet. By following practices herein we avoid namespace
|
||||
fragmentation. The approach avoids fundamental protocol changes, in
|
||||
particular it avoids alternative roots.
|
||||
|
||||
We describe what parties that are critically dependent on a specific
|
||||
domain and those that serve zones within that domain will need to do
|
||||
in order to guarantee continuous operation. For instance, when their
|
||||
parent nameservers are not reachable or there is a broken delegation
|
||||
from the ancestor domain. Here, 'broken' means that DNS resolver
|
||||
receives parental data that is inconsistent with the intent from the
|
||||
(child) domain owner, i.e. receiving data that is inconsistent with
|
||||
what is published on authoritative servers. Which includes not
|
||||
receiving data at all.
|
||||
|
||||
In section Section 2 we describe the idea and the requirements for a
|
||||
recursive DNS server and the requirements of the zone associated
|
||||
with. In section Section 3.2 we shortly point to other measures that
|
||||
must be taken in combination with this mechanism. In section
|
||||
Section 5 we discuss some policy considerations and the dilemmas that
|
||||
exist with respect to intentions of the DNS parent and child.
|
||||
|
||||
This document uses uppercase SHOULD, RECOMMENDED and MUST in the
|
||||
meaning defined by [RFC2119]. Their lowercase equivalents do not
|
||||
have normative meaning.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 3]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
2. The in-tree hints concept
|
||||
|
||||
[RFC9499] describes the root hints file "Operators who manage a DNS
|
||||
recursive resolver typically need to configure a 'root hints file'.
|
||||
This file contains the names and IP addresses of the authoritative
|
||||
name servers for the root zone, so the software can bootstrap the DNS
|
||||
resolution process. For many pieces of software, this list comes
|
||||
built into the software."
|
||||
|
||||
The in-tree hints borrows this from this idea: by configuring a
|
||||
'hints file' for a specific domain one allows oneself to bootstrap
|
||||
from that domain down, even if its parents are not available. It
|
||||
requires a modification in recursive nameservers and adherence to
|
||||
some operational practices.
|
||||
|
||||
2.1. Recursive nameserver
|
||||
|
||||
Recursive nameserver software will need to be modified to deal to
|
||||
work with in-tree hints.
|
||||
|
||||
An in-tree hints is configuration for a recursive resolver that
|
||||
provides the names and IP addresses of authoritative name servers for
|
||||
a specific domain. A recursive name server may be configured for in-
|
||||
tree hints for multiple domains.
|
||||
|
||||
If there are no in-domain nameservers ([RFC9499]) in the NS set for
|
||||
the domain then this mechanism MUST not be used. The reason for this
|
||||
requirement is that when there is no in-domain nameserver the
|
||||
resiliency properties cannot be achieved as there are external name
|
||||
dependencies. This requirement can be enforced by the recursive
|
||||
nameserver software at the moment of configuration parsing.
|
||||
|
||||
In-tree hints are only useful if the domain owner follows certain
|
||||
practices and MAY only be followed if the domain owner indicates it
|
||||
does so. Section Section 3.1 describes the RECOMMENDED way for
|
||||
domain name owners to signaling their intent. This is also something
|
||||
that the recursive nameserver can check and log.
|
||||
|
||||
In-tree hints MUST only be used in combination with a trust-anchor.
|
||||
i.e. a trusted public DNSSEC key that is associated with the name.
|
||||
The trust-anchor MUST be maintained. It SHOULD be maintained by the
|
||||
mechanism described in [RFC5011]. Alternatively an appropriate and
|
||||
trustworthy off-band mechanism MAY be used. The operator of a
|
||||
recursive nameserver must validate that the domain associated with
|
||||
the in-tree hints follows the operational practices described in this
|
||||
memo. This can be achieved by out-of band mechanisms, or by querying
|
||||
the TXT record as described in {#auth}
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 4]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
When a recursive nameserver is configured with an in-tree hint then
|
||||
the NS Resource Record set contained in the in-tree hint MUST be used
|
||||
during the resolution process. When the NS RRset on the domain's
|
||||
authoritative server changes and has been validated using DNSSEC
|
||||
against configured key then the in-hints tree configuration SHOULD be
|
||||
updated with the changed authoritative NS set. The recursive
|
||||
nameserver should honor the TTLs to regular check a change of the
|
||||
authoritative DNS RR set. Operators that implement in-tree hints
|
||||
SHOULD use tooling, possibly implemented in the recursive nameserver,
|
||||
to log and signal inconsistencies between information in the parents
|
||||
and the in-tree configuration to the operators of the recursive
|
||||
nameserver, these inconsistencies need to be well understood. They
|
||||
could be the result of a bonafide redelegation (in which case the
|
||||
parental records are likely a sub-set of the authoritative NS RR
|
||||
set), the withdrawal of the delegation by the parent, or an error or
|
||||
attack.
|
||||
|
||||
The trust anchor MUST be used for the validation of record within the
|
||||
tree-hint's domain even when a parental DS record exists. Nota bene,
|
||||
section 5 of [RFC5011] allows for deletion if a superior trust point
|
||||
exists - when a trust anchor is part of an in-tree hint that deletion
|
||||
with the motivation that a superior trust point exists MUST not
|
||||
happen. When a tree-hint exists for a subordinate domain, that trust
|
||||
anchor MUST take precedence.
|
||||
|
||||
Recursive nameservers that implement this mechanism should have a
|
||||
fallback mechanism implemented that will eventually allow them to
|
||||
reach the in-domain nameserver when other servers in the NS resource
|
||||
record set fail.
|
||||
|
||||
2.2. Domain Owner
|
||||
|
||||
This section describes the operational practices that the domain
|
||||
owner has to follow in order to achieve the resiliency within the
|
||||
domain.
|
||||
|
||||
The domain owner MUST maintain its DNSSEC configuration using the
|
||||
mechanism described in [RFC5011].
|
||||
|
||||
The domain owner MUST have at least one in-domain authoritative
|
||||
nameserver in its NS set (e.g. ns.example.com for the example.com
|
||||
domain). If that nameserver's name is within a delegated child
|
||||
domain, then the nameservers for that delegated domain MUST also have
|
||||
at least one in-domain authoritative nameserver. This requirement is
|
||||
recursive for further delegation.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 5]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
In order to benefit from the resiliency properties provided by this
|
||||
mechanism, the domain owner should require that zones within the
|
||||
domain all have one in-domain nameserver. Note that delegated
|
||||
domains do not have to maintain a trust anchor and can rely on there
|
||||
being a chain of trust established using DS records from the trust-
|
||||
anchor down.
|
||||
|
||||
Furthermore, the in-domain nameserver SHOULD be positioned in a
|
||||
network that shares connectivity fate with the clients that rely on
|
||||
the domain. For instance, in our enterprise example it should be in
|
||||
the enterprise campus network. More generally the location is
|
||||
subject to a risk based assessment about the likelihood of not being
|
||||
able to obtain a network connection to the in-domain nameserver.
|
||||
|
||||
The domain owner should communicate to its community that it is using
|
||||
this method. That communication MAY be out of band. A RECOMMENDED
|
||||
in-band signalling mechanism in-band described in section
|
||||
Section 3.1.
|
||||
|
||||
3. Operational Considerations
|
||||
|
||||
3.1. Signalling
|
||||
|
||||
It is RECOMMENDED that a domain owner (the owner of <domain>) signals
|
||||
to its user community that they are using the mechanism described in
|
||||
this memo. Signalling is done by putting a TXT resource record with
|
||||
owner name _in-tree.<domain> containing an expiry timestamp in
|
||||
[RFC3339] format. The expiry timestamp indicates the date to which
|
||||
the owner is committed to follow the instructions in section
|
||||
Section 2.2.
|
||||
|
||||
The recursive nameserver operator should at first opportunity, but
|
||||
not longer than 30 days after the expiration, validate if a new
|
||||
expiry record has been published by the domain owner. If not they
|
||||
SHOULD disable the in-tree hints configuration for the domain.
|
||||
|
||||
_in-tree.<domain> TXT <expiry timestamp> [OMK: Alternatively we
|
||||
create a trivial RR type for this. EXP RR containing a timestamp as
|
||||
defined in RFC4034 section-3.1.5 ]
|
||||
|
||||
Out of band signalling is not in scope for this memo.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 6]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
3.2. Achieving true resiliency of services within the domain.
|
||||
|
||||
This memo describes a method to achieve resiliency of name resolution
|
||||
for a community of interest of a particular domain. This is, by far,
|
||||
not sufficient to achieve actual resiliency for services that are
|
||||
provided within the domain. While further out of scope for this memo
|
||||
we like to remind the reader of the following:
|
||||
|
||||
* The in-domain nameservers should run on IP addresses that can
|
||||
reasonably be expected to be reachable by the community of use.
|
||||
For example, if a service is critical for on-campus enterprise use
|
||||
then the in-domain nameserver should run on the campus network.
|
||||
|
||||
* Any service provider that offers a service under a certain name
|
||||
within the domain should make sure that those services itself can
|
||||
be reasonably expected to be reachable by the community of use.
|
||||
Any service dependencies should also be local.
|
||||
|
||||
* In an effort to create local resiliency one should not forget that
|
||||
resiliency is also achieved by having no single source of failure.
|
||||
Having in-domain nameservers, and having services in reach of the
|
||||
community of interest does not mean that one deploys
|
||||
infrastructure elsewhere.
|
||||
|
||||
* Running a local root [RFC8806] may be an additional method to
|
||||
create resiliency against certain failure cases, mainly failure to
|
||||
connect to DNS root-servers. When resolvers implement the local
|
||||
root approach they MUST give prefer the information in the in-tree
|
||||
hints file to the delegation information from the root. In other
|
||||
words they should treat the local root as any other root server.
|
||||
|
||||
3.3. Serving stale data
|
||||
|
||||
In-tree hints are complementary to serving stale data [RFC8767].
|
||||
Serving stale data will allow continuity for all zones when their
|
||||
authoritative servers are not reachable and the data happens to be in
|
||||
the resolvers cache. In-tree hints works for specific domains when
|
||||
data does not happen to be available in recursive nameserver caches
|
||||
or when the parent's server(s) deliver faulty delegation data.
|
||||
|
||||
In-tree hints is not scalable in the sense that there is significant
|
||||
operational overhead for the domain owner, they have to run in-domain
|
||||
nameservers and follow [RFC5011]. Similarly scalability concerns
|
||||
exist for recursive nameserver operators as they will have to
|
||||
troubleshoot inconsistencies. Serving stale data is highly scalable
|
||||
as it only needs one configuration within the recursive nameserver
|
||||
and then it applies for all domains.
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 7]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
4. Security Considerations
|
||||
|
||||
In-tree hints can be used in recursive nameservers in combination
|
||||
with protective block-lists and does therefore not debilitate the
|
||||
available blocking mechanism available to protect the community of
|
||||
users of a recursive nameserver.
|
||||
|
||||
Mallwares can use their own recursive nameservers configured with in-
|
||||
trees for their command and control domains to circumvent de-
|
||||
delegation by the parents. However, those recursive nameservers are
|
||||
likely under the control of the mallware administrators and the risk
|
||||
of disproportional damage for blocking these recursive nameservers
|
||||
DNS after it has been established that they are used in command and
|
||||
control seems proportionate.
|
||||
|
||||
This mechanism intends to provide resilience for network failures.
|
||||
However, it adds complexity in software and operational procedures,
|
||||
thereby increasing the fragility.
|
||||
|
||||
5. Policy Considerations
|
||||
|
||||
Inherently the approach described in this memo provides a mechanism
|
||||
for a community of users of a domain to overwrite the policies from
|
||||
the parent domain. For instance, it allows the community of users to
|
||||
continue to use the domain even when e.g. the delegation for that
|
||||
domain expires or it has been de-delegated after a court order. At
|
||||
the same time, this in-tree approach can be a building block to
|
||||
create resilience for a critical infrastructure. It can potentially
|
||||
be applied to a country code top-level domain (CCTLD) and its user
|
||||
community. While the failure mode at CCTLD level is extremely low,
|
||||
this approach may add to confidence in the domain name system as a
|
||||
whole in times of international tensions.
|
||||
|
||||
When an inconsistency exists between what is published in the parent
|
||||
and what is used as in-tree-hints there is a fragmentation of the DNS
|
||||
namespace. The operators of the recursive nameservers should
|
||||
proactively restore the situation to consistency. Note that there is
|
||||
no technical enforcement mechanism to aid that restoration, but it is
|
||||
expected that if a recursive nameserver operator configures an in-
|
||||
tree domain they are part of the community of interest and therefore
|
||||
have out of band means to contact the domain administrator. Also
|
||||
note that the operators of the domains usually do not have
|
||||
communication mechanism that can enforce the use or non-use of in-
|
||||
tree hints by recursive nameserver operators.
|
||||
|
||||
The authority for using or not using in-tree hints is with the
|
||||
operator of the recursive nameserver - as a user agent for its
|
||||
community. Users have historically been able to overwrite their DNS
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 8]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
configuration. They can use a recursive nameserver that does not use
|
||||
in-tree hints for a particular domain and therefore have the ability
|
||||
opt-out of the mechanism.
|
||||
|
||||
6. IANA Considerations
|
||||
|
||||
No IANA considerations herein.
|
||||
|
||||
7. Acknowledgements
|
||||
|
||||
This document is inspired by a conversation about digital autonomy.
|
||||
|
||||
8. Disclaimer
|
||||
|
||||
The author is an employee of the Internet Society, this document does
|
||||
not necessarily reflect the position of the Internet Society.
|
||||
|
||||
{olaf: source="olaf"}
|
||||
|
||||
9. Appendix: Example configuration in Unbound
|
||||
|
||||
[OMK: this example might be too vendor specific to maintain in an
|
||||
RFC]
|
||||
|
||||
It is relatively trivial to configure this methodology in Unbound.
|
||||
[OMK TODO: follow up with Willem for the example config]
|
||||
|
||||
10. References
|
||||
|
||||
10.1. Normative References
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119,
|
||||
DOI 10.17487/RFC2119, March 1997,
|
||||
<https://www.rfc-editor.org/rfc/rfc2119>.
|
||||
|
||||
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
|
||||
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
|
||||
<https://www.rfc-editor.org/rfc/rfc3339>.
|
||||
|
||||
[RFC5011] StJohns, M., "Automated Updates of DNS Security (DNSSEC)
|
||||
Trust Anchors", STD 74, RFC 5011, DOI 10.17487/RFC5011,
|
||||
September 2007, <https://www.rfc-editor.org/rfc/rfc5011>.
|
||||
|
||||
[RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating
|
||||
DNSSEC Delegation Trust Maintenance", RFC 7344,
|
||||
DOI 10.17487/RFC7344, September 2014,
|
||||
<https://www.rfc-editor.org/rfc/rfc7344>.
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 9]
|
||||
|
||||
Internet-Draft in-tree-hints May 2026
|
||||
|
||||
|
||||
10.2. Informative References
|
||||
|
||||
[E-Gov-Resilience]
|
||||
Sommese et al, "Assessing e-Government DNS Resilience",
|
||||
IEEE Proceedings of the 2022 International Conference on
|
||||
Network and Service Management (CNSM 2022), 2022.
|
||||
|
||||
[RFC8767] Lawrence, D., Kumari, W., and P. Sood, "Serving Stale Data
|
||||
to Improve DNS Resiliency", RFC 8767,
|
||||
DOI 10.17487/RFC8767, March 2020,
|
||||
<https://www.rfc-editor.org/rfc/rfc8767>.
|
||||
|
||||
[RFC8806] Kumari, W. and P. Hoffman, "Running a Root Server Local to
|
||||
a Resolver", RFC 8806, DOI 10.17487/RFC8806, June 2020,
|
||||
<https://www.rfc-editor.org/rfc/rfc8806>.
|
||||
|
||||
[RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219,
|
||||
RFC 9499, DOI 10.17487/RFC9499, March 2024,
|
||||
<https://www.rfc-editor.org/rfc/rfc9499>.
|
||||
|
||||
Author's Address
|
||||
|
||||
Olaf Kolkman
|
||||
Email: olaf@xolx.nl
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Kolkman Expires 13 November 2026 [Page 10]
|
||||
Reference in New Issue
Block a user