Comments in-line. Meta note: it seems your concerns are all focused on the way allow/block traffic enforcement consumes this information. Do you have any concerns with the ability to discover associations for logging and audit purposes?

On 7/7/25 15:58, Ben Schwartz wrote:
Thanks for the explanation.

I have serious concerns about proposals that would encourage blocking/unblocking IP addresses based on previous DNS activity.  If your network's firewall behavior depends on the history of DNS queries, this creates an extreme form of stateful protocol ossification that prevents IP from working correctly. It's like NAT but worse, because the stateful behaviors at the IP layer depend on history from "outside" of IP.

The comparison with NAT seems like a weird apples-to-mangoes comparison. Neither this draft nor the mentioned use cases that would depend on it "prevent IP from working correctly" as they have no effect on routes or IP headers whereas NAT actually rewrites headers and obfuscates the "real" IP address of one or both peers. Anyway, how is this different from enforcement of IP allow/block based on other dynamic, non-IP logic such as which process it originated from or what the current time is, both common practices today that are "history from 'outside' of IP"?

It also messes with DNS (which is a lookup protocol, /not/ a signaling protocol).  For example, it creates perverse interactions with DNS stub caching, which one might have to /disable/ in order to generate the DNS query activity that will cause a block to be lifted.

Implementations may end up doing this, sure, but it isn't inevitable. I know my previous employer's implementation of DNS-based allowlisting has a long-term approval time period that well exceeds most TTL values, because in real life, everyone continues using resolutions for as long as possible. Breaking connectivity just because a cache was cleared (for any reason) was deemed unacceptable. In other words: this is up to the implementation of the enforcement.

Network operators that want to limit network activity to allowed DNS domains should use a domain-based transport proxy such as HTTP CONNECT, so policies can be imposed /before/ DNS resolution, and each data flow is explicitly tied to its domain.

Two things: (1) you are assuming the deployer is a *network* operator and not a *device* operator. What about when there is no network "edge" to manage? I don't buy that the only correct answer is to proxy everything. (2) Whatever is doing enforcement of policy has to know about what CIDRs are associated with what use cases, whether by using this draft or by existing practices (scraping vendor websites, vendor REST APIs, etc.). Now the proxy is in the same situation this draft addresses as the endpoint was when it decided to offload this enforcement problem to the proxy.

In the specific example of WebRTC relays, I'm not convinced that this approach accomplishes the security goal either.  Relay servers (like TURN) are themselves opaque proxies for e2e-encrypted data.  If the client is untrusted, giving it access to a TURN server is equivalent to giving it access to the whole internet.  Regardless, this use case would be resolved better by giving the relays DNS names that can be approved by the network operator, rather than passing IP literals and then trying to encode (ahead of time!) all potential IP literals that might be used.

It is absolutely true that trust in an endpoint, defined by any identifier, has risks. A firewall rule that blocks specific IP addresses isn't perfect when an allowed IP address will proxy traffic to those same IP addresses. I do not see how this draft introduces a new paradigm in that regard. Some dependencies are riskier than others (allowlisting a proxy or gateway by any means, this draft or not, always means you either have to manage that service or you entirely trust them to filter the entire Internet for you).

As for assigning DNS names to <whatever>... yes, I would very much like that, but this requires the same operator to control the managed endpoints *and* all services they connect to. That isn't reflective of reality, where everyone has dependencies on many third parties who can define their endpoints by domain name or IP addresses. As mentioned above, the operator may or may not be a network operator, just an endpoint operator.

Consider a VoIP operator that acquires relays (or whatever other literal-addressed resource) dynamically from AWS.  In this proposal, they would have to list all of AWS's IP range in their CIDRS records ... substantially defeating the intended security goal.

Yes, that would be a bad use case for this, unless that dynamic retrieval of relays is customer specific. For example, allowlisting by any mechanism, this draft or not, could work in this scenario if tommycorp[.]voip[.]cloudvendor[.]example CIDRS records aren't the same as benbook[.]voip[.]cloudvendor[.]example CIDRS records. Any service which shares "every CIDR owned by a cloud vendor" as a potential endpoint can't be allowlisted anyway. This feedback overlaps with the generic problem of allowlisting rather than being specific to this draft.

Even though there are services which operate this way, many do limit and actively communicate their CIDR dependencies. If this draft was supported by a percentage of the vendors an operator depended on, and the remaining vendors were all in this "any AWS IP range could be used, who knows" camp, that would still allow a percentage reduction in traffic the operator has to pay for infra to proxy (falling back on your suggestion above in lieu of having DNS-discovered CIDRs).

--Ben
_______________________________________________
DNSOP mailing list -- dnsop@ietf.org
To unsubscribe send an email to dnsop-le...@ietf.org

Reply via email to