Commit Graph

116 Commits

Author SHA1 Message Date
世界 6b490f5cf4 Fix crash on Apple platforms caused by concurrent libresolv calls 2026-06-08 08:51:52 +08:00
世界 3d50303ec1 Fix tailscale dns 2026-06-08 08:51:51 +08:00
世界 77282d2efe dns: Fix DHCP reset 2026-06-08 08:51:49 +08:00
世界 b19d4a92e2 Fix lint errors 2026-06-08 08:51:48 +08:00
世界 b9c596f9e3 dns: Add mDNS server 2026-06-08 08:51:46 +08:00
世界 db08f3f699 dns: Add preferred_by rule item 2026-06-08 08:51:46 +08:00
世界 f842580f33 dns: Add neighbor-based hostname resolution to local server 2026-06-08 08:51:46 +08:00
世界 c8792e7fe6 dns: Add timeout configuration 2026-06-08 08:51:46 +08:00
世界 4c9978fc30 Improve oom-killer 2026-06-08 08:51:45 +08:00
世界 4163bd7c49 Fix darwin cgo DNS again 2026-06-08 08:51:44 +08:00
世界 d218a1586a Log DNS optimistic background refresh outcomes 2026-06-08 08:51:43 +08:00
世界 661075f693 Strip EDNS padding from upstream DNS responses 2026-06-08 08:51:42 +08:00
世界 aabaa42634 Reject pure-IP rule-set references without match_response
DNS rules referencing rule-sets that contain only ip_cidr predicates
silently stopped matching when legacy DNS mode was disabled, because the
IP-CIDR branch cannot match against an in-flight DNS query. The existing
validation intentionally let every rule_set through on the premise that
mixed sets still work via their non-IP branches, which is only true when
such a branch exists. Track whether a rule-set carries any non-IP-CIDR
predicate and reject pure-IP references the same way bare ip_cidr fields
are already rejected.
2026-06-08 08:51:41 +08:00
世界 ac745ed9d8 Standardize hosts path 2026-06-08 08:51:40 +08:00
世界 ab2a90d5e7 Refactor: HTTP clients, unified HTTP2/QUIC options, Apple engines 2026-06-08 08:51:40 +08:00
世界 0525f6cb1c Add optimistic DNS cache 2026-06-08 08:51:40 +08:00
世界 df5a3e5fec Fix darwin cgo DNS again 2026-06-08 08:51:39 +08:00
世界 5e02c705ff Un-deprecate ip_accept_any DNS rule item 2026-06-08 08:51:37 +08:00
世界 fa3d6dee57 Fix darwin local DNS transport 2026-06-08 08:51:37 +08:00
世界 286f99fb84 Fix rules lock 2026-06-08 08:51:37 +08:00
nekohasekai 9a3dcca616 Add evaluate DNS rule action and related rule items 2026-06-08 08:51:34 +08:00
世界 761b7f4e12 Handle TUN loopback in direct outbound 2026-06-03 12:56:36 +08:00
世界 5e7fd7ad78 Fix lint errors 2026-05-13 23:39:27 +08:00
世界 383a1824c1 dns: Refactor reordered pool 2026-05-13 16:28:49 +08:00
世界 d166f0da8b dns: Fix conn pool leak 2026-05-13 16:28:49 +08:00
世界 6548c17110 dns: Fix deadline 2026-05-13 16:28:49 +08:00
世界 3312b8da50 Clean up DNS transports 2026-04-23 02:30:32 +08:00
世界 8e3176b789 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 5a957fd750 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
世界 72bc4c1f87 Fix DNS transport returning error for empty AAAA response
Closes #3925
2026-03-23 19:21:55 +08:00
世界 0889ddd001 Fix connector canceled dial cleanup 2026-03-15 17:56:37 +08:00
世界 4d6fb1d38d Fix legacy DNS client_subnet options not working 2026-03-09 20:18:47 +08:00
世界 aa495fce38 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
世界 e343cec4d5 Fix legacy DNS defaults on final transport 2026-03-09 20:06:34 +08:00
世界 27c5b0b1af 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
世界 e62dc7bfa2 Fix rule_set_ip_cidr_accept_empty not working 2026-03-04 11:48:22 +08:00
世界 ab76062a41 Fix fake-ip address allocation 2026-03-03 21:37:24 +08:00
dyhkwong 4c65fea1ac Fix IPv6 local DNS on Windows 2026-03-01 12:30:43 +08:00
世界 8714c157c9 Fix matching multi predefined 2026-02-15 21:09:06 +08:00
世界 aba8346bd6 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
世界 aa8dd6e44f Fix DNS transports 2026-01-17 05:48:41 +08:00
世界 a930356b04 Revert "Stop using DHCP on iOS and tvOS" 2026-01-17 05:47:32 +08:00
世界 5bc0dfa9dd platform: Refactoring libbox to use gRPC-based protocol 2026-01-17 05:47:32 +08:00
世界 fce21607bd Use a more conservative strategy for resolving with systemd-resolved for local DNS server 2026-01-17 05:46:23 +08:00
世界 ed1ee4c3a4 Update quic-go to v0.55.0 2026-01-17 05:46:13 +08:00
世界 107f92381b Add support for kTLS
Reference: https://gitlab.com/go-extension/tls
2026-01-17 05:44:42 +08:00
世界 44fafcef73 Fix resolve using resolved 2026-01-17 05:44:29 +08:00
世界 bba92146b1 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
世界 48f84b31d6 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
世界 1c846df903 Use resolved in local DNS server if available 2026-01-17 05:44:28 +08:00