惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
T
Tailwind CSS Blog
V
Visual Studio Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
量子位
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
Jina AI
Jina AI
雷峰网
雷峰网
博客园 - 【当耐特】
博客园 - 叶小钗
美团技术团队
宝玉的分享
宝玉的分享
IT之家
IT之家

dnsmasq-discuss

[Dnsmasq-discuss] Announce: dnsmasq-2.92rc2 Re: [Dnsmasq-discuss] [PATCH] Fix arguments order for chaos subdomain check Re: [Dnsmasq-discuss] patch: block-file/allow-file - for review/feedback Re: [Dnsmasq-discuss] patch: block-file/allow-file - for review/feedback Re: [Dnsmasq-discuss] patch: block-file/allow-file - for review/feedback Re: [Dnsmasq-discuss] patch: block-file/allow-file - for review/feedback [Dnsmasq-discuss] patch: block-file/allow-file - for review/feedback Re: [Dnsmasq-discuss] server= with interface parameter changes behavior over time [Dnsmasq-discuss] NFTsets and hosts-files [Dnsmasq-discuss] [PATCH] Allow expired RRSIGs when stale caching is enabled [Dnsmasq-discuss] [PATCH] Fix local host records being overridden by upstream NXDOMAIN [Dnsmasq-discuss] [PATCH] Fix arguments order for chaos subdomain check Re: [Dnsmasq-discuss] Malformed RRSIG Can Crash dnsmasq [Dnsmasq-discuss] Malformed NSEC/NSEC3 Can Hang dnsmasq [Dnsmasq-discuss] Malformed RRSIG Can Crash dnsmasq [Dnsmasq-discuss] Security - IMPORTANT Re: [Dnsmasq-discuss] Issue with circuit-id matching on dhcp requests Re: [Dnsmasq-discuss] Issue with circuit-id matching on dhcp requests Re: [Dnsmasq-discuss] Issue with circuit-id matching on dhcp requests [Dnsmasq-discuss] Issue with circuit-id matching on dhcp requests Re: [Dnsmasq-discuss] [PATCH] bpf.c: fix memory leak in arp_enumerate() on BSD Re: [Dnsmasq-discuss] [PATCH] bpf.c: fix memory leak in arp_enumerate() on BSD Re: [Dnsmasq-discuss] dnssec problem here and now Re: [Dnsmasq-discuss] dnssec problem here and now [Dnsmasq-discuss] dnssec problem here and now Re: [Dnsmasq-discuss] server= with interface parameter changes behavior over time Re: [Dnsmasq-discuss] [PATCH] bpf.c: fix memory leak in arp_enumerate() on BSD Re: [Dnsmasq-discuss] [PATCH] bpf.c: fix memory leak in arp_enumerate() on BSD Re: [Dnsmasq-discuss] [PATCH] Preserve existing log file permissions when adding group-write bit. [Dnsmasq-discuss] server= with interface parameter changes behavior over time
[Dnsmasq-discuss] TCP optimization regressions
Dominik Derigs via Dnsmasq-discuss · 2026-03-05 · via dnsmasq-discuss
Hey Simon,

during our automated CI testing, we discovered two regressions of the recent TCP buffer use optimization: https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=729c16a8ace49d472bc29cc37f87ca39ade920b6


The first one may be reproduced easily in the following way:

1. Start dnsmasq like:

dnsmasq -d --log-queries=proto --server=127.0.0.1#5000 --no-resolv

Note that the configured server does intentionally NOT exist.

2. Initiate a zone transfer to produce a non-query (an exemplary python script doing this is attached)


3. See the following log lines:

dnsmasq: TCP 1 127.0.0.1/41420 non-query opcode 5 from 127.0.0.1
dnsmasq: TCP 1 127.0.0.1/41420 config error is REFUSED (EDE: network error)

We see an exception in the python script:

>>> dns.query.BadResponse: A DNS query response does not respond to the question asked.


The reason is that the reply ID is 0 instead of being the same as the request ID. You may also check recording.pcap handy to see the effect.



I also found another, related issue when running the same script this time with an existing upstream server. We get the following log lines:


dnsmasq: TCP 1 127.0.0.1/36338 non-query opcode 5 from 127.0.0.1
dnsmasq: TCP 1 127.0.0.1/36338 forwarded example.com to 127.0.0.1#5555
dnsmasq: TCP 1 127.0.0.1/36338 reply error is not implemented

We get again the python exception. This time, we observe that the ID is correct, however, while query has opcode 5 (update), the reply has opcode 0 (query), which obviously doesn't match. Looking into recording2.pcap, we see that it is actually the upstream server which is changing the opcode and dnsmasq just passing this along. Previous versions of dnsmasq (pre-v2.93test2 to be precise) did not bother forwarding such non-queries at all and replied with the same opcode . I think this behavior should be restored.


Best,
Dominik

#!/bin/python3
# Pi-hole: A black hole for Internet advertisements
# (c) 2023 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# FTL Engine - auxiliary files
# Send a dynamic update to the DNS server to update the a zone
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.

import sys
import dns.query
import dns.update
import dns.rcode

# Usage: python3 zone_update.py [proto] [port] [server]

# Get the protocol, server, and port from command line arguments or use defaults
proto = sys.argv[1] if len(sys.argv) > 1 else 'tcp'
port = int(sys.argv[2]) if len(sys.argv) > 2 else 5300
server = sys.argv[3] if len(sys.argv) > 3 else '127.0.0.1'

# Create a new update object
update = dns.update.Update('example.com')

# Add a new A record
update.add('www.example.com', 300, 'A', server)

# Send the update to the DNS server and print the response
if proto == 'udp':
	response = dns.query.udp(update, server, port = port)
	print("UDP response: " + dns.rcode.to_text(response.rcode()))
elif proto == 'tcp':
	response = dns.query.tcp(update, server, port = port)
	print("TCP response: " + dns.rcode.to_text(response.rcode()))

Attachment: recording2.pcap
Description: application/vnd.tcpdump.pcap

Attachment: recording.pcap
Description: application/vnd.tcpdump.pcap

_______________________________________________
Dnsmasq-discuss mailing list
[email protected]
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss