Skip to content

atenet/egress: resolve upstream names on both address families - #1060

Open
Yuan Gao (ygao-g) wants to merge 1 commit into
agent-substrate:mainfrom
ygao-g:atenet-egress-dns-lookup-family
Open

atenet/egress: resolve upstream names on both address families#1060
Yuan Gao (ygao-g) wants to merge 1 commit into
agent-substrate:mainfrom
ygao-g:atenet-egress-dns-lookup-family

Conversation

@ygao-g

@ygao-g Yuan Gao (ygao-g) commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Part of #246

The egress Envoy pinned dns_lookup_family to V4_ONLY in both the dynamic
forward proxy filter and the dynamic forward proxy cluster, so it only ever
asked for A records. On an IPv6-only cluster no upstream hostname resolves and
no actor can reach the internet. Six sites across the two egress manifests,
including the sdsmint variant, now use ALL: it returns both families and
enables Happy Eyeballs. AUTO will not do — it returns AAAA whenever the name
has one, leaving no A address to retry when that AAAA is unroutable.

This is a prerequisite for IPv6 egress, not the fix on its own. An actor's
connection is redirected by nftables and atunnel recovers the original
destination with getsockopt(SOL_IP, SO_ORIGINAL_DST), which returns ENOENT
for a v6-redirected connection — so egress fails before Envoy is ever asked to
resolve anything.

Testing

make verify is clean. A new test walks the shipped manifests and requires
ALL on every dns_cache_config, so a new egress variant cannot reintroduce
the pin. The egress e2e suites have not been re-run against this value on an
IPv6-only cluster.

  • Tests pass
  • Appropriate changes to documentation are included in the PR

🤖 Generated with Claude Code

The egress gateway's dynamic forward proxy pinned dns_lookup_family to
V4_ONLY at all six sites, so on an IPv6-only cluster it asked only for
A records and no upstream name resolved. All six now use ALL, which
returns both families and lets Envoy Happy-Eyeballs between them. AUTO
will not do: it returns AAAA whenever the name has one, leaving no A
address to retry when that AAAA is unroutable.

A test walks the shipped manifests and requires ALL on every
dns_cache_config, so a new egress variant cannot reintroduce the pin.
@ygao-g
Yuan Gao (ygao-g) force-pushed the atenet-egress-dns-lookup-family branch from 3a9ea53 to 778b9d7 Compare August 20, 2026 19:34
// matching, not that the config got better.
const minDNSCacheConfigs = 6

// TestEgressDNSLookupFamily requires ALL on every dynamic forward proxy DNS

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to focus on the guide to verify the indices instead of why we want this inside the paper. That comment should actually be where we set it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants