Commit Graph

89 Commits

Author SHA1 Message Date
世界
32f91a4faa Fix FakeIP returning error for unconfigured address family
Return SUCCESS with empty answers instead of an error when the
queried address family has no range configured. Reject configurations
where neither inet4_range nor inet6_range is set.
2026-04-14 14:15:20 +08:00
Berkay Özdemirci
0b8746a133 Fix EDNS OPT record corruption in DNS cache
The TTL computation and assignment loops treat OPT record's Hdr.Ttl
as a regular TTL, but per RFC 6891 it encodes EDNS0 metadata
(ExtRCode|Version|Flags). This corrupts cached responses causing
systemd-resolved to reject them with EDNS version 255.

Also fix pointer aliasing: storeCache() stored raw *dns.Msg pointer
so subsequent mutations by Exchange() corrupted cached data.

- Skip OPT records in all TTL loops (Exchange + loadResponse)
- Use message.Copy() in storeCache() to isolate cache from mutations
2026-04-10 14:08:24 +08:00
世界
fd28e167b9 Fix DNS transport returning error for empty AAAA response
Closes #3925
2026-03-23 19:21:55 +08:00
世界
baf76d88ad Fix connector canceled dial cleanup 2026-03-15 17:56:37 +08:00
世界
4984fc05bc Fix legacy DNS client_subnet options not working 2026-03-09 20:18:47 +08:00
世界
559eb5ed71 Fix local DNS transport CNAME chain broken with systemd-resolved
Replace D-Bus ResolveRecord API with direct raw DNS queries to upstream
servers obtained from systemd-resolved's per-interface link properties.
2026-03-09 20:06:34 +08:00
世界
8ef2b826c3 Fix legacy DNS defaults on final transport 2026-03-09 20:06:34 +08:00
世界
23e2d28c21 Fix DNS exchange failure and recursion deadlock in connector
Co-authored-by: everyx <lunt.luo@gmail.com>
2026-03-06 15:31:22 +08:00
世界
798e5cbec6 Fix rule_set_ip_cidr_accept_empty not working 2026-03-04 11:48:22 +08:00
世界
82482741df Fix fake-ip address allocation 2026-03-03 21:37:24 +08:00
dyhkwong
28c1f2c51e Fix IPv6 local DNS on Windows 2026-03-01 12:30:43 +08:00
世界
4652eb2bb5 Fix matching multi predefined 2026-02-15 21:09:06 +08:00
世界
dd067b6e75 Fix DNS cache lock goroutine leak
The cache deduplication in Client.Exchange uses a channel-based lock
per DNS question. Waiting goroutines blocked on <-cond without context
awareness, causing them to accumulate indefinitely when the owning
goroutine's transport call stalls. Add select on ctx.Done() so waiters
respect context cancellation and timeouts.
2026-02-06 22:28:35 +08:00
世界
f085917d8c Fix DNS transports 2026-01-17 05:48:41 +08:00
世界
9b7dc7f877 Revert "Stop using DHCP on iOS and tvOS" 2026-01-17 05:47:32 +08:00
世界
0b6fe45fb9 platform: Refactoring libbox to use gRPC-based protocol 2026-01-17 05:47:32 +08:00
世界
529f050a56 Use a more conservative strategy for resolving with systemd-resolved for local DNS server 2026-01-17 05:46:23 +08:00
世界
63a1edc0de Update quic-go to v0.55.0 2026-01-17 05:46:13 +08:00
世界
47392e55a2 Add support for kTLS
Reference: https://gitlab.com/go-extension/tls
2026-01-17 05:44:42 +08:00
世界
6f00a94eb9 Fix resolve using resolved 2026-01-17 05:44:29 +08:00
世界
958799e85e Stop using DHCP on iOS and tvOS
We do not have the `com.apple.developer.networking.multicast` entitlement and are unable to obtain it for non-technical reasons.
2026-01-17 05:44:28 +08:00
世界
ce778e569b Improve local DNS server on darwin
We mistakenly believed that `libresolv`'s `search` function worked correctly in NetworkExtension, but it seems only `getaddrinfo` does.

This commit changes the behavior of the `local` DNS server in NetworkExtension to prefer DHCP, falling back to `getaddrinfo` if DHCP servers are unavailable.

It's worth noting that `prefer_go` does not disable DHCP since it respects Dial Fields, but `getaddrinfo` does the opposite. The new behavior only applies to NetworkExtension, not to all scenarios (primarily command-line binaries) as it did previously.

In addition, this commit also improves the DHCP DNS server to use the same robust query logic as `local`.
2026-01-17 05:44:28 +08:00
世界
dd489ab415 Use resolved in local DNS server if available 2026-01-17 05:44:28 +08:00
neletor
6fdd08ac2d Add support for ech retry configs 2026-01-17 05:44:26 +08:00
Gavin Luo
e923f63606 Fix reset buffer in dhcp response loop
Previously, the buffer was not reset within the response loop. If a packet
handle failed or completed, the buffer retained its state. Specifically,
if `ReadPacketFrom` returned `io.ErrShortBuffer`, the error was ignored
via `continue`, but the buffer remained full. This caused the next
read attempt to immediately fail with the same error, creating a tight
busy-wait loop that consumed 100% CPU.

Validates `buffer.Reset()` is called at the start of each iteration to
ensure a clean state for 'ReadPacketFrom'.
2026-01-05 17:46:59 +08:00
世界
4eb91d69fe Fix DNS cache not working when domain strategy is set
The cache lookup was performed before rule matching, using the caller's
strategy (usually AsIS/0) instead of the resolved strategy. This caused
cache misses when ipv4_only was configured globally but the cache lookup
expected both A and AAAA records.

Remove LookupCache and ExchangeCache from Router, as the cache checks
inside client.Lookup and client.Exchange already handle caching correctly
after rule matching with the proper strategy and transport.
2025-12-21 16:59:10 +08:00
世界
8179612f4d Fix trailing dot handling in local DNS transport 2025-10-16 21:43:12 +08:00
世界
a3b3955f1c Fix DNS reject panic 2025-10-14 23:40:19 +08:00
世界
eb4cacec06 Fix DNS negative caching to comply with RFC 2308 2025-10-09 23:45:23 +08:00
Mahdi
e331ae8a92 Fix dns cache in lookup 2025-10-09 23:45:23 +08:00
世界
869528acba Improve HTTPS DNS transport 2025-10-09 23:45:23 +08:00
Mahdi
82648278eb Fix dns truncate 2025-10-05 17:58:21 +08:00
世界
c525437256 Fix UDP exchange for local/dhcp DNS servers 2025-09-13 12:26:48 +08:00
世界
475dc17c8a Do not cache DNS responses with empty answers 2025-09-13 03:04:08 +08:00
世界
f0292d30ef Fix TCP exchange for local/dhcp DNS servers 2025-09-12 21:58:48 +08:00
世界
709cdc1f95 Fix DNS exchange 2025-09-12 18:05:02 +08:00
世界
71089ea924 Fix dhcp fetch 2025-09-12 11:03:13 +08:00
世界
f419d0ce5e Fix timeout check 2025-09-10 22:42:40 +08:00
世界
bce6af069f Treat requests with OPT extra but no options as simple requests 2025-09-08 09:12:30 +08:00
世界
979b6df8d2 Fix DNS packet size 2025-09-08 09:12:30 +08:00
世界
45387f3231 Fix DNS client 2025-09-08 09:12:30 +08:00
世界
38c5d92a0c Fix DNS cache 2025-09-08 09:12:30 +08:00
世界
5a401ea2bf Improve DHCP DNS server 2025-09-02 17:55:26 +08:00
世界
3b96bed864 Fix local DNS server on legacy windows 2025-09-02 17:55:26 +08:00
世界
831e92816e Fix failed DNS responses being incorrectly rejected 2025-08-19 11:14:46 +08:00
世界
8d5f1ad310 Update golangci-lint to v2 2025-08-13 23:37:40 +08:00
Youfu Zhang
00dbe21d73 Fix libresolv initialization
Fixes: 76f7c003ca ("Update libresolv usage")

Signed-off-by: Youfu Zhang <zhangyoufu@gmail.com>
2025-08-10 20:06:28 +08:00
世界
b64231debe Fix UDP DNS buffer size 2025-07-18 12:20:33 +08:00
世界
c9064a4d34 Fix DNS reject check 2025-07-08 13:14:46 +08:00
世界
427804fe30 Fixed DoH server recover from conn freezes 2025-07-08 13:14:45 +08:00