systemd-resolved doesn't support tcp pipelining in b/c

Bug #1829284 reported by Dan Streetman
4
This bug affects 1 person
Affects Status Importance Assigned to Milestone
systemd (Ubuntu)
Fix Released
Undecided
Unassigned
Bionic
Incomplete
Medium
Unassigned
Cosmic
Incomplete
Medium
Unassigned

Bug Description

[impact]

with systemd and resolvconf installed, the /etc/resolv.conf file is managed by resolvconf, and in bug 1817903 the 'options edns0' option is stripped from the systemd stub resolv.conf so no 'options edns0' will be present in /etc/resolv.conf (unless added through other means than the resolvconf-pull-resolved.service).

However, in b/c the local systemd stub resolver does not support pipelined TCP dns queries, which glibc does by default when falling back to TCP dns queries (i.e., glibc will perform both A and AAAA queries using a single tcp packet, instead of opening separate tcp connections for each query). This results in glibc's dns queries always failing, when using TCP. This can be done by adding 'options use-vc' to /etc/resolv.conf, but also happens in glibc when the dns response does not fit inside the 512-byte default max, such as for dns A lookups with a lot of addresses. This is explained in more detail in bug 1811471.

What this means is that systems installed with either b or c, and that have systemd and resolvconf installed, will experience the problem from bug 1811471 - they cannot lookup any address where the response exceeds 512 bytes.

[test case]

install a bionic or cosmic system, which will have systemd installed, and also install resolvconf. You may need to reboot after installing resolvconf to ensure that /etc/resolv.conf has been updated to remove the 'options edns0' line. After verifying that line is not in the /etc/resolv.conf file, the test case from bug 1811471 should fail, or a simpler one is:

$ ping toomany.ddstreet.org

[regression potential]

any change to systemd and/or resolvconf has a high potential for regression. more details here TBD.

[other info]

the best way to fix this is to backport tcp pipelining support in systemd-resolved.

Dan Streetman (ddstreet)
Changed in systemd (Ubuntu Cosmic):
assignee: nobody → Dan Streetman (ddstreet)
Changed in systemd (Ubuntu Bionic):
assignee: nobody → Dan Streetman (ddstreet)
Changed in systemd (Ubuntu Cosmic):
importance: Undecided → Medium
Changed in systemd (Ubuntu Bionic):
importance: Undecided → Medium
Changed in systemd (Ubuntu Cosmic):
status: New → In Progress
Changed in systemd (Ubuntu Bionic):
status: New → In Progress
tags: added: ddstreet-next
Changed in systemd (Ubuntu):
status: New → Fix Released
Dan Streetman (ddstreet)
Changed in systemd (Ubuntu Cosmic):
assignee: Dan Streetman (ddstreet) → nobody
Changed in systemd (Ubuntu Bionic):
assignee: Dan Streetman (ddstreet) → nobody
Changed in systemd (Ubuntu Cosmic):
status: In Progress → Incomplete
Changed in systemd (Ubuntu Bionic):
status: In Progress → Incomplete
Dan Streetman (ddstreet)
tags: removed: ddstreet-next
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.