systemd-resolved has issues when the answer is over 512 bytes with EDNS disabled
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
systemd |
Fix Released
|
Unknown
|
|||
systemd (Debian) |
Fix Released
|
Unknown
|
|||
systemd (Ubuntu) |
Fix Released
|
High
|
Victor Tapia | ||
Bionic |
Fix Released
|
High
|
Victor Tapia | ||
Cosmic |
Fix Released
|
High
|
Victor Tapia | ||
Disco |
Fix Released
|
High
|
Victor Tapia |
Bug Description
[Impact]
TCP stub is cutting down the payload to 512 bytes when EDNS is disabled. This makes non-EDNS clients (nslookup) receive a "shortened" answer even when UDP returns a truncated reply for a new TCP query. For instance,
- If the client supports EDNS:
$ dig +noall +answer testing.
30
- If the client does not support EDNS:
$ dig +noedns +noall +answer testing.
29
In the second case, no-EDNS, TCP should provide the complete answer, but it's capped at UDP's size.
[Test Case]
Query systemd-resolved with a domain name that resolves to multiple (lots.. 30+) A records. A client with EDNS support (dig) will receive all of them, a client without support (nslookup or dig +noedns) will have a truncated list. Using the example above:
EDNS: dig +noall +answer testing.
non-EDNS: dig +noedns +noall +answer testing.
[Regression potential]
Minimal. This change only affects TCP requests, and the new size is already used in the code for other requests.
[Other Info]
Upstream bug: https:/
Fixed upstream with commit: https:/
[Original Description]
Querying a domain name that has >512 bytes in records (e.g. 30+ A records), the number of results depends on the DNS client used:
- If the client supports EDNS:
$ dig +noall +answer testing.
30
- If the client does not support EDNS:
$ dig +noedns +noall +answer testing.
29
Normally a client that doesn't support EDNS would receive a truncated reply from the initial UDP connection (limited by the spec to 512 bytes) and a second query would be established via TCP to receive the complete results. In this case, the number of results is the same regardless of the protocol used (29).
Upstream bug: https:/
Related branches
- Dimitri John Ledkov: Pending requested
-
Diff: 210 lines (+127/-2) (has conflicts)5 files modifieddebian/changelog (+70/-0)
debian/extra/dhclient-enter-resolved-hook (+9/-1)
debian/gbp.conf (+1/-1)
debian/patches/meson-rename-Ddebug-to-Ddebug-extra.patch (+41/-0)
debian/patches/series (+6/-0)
description: | updated |
description: | updated |
Changed in systemd (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in systemd (Ubuntu Bionic): | |
assignee: | nobody → Victor Tapia (vtapia) |
Changed in systemd (Ubuntu Cosmic): | |
assignee: | nobody → Victor Tapia (vtapia) |
Changed in systemd (Ubuntu Disco): | |
assignee: | nobody → Victor Tapia (vtapia) |
status: | New → In Progress |
Changed in systemd (Ubuntu Cosmic): | |
status: | New → In Progress |
Changed in systemd (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in systemd (Ubuntu Disco): | |
importance: | Undecided → High |
Changed in systemd (Ubuntu Cosmic): | |
importance: | Undecided → High |
Changed in systemd (Ubuntu Bionic): | |
importance: | Undecided → High |
Changed in systemd: | |
status: | Unknown → Fix Released |
Changed in systemd (Debian): | |
status: | Unknown → Fix Committed |
Changed in systemd (Debian): | |
status: | Fix Committed → Fix Released |
Changed in systemd (Ubuntu Disco): | |
status: | In Progress → Fix Committed |
Changed in systemd (Ubuntu Cosmic): | |
status: | Fix Committed → In Progress |
Changed in systemd (Ubuntu Disco): | |
status: | Fix Released → Fix Committed |
Changed in systemd (Ubuntu Disco): | |
status: | Fix Committed → Fix Released |
no longer affects: | systemd (Ubuntu Xenial) |
The attachment "systemd- TCP-size- bionic. debdiff" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.
[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]