missing EDNS0 record confuses systemd-resolved
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
systemd |
Fix Released
|
Unknown
|
|||
dnsmasq (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Paride Legovini | ||
Focal |
Fix Released
|
Undecided
|
Unassigned | ||
Groovy |
Fix Released
|
Undecided
|
Unassigned | ||
Hirsute |
Fix Released
|
Undecided
|
Unassigned | ||
Impish |
Fix Released
|
Undecided
|
Unassigned | ||
systemd (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Bionic |
Fix Released
|
Medium
|
Dan Streetman | ||
Focal |
Fix Released
|
Medium
|
Dan Streetman | ||
Groovy |
Fix Released
|
Medium
|
Dan Streetman | ||
Hirsute |
Fix Released
|
Medium
|
Dan Streetman | ||
Impish |
Fix Released
|
Medium
|
Unassigned |
Bug Description
[Impact]
dnsmasq 2.79 and below omits EDNS0 OPT records [1] when returning an empty answer for a domain it is authoritative for. systemd-resolved seems to get confused by this in certain circumstances; when using the stub resolver and requesting an address for which there are no AAAA records, there can sometimes be a five second hang in resolution.
[1] https:/
[Test Plan]
Test case for bionic:
-------
IFACE=dummy0
SUBNET=10.0.0
ip link add $IFACE type dummy
ifconfig $IFACE ${SUBNET}.1/24
dnsmasq -h -R -d -C /dev/null -2 $IFACE -z -i $IFACE -I lo --host-
dig -t a test.test @10.0.0.1 | grep EDNS
# returns "; EDNS ..."
dig -t aaaa test.test @10.0.0.1 | grep EDNS
# again, should return "; EDNS ..." but doesn't.
# does so with the -proposed package.
-------
[Where problems could occur]
Problems may occur in case a client queries dnsmasq and relies on EDNS0 not being available for behaving correctly. This covers cases where the software querying dnsmasq is buggy or misconfigured.
[Development Fix]
Fixed upstream in dnsmasq >= 2.80.
[Stable Fix]
Partial cherry-pick of upstream commit http://
The cherry-pick is partial because half if it is already in the package .diff we have in Bionic.
Related branches
- Utkarsh Gupta (community): Approve
- Canonical Server packageset reviewers: Pending requested
-
Diff: 39 lines (+13/-1)2 files modifieddebian/changelog (+6/-0)
src/forward.c (+7/-1)
Changed in dnsmasq (Ubuntu): | |
status: | Confirmed → Triaged |
description: | updated |
tags: | added: server-next |
Changed in systemd: | |
status: | Unknown → Fix Released |
tags: | added: ddstreet |
Changed in systemd (Ubuntu Hirsute): | |
assignee: | nobody → Dan Streetman (ddstreet) |
status: | New → In Progress |
Changed in systemd (Ubuntu Groovy): | |
assignee: | nobody → Dan Streetman (ddstreet) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in systemd (Ubuntu Focal): | |
assignee: | nobody → Dan Streetman (ddstreet) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in systemd (Ubuntu Bionic): | |
assignee: | nobody → Dan Streetman (ddstreet) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in systemd (Ubuntu Hirsute): | |
importance: | Undecided → Medium |
Changed in dnsmasq (Ubuntu Focal): | |
status: | New → Fix Released |
Changed in dnsmasq (Ubuntu Groovy): | |
status: | New → Fix Released |
Changed in dnsmasq (Ubuntu Hirsute): | |
status: | New → Fix Released |
Changed in dnsmasq (Ubuntu Impish): | |
status: | Triaged → Fix Released |
description: | updated |
Changed in dnsmasq (Ubuntu Bionic): | |
status: | Triaged → In Progress |
Amend to test case:
dnsmasq -h -R -d -C /dev/null -2 $IFACE -z -i $IFACE -I lo -S /test/ --host- record= test.test, ${SUBNET} .1
Cannot reproduce bug in systemd 239, but would be good to know which commit fixed the problem for cherry picking purposes.