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.