Skip to content

docs: actor DNS is answered by the sandbox's relay - #2615

Draft
Bo-Cheng Chu (bochengchu) wants to merge 1 commit into
agent-substrate:mainfrom
bochengchu:docs-egress-dns-relay
Draft

Bo-Cheng Chu (bochengchu) wants to merge 1 commit into
agent-substrate:mainfrom
bochengchu:docs-egress-dns-relay

Conversation

@bochengchu

Copy link
Copy Markdown
Contributor

docs/egress-traffic.md said DNS on port 53 is allowed through netfilter rules to the node-configured DNS, and that DNS-over-TCP, UDP and other traffic is filtered by nftables. That was the model before per-sandbox networking. Now each sandbox's only route out is its gateway address: the actor's resolv.conf names a DNS relay listening there, which forwards DNS over UDP and TCP to the node-configured DNS (internal/ateomnet and internal/ateomnet/dns). Every other TCP connection is redirected to atunnel, and UDP or any other traffic to another address has no route.

So DNS sent straight to some other server on port 53 is blocked like any other traffic: over UDP it is dropped, and over TCP it reaches the egress gateway as opaque TCP and is closed with no bytes returned. Describe that, and qualify the DNS rows with the sandbox gateway as the destination.

The PR title becomes the release note. Write it for users: what changed for them, not how the code changed.

Breaking change

Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

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

@bowei Bowei Du (bowei) added area/network kind/docs Improvements or additions to documentation labels Oct 14, 2026
docs/egress-traffic.md said any TCP that is neither HTTP nor TLS is accepted
and then closed with no bytes returned and no status code. That holds only
when the actor waits for the server to speak first: the gateway has nothing
to classify, gives up on its listener timeout and closes. When the actor
sends first, the gateway treats bytes that are not TLS as cleartext HTTP,
and its HTTP handler answers with 400 Bad Request before closing. Either
way the destination is never contacted. Describe both cases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/network kind/docs Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants