systemd-resolved doesn't support tcp pipelining in b/c
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-
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.
[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.
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 |
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 |
tags: | removed: ddstreet-next |