From 5139e5232e5fcd7a7e913957813f9f8b8037f903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 14 Nov 2024 12:42:42 +0800 Subject: [PATCH] Add `dns.cache_capacity` --- docs/configuration/dns/index.md | 18 ++++++++++++++++++ docs/configuration/dns/index.zh.md | 19 ++++++++++++++++++- go.mod | 4 ++-- go.sum | 8 ++++---- option/dns.go | 1 + route/router.go | 1 + 6 files changed, 44 insertions(+), 7 deletions(-) diff --git a/docs/configuration/dns/index.md b/docs/configuration/dns/index.md index f37c93a4..fc813334 100644 --- a/docs/configuration/dns/index.md +++ b/docs/configuration/dns/index.md @@ -1,3 +1,12 @@ +--- +icon: material/new +--- + + +!!! quote "Changes in sing-box 1.11.0" + + :material-plus: [cache_capacity](#cache_capacity) + !!! quote "Changes in sing-box 1.9.0" :material-plus: [client_subnet](#client_subnet) @@ -16,6 +25,7 @@ "disable_cache": false, "disable_expire": false, "independent_cache": false, + "cache_capacity": 0, "reverse_mapping": false, "client_subnet": "", "fakeip": {} @@ -58,6 +68,14 @@ Disable dns cache expire. Make each DNS server's cache independent for special purposes. If enabled, will slightly degrade performance. +#### cache_capacity + +!!! quote "Since sing-box 1.11.0" + +LRU cache capacity. + +Value less than 1024 will be ignored. + #### reverse_mapping Stores a reverse mapping of IP addresses after responding to a DNS query in order to provide domain names when routing. diff --git a/docs/configuration/dns/index.zh.md b/docs/configuration/dns/index.zh.md index c845ae0a..20fbc00d 100644 --- a/docs/configuration/dns/index.zh.md +++ b/docs/configuration/dns/index.zh.md @@ -1,4 +1,12 @@ -!!! quote "sing-box 1.9.0 中的更改" +--- +icon: material/new +--- + +!!! quote "自 sing-box 1.11.0 起" + + :material-plus: [cache_capacity](#cache_capacity) + +!!! quote "自 sing-box 1.9.0 起" :material-plus: [client_subnet](#client_subnet) @@ -16,6 +24,7 @@ "disable_cache": false, "disable_expire": false, "independent_cache": false, + "cache_capacity": 0, "reverse_mapping": false, "client_subnet": "", "fakeip": {} @@ -57,6 +66,14 @@ 使每个 DNS 服务器的缓存独立,以满足特殊目的。如果启用,将轻微降低性能。 +#### cache_capacity + +!!! quote "自 sing-box 1.11.0 起" + +LRU 缓存容量。 + +小于 1024 的值将被忽略。 + #### reverse_mapping 在响应 DNS 查询后存储 IP 地址的反向映射以为路由目的提供域名。 diff --git a/go.mod b/go.mod index 68bbe414..e246188b 100644 --- a/go.mod +++ b/go.mod @@ -25,8 +25,8 @@ require ( github.com/sagernet/gvisor v0.0.0-20241021032506-a4324256e4a3 github.com/sagernet/quic-go v0.48.1-beta.1 github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 - github.com/sagernet/sing v0.6.0-alpha.9 - github.com/sagernet/sing-dns v0.4.0-alpha.1 + github.com/sagernet/sing v0.6.0-alpha.10 + github.com/sagernet/sing-dns v0.4.0-alpha.2 github.com/sagernet/sing-mux v0.3.0-alpha.1 github.com/sagernet/sing-quic v0.3.0-rc.2 github.com/sagernet/sing-shadowsocks v0.2.7 diff --git a/go.sum b/go.sum index 4389325c..75777287 100644 --- a/go.sum +++ b/go.sum @@ -110,10 +110,10 @@ github.com/sagernet/quic-go v0.48.1-beta.1/go.mod h1:1WgdDIVD1Gybp40JTWketeSfKA/ github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU= github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo= -github.com/sagernet/sing v0.6.0-alpha.9 h1:tOeHdRECQwe9R/1edVHbckF/IBoJoGzqhHRnHsNAQb8= -github.com/sagernet/sing v0.6.0-alpha.9/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= -github.com/sagernet/sing-dns v0.4.0-alpha.1 h1:2KlP8DeqtGkULFiZtvG2r7SuoJP6orANFzJwC5vDKvg= -github.com/sagernet/sing-dns v0.4.0-alpha.1/go.mod h1:vgHATsm4wdymwpvBZPei8RY+546iGXS6hlWv2x6YKcM= +github.com/sagernet/sing v0.6.0-alpha.10 h1:gIUiFof6SDDcAg3m3pUOshOPZBLC7z9VCgDt4Tzs24g= +github.com/sagernet/sing v0.6.0-alpha.10/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= +github.com/sagernet/sing-dns v0.4.0-alpha.2 h1:0x5WjrO+Ifk9sqJlHRz/tKENHwoEinQ8HQCHAhpJHAQ= +github.com/sagernet/sing-dns v0.4.0-alpha.2/go.mod h1:ZiXcacKL54jSSYZMbYF3qKNFkkW674Jt+85YCmK64K8= github.com/sagernet/sing-mux v0.3.0-alpha.1 h1:IgNX5bJBpL41gGbp05pdDOvh/b5eUQ6cv9240+Ngipg= github.com/sagernet/sing-mux v0.3.0-alpha.1/go.mod h1:FTcImmdfW38Lz7b+HQ+mxxOth1lz4ao8uEnz+MwIJQE= github.com/sagernet/sing-quic v0.3.0-rc.2 h1:7vcC4bdS1GBJzHZhfmJiH0CfzQ4mYLUW51Z2RNHcGwc= diff --git a/option/dns.go b/option/dns.go index 32c1ac2e..272c5180 100644 --- a/option/dns.go +++ b/option/dns.go @@ -31,6 +31,7 @@ type DNSClientOptions struct { DisableCache bool `json:"disable_cache,omitempty"` DisableExpire bool `json:"disable_expire,omitempty"` IndependentCache bool `json:"independent_cache,omitempty"` + CacheCapacity uint32 `json:"cache_capacity,omitempty"` ClientSubnet *badoption.Prefixable `json:"client_subnet,omitempty"` } diff --git a/route/router.go b/route/router.go index 1f760a86..f23604b3 100644 --- a/route/router.go +++ b/route/router.go @@ -96,6 +96,7 @@ func NewRouter(ctx context.Context, logFactory log.Factory, options option.Route DisableCache: dnsOptions.DNSClientOptions.DisableCache, DisableExpire: dnsOptions.DNSClientOptions.DisableExpire, IndependentCache: dnsOptions.DNSClientOptions.IndependentCache, + CacheCapacity: dnsOptions.DNSClientOptions.CacheCapacity, RDRC: func() dns.RDRCStore { cacheFile := service.FromContext[adapter.CacheFile](ctx) if cacheFile == nil {