[Bug 1849733] Re: resolved incorrectly limits TCP reply to edns0 payload
Launchpad Bug Tracker
1849733 at bugs.launchpad.net
Tue Nov 26 17:37:57 UTC 2019
This bug was fixed in the package systemd - 237-3ubuntu10.33
---------------
systemd (237-3ubuntu10.33) bionic; urgency=medium
* d/p/lp1852754/0001-network-do-not-re-set-MTU-when-current-and-requested.patch,
d/p/lp1852754/0002-network-call-link_acquire_conf-and-link_enter_join_n.patch,
d/p/lp1852754/0003-network-prohibit-to-set-MTUBytes-and-UseMTU-simultan.patch:
- Complete link setup after setting mtu (LP: #1852754)
systemd (237-3ubuntu10.32) bionic; urgency=medium
[ Victor Tapia ]
* d/p/resolved_disable-connection-downgrade-when-DNSSEC-yes.patch
Fix regression introduced by
resolved-Mitigate-DVE-2018-0001-by-retrying-NXDOMAIN-with.patch when
DNSSEC=yes (LP: #1796501)
[ Dan Streetman ]
* d/p/fix-typo-lp1668771-resolved-switch-cache-option-to-a-tri-state-option-s.patch:
- Fix typo in previous patch
* d/p/lp1840640-shared-seccomp-add-sync_file_range2.patch:
- allow sync_file_range2 in nspawn container
(LP: #1840640)
* d/p/lp1783994-dissect-Don-t-count-RPMB-and-boot-partitions-8609.patch:
- avoid systemd-gpt-auto-generator failure if mmc dev present
(LP: #1783994)
* d/p/lp1832672-resolved-rework-parsing-of-etc-hosts.patch:
- do not fail entire file on error when parsing /etc/hosts
- parse # char anywhere in line as start of comment
(LP: #1832672)
* d/p/lp1843381-dell_passthrough_skip_rename_retry.patch,
debian/extra/rules/73-usb-net-by-mac.rules:
- fix rename delay for systems using "Dell MAC passthrough"
(LP: #1843381)
* d/p/lp1849733/0001-resolved-longlived-TCP-connections.patch,
d/p/lp1849733/0002-resolved-line-split-dns_stream_new-function-signatur.patch,
d/p/lp1849733/0003-resolved-add-some-assert-s.patch,
d/p/lp1849733/0004-stream-track-type-of-DnsStream-object.patch,
d/p/lp1849733/0005-llmnr-add-comment-why-we-install-no-complete-handler.patch,
d/p/lp1849733/0006-resolved-restart-stream-timeout-whenever-we-managed-.patch,
d/p/lp1849733/0007-resolved-only-call-complete-with-zero-argument-in-LL.patch,
d/p/lp1849733/0008-resolved-add-comment-to-dns_stream_complete-about-it.patch,
d/p/lp1849733/0009-resolved-keep-stub-stream-connections-up-for-as-long.patch,
d/p/lp1849733/0010-resolved-if-we-can-t-append-EDNS-OPT-RR-then-indicat.patch,
d/p/lp1849733/0011-resolved-don-t-let-EDNS0-OPT-dgram-size-affect-TCP.patch,
d/p/lp1849733/0012-resolved-add-new-accessor-dns_stream_take_read_packe.patch,
d/p/lp1849733/0013-resolve-do-not-complete-stream-transaction-when-it-i.patch:
- add TCP pipelining to handle getaddrinfo() fallback to TCP
- ignore EDNS0 payload limit when responding over TCP (LP: #1849733)
* d/p/lp1849658-resolved-set-stream-type-during-DnsStream-creation.patch:
- Fix bug in refcounting TCP stream types (LP: #1849658)
* d/p/lp1850704/0001-networkd-Unify-set-MTU.patch,
d/p/lp1850704/0002-network-drop-redundant-lines.patch:
- Fix setting mtu if interface already up (LP: #1850704)
* d/extra/dhclient-enter-resolved-hook:
- only restart resolved if dhclient conf changed (LP: #1805183)
-- Dan Streetman <ddstreet at canonical.com> Fri, 15 Nov 2019 10:01:16
-0500
** Changed in: systemd (Ubuntu Bionic)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1849733
Title:
resolved incorrectly limits TCP reply to edns0 payload
Status in systemd package in Ubuntu:
Fix Released
Status in systemd source package in Bionic:
Fix Released
Status in systemd source package in Disco:
Fix Released
Status in systemd source package in Eoan:
Fix Released
Bug description:
[impact]
glibc's getaddrinfo() uses EDNS0 to talk to resolved, and it sets its
payload limit to 1200. When the response is larger than 1200,
resolved will limit the response and set the truncate flag. This
causes getaddrinfo() to switch to TCP and request again, but glibc
incorrectly keeps the EDNS0 RR opt, with the same 1200 payload limit.
Most dns nameservers ignore EDNS0 payload limit for TCP, since per RFC
it applies only to UDP, but resolved does not and again marks the
response as truncated. This prevents getaddrinfo() from being able to
resolve any records with a response over 1200 bytes.
[test case]
use ping or telnet, which use getaddrinfo(), to lookup an A record
with a lot of results, like toomany100.ddstreet.org
$ telnet toomany100.ddstreet.org
telnet: could not resolve toomany100.ddstreet.org/telnet: Temporary failure in name resolution
[regression potential]
any regression would likely result in failure to correctly lookup a
hostname or to provide the correct response to a local client.
[other info]
note that on Bionic, this also requires backporting TCP pipelining
support in the stub resolver.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1849733/+subscriptions
More information about the foundations-bugs
mailing list