From eb92fb32b746f2104b0f370b5b295bb8dd4bd5e5 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Tue, 7 Mar 2023 22:07:46 +0000 Subject: [PATCH] Set the default maximum DNS UDP packet size to 1232. http://www.dnsflagday.net/2020/ refers. Thanks to Xiang Li for the prompt. --- CHANGELOG | 9 ++++++++- man/dnsmasq.8 | 3 ++- src/config.h | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) --- CHANGELOG.orig +++ CHANGELOG @@ -11,7 +11,14 @@ version 2.89 for reporting the bug and for his great efforts in chasing it down. + Set the default maximum DNS UDP packet sice to 1232. This + has been the recommended value since 2020 because it's the + largest value that avoid fragmentation, and fragmentation + is just not reliable on the modern internet, especially + for IPv6. It's still possible to override this with + --edns-packet-max for special circumstances. + version 2.88 Fix bug in --dynamic-host when an interface has /16 IPv4 address. Thanks to Mark Dietzer for spotting this. --- man/dnsmasq.8.orig +++ man/dnsmasq.8 @@ -183,7 +183,8 @@ to zero completely disables DNS function .TP .B \-P, --edns-packet-max= Specify the largest EDNS.0 UDP packet which is supported by the DNS -forwarder. Defaults to 4096, which is the RFC5625-recommended size. +forwarder. Defaults to 1232, which is the recommended size following the +DNS flag day in 2020. Only increase if you know what you are doing. .TP .B \-Q, --query-port= Send outbound DNS queries from, and listen for their replies on, the --- src/config.h.orig +++ src/config.h @@ -19,7 +19,7 @@ #define CHILD_LIFETIME 150 /* secs 'till terminated (RFC1035 suggests > 120s) */ #define TCP_MAX_QUERIES 100 /* Maximum number of queries per incoming TCP connection */ #define TCP_BACKLOG 32 /* kernel backlog limit for TCP connections */ -#define EDNS_PKTSZ 4096 /* default max EDNS.0 UDP packet from RFC5625 */ +#define EDNS_PKTSZ 1232 /* default max EDNS.0 UDP packet from from /dnsflagday.net/2020 */ #define SAFE_PKTSZ 1232 /* "go anywhere" UDP packet size, see https://dnsflagday.net/2020/ */ #define KEYBLOCK_LEN 40 /* choose to minimise fragmentation when storing DNSSEC keys */ #define DNSSEC_WORK 50 /* Max number of queries to validate one question */