mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2025-12-20 00:50:06 +08:00
chore: add fake-ip-ttl to dns section
Some checks are pending
Test / test (1.20, macos-15-intel) (push) Waiting to run
Test / test (1.20, macos-latest) (push) Waiting to run
Test / test (1.20, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.20, ubuntu-latest) (push) Waiting to run
Test / test (1.20, windows-latest) (push) Waiting to run
Test / test (1.21, macos-15-intel) (push) Waiting to run
Test / test (1.21, macos-latest) (push) Waiting to run
Test / test (1.21, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.21, ubuntu-latest) (push) Waiting to run
Test / test (1.21, windows-latest) (push) Waiting to run
Test / test (1.22, macos-15-intel) (push) Waiting to run
Test / test (1.22, macos-latest) (push) Waiting to run
Test / test (1.22, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.22, ubuntu-latest) (push) Waiting to run
Test / test (1.22, windows-latest) (push) Waiting to run
Test / test (1.23, macos-15-intel) (push) Waiting to run
Test / test (1.23, macos-latest) (push) Waiting to run
Test / test (1.23, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.23, ubuntu-latest) (push) Waiting to run
Test / test (1.23, windows-latest) (push) Waiting to run
Test / test (1.24, macos-15-intel) (push) Waiting to run
Test / test (1.24, macos-latest) (push) Waiting to run
Test / test (1.24, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.24, ubuntu-latest) (push) Waiting to run
Test / test (1.24, windows-latest) (push) Waiting to run
Test / test (1.25, macos-15-intel) (push) Waiting to run
Test / test (1.25, macos-latest) (push) Waiting to run
Test / test (1.25, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.25, ubuntu-latest) (push) Waiting to run
Test / test (1.25, windows-latest) (push) Waiting to run
Trigger CMFA Update / trigger-CMFA-update (push) Waiting to run
Some checks are pending
Test / test (1.20, macos-15-intel) (push) Waiting to run
Test / test (1.20, macos-latest) (push) Waiting to run
Test / test (1.20, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.20, ubuntu-latest) (push) Waiting to run
Test / test (1.20, windows-latest) (push) Waiting to run
Test / test (1.21, macos-15-intel) (push) Waiting to run
Test / test (1.21, macos-latest) (push) Waiting to run
Test / test (1.21, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.21, ubuntu-latest) (push) Waiting to run
Test / test (1.21, windows-latest) (push) Waiting to run
Test / test (1.22, macos-15-intel) (push) Waiting to run
Test / test (1.22, macos-latest) (push) Waiting to run
Test / test (1.22, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.22, ubuntu-latest) (push) Waiting to run
Test / test (1.22, windows-latest) (push) Waiting to run
Test / test (1.23, macos-15-intel) (push) Waiting to run
Test / test (1.23, macos-latest) (push) Waiting to run
Test / test (1.23, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.23, ubuntu-latest) (push) Waiting to run
Test / test (1.23, windows-latest) (push) Waiting to run
Test / test (1.24, macos-15-intel) (push) Waiting to run
Test / test (1.24, macos-latest) (push) Waiting to run
Test / test (1.24, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.24, ubuntu-latest) (push) Waiting to run
Test / test (1.24, windows-latest) (push) Waiting to run
Test / test (1.25, macos-15-intel) (push) Waiting to run
Test / test (1.25, macos-latest) (push) Waiting to run
Test / test (1.25, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.25, ubuntu-latest) (push) Waiting to run
Test / test (1.25, windows-latest) (push) Waiting to run
Trigger CMFA Update / trigger-CMFA-update (push) Waiting to run
This commit is contained in:
parent
d4d2c062a3
commit
7571c87afb
@ -162,6 +162,7 @@ type DNS struct {
|
|||||||
FakeIPRange6 netip.Prefix
|
FakeIPRange6 netip.Prefix
|
||||||
FakeIPPool6 *fakeip.Pool
|
FakeIPPool6 *fakeip.Pool
|
||||||
FakeIPSkipper *fakeip.Skipper
|
FakeIPSkipper *fakeip.Skipper
|
||||||
|
FakeIPTTL int
|
||||||
NameServerPolicy []dns.Policy
|
NameServerPolicy []dns.Policy
|
||||||
ProxyServerNameserver []dns.NameServer
|
ProxyServerNameserver []dns.NameServer
|
||||||
DirectNameServer []dns.NameServer
|
DirectNameServer []dns.NameServer
|
||||||
@ -228,6 +229,7 @@ type RawDNS struct {
|
|||||||
FakeIPRange6 string `yaml:"fake-ip-range6" json:"fake-ip-range6"`
|
FakeIPRange6 string `yaml:"fake-ip-range6" json:"fake-ip-range6"`
|
||||||
FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"`
|
FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"`
|
||||||
FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"`
|
FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"`
|
||||||
|
FakeIPTTL int `yaml:"fake-ip-ttl" json:"fake-ip-ttl"`
|
||||||
DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"`
|
DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"`
|
||||||
CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"`
|
CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"`
|
||||||
CacheMaxSize int `yaml:"cache-max-size" json:"cache-max-size"`
|
CacheMaxSize int `yaml:"cache-max-size" json:"cache-max-size"`
|
||||||
@ -490,6 +492,7 @@ func DefaultRawConfig() *RawConfig {
|
|||||||
IPv6Timeout: 100,
|
IPv6Timeout: 100,
|
||||||
EnhancedMode: C.DNSMapping,
|
EnhancedMode: C.DNSMapping,
|
||||||
FakeIPRange: "198.18.0.1/16",
|
FakeIPRange: "198.18.0.1/16",
|
||||||
|
FakeIPTTL: 1,
|
||||||
FallbackFilter: RawFallbackFilter{
|
FallbackFilter: RawFallbackFilter{
|
||||||
GeoIP: true,
|
GeoIP: true,
|
||||||
GeoIPCode: "CN",
|
GeoIPCode: "CN",
|
||||||
@ -1458,6 +1461,7 @@ func parseDNS(rawCfg *RawConfig, ruleProviders map[string]P.RuleProvider) (*DNS,
|
|||||||
Mode: cfg.FakeIPFilterMode,
|
Mode: cfg.FakeIPFilterMode,
|
||||||
}
|
}
|
||||||
dnsCfg.FakeIPSkipper = skipper
|
dnsCfg.FakeIPSkipper = skipper
|
||||||
|
dnsCfg.FakeIPTTL = cfg.FakeIPTTL
|
||||||
|
|
||||||
if dnsCfg.FakeIPRange.IsValid() {
|
if dnsCfg.FakeIPRange.IsValid() {
|
||||||
pool, err := fakeip.New(fakeip.Options{
|
pool, err := fakeip.New(fakeip.Options{
|
||||||
|
|||||||
@ -14,6 +14,7 @@ type ResolverEnhancer struct {
|
|||||||
fakeIPPool *fakeip.Pool
|
fakeIPPool *fakeip.Pool
|
||||||
fakeIPPool6 *fakeip.Pool
|
fakeIPPool6 *fakeip.Pool
|
||||||
fakeIPSkipper *fakeip.Skipper
|
fakeIPSkipper *fakeip.Skipper
|
||||||
|
fakeIPTTL int
|
||||||
mapping *lru.LruCache[netip.Addr, string]
|
mapping *lru.LruCache[netip.Addr, string]
|
||||||
useHosts bool
|
useHosts bool
|
||||||
}
|
}
|
||||||
@ -162,6 +163,7 @@ type EnhancerConfig struct {
|
|||||||
FakeIPPool *fakeip.Pool
|
FakeIPPool *fakeip.Pool
|
||||||
FakeIPPool6 *fakeip.Pool
|
FakeIPPool6 *fakeip.Pool
|
||||||
FakeIPSkipper *fakeip.Skipper
|
FakeIPSkipper *fakeip.Skipper
|
||||||
|
FakeIPTTL int
|
||||||
UseHosts bool
|
UseHosts bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,6 +179,10 @@ func NewEnhancer(cfg EnhancerConfig) *ResolverEnhancer {
|
|||||||
e.fakeIPPool6 = cfg.FakeIPPool6
|
e.fakeIPPool6 = cfg.FakeIPPool6
|
||||||
}
|
}
|
||||||
e.fakeIPSkipper = cfg.FakeIPSkipper
|
e.fakeIPSkipper = cfg.FakeIPSkipper
|
||||||
|
e.fakeIPTTL = cfg.FakeIPTTL
|
||||||
|
if e.fakeIPTTL < 1 {
|
||||||
|
e.fakeIPTTL = 1
|
||||||
|
}
|
||||||
e.mapping = lru.New(lru.WithSize[netip.Addr, string](4096))
|
e.mapping = lru.New(lru.WithSize[netip.Addr, string](4096))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -146,7 +146,7 @@ func withMapping(mapping *lru.LruCache[netip.Addr, string]) middleware {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func withFakeIP(skipper *fakeip.Skipper, fakePool *fakeip.Pool, fakePool6 *fakeip.Pool) middleware {
|
func withFakeIP(skipper *fakeip.Skipper, fakePool *fakeip.Pool, fakePool6 *fakeip.Pool, fakeIPTTL int) middleware {
|
||||||
return func(next handler) handler {
|
return func(next handler) handler {
|
||||||
return func(ctx *icontext.DNSContext, r *D.Msg) (*D.Msg, error) {
|
return func(ctx *icontext.DNSContext, r *D.Msg) (*D.Msg, error) {
|
||||||
q := r.Question[0]
|
q := r.Question[0]
|
||||||
@ -186,7 +186,7 @@ func withFakeIP(skipper *fakeip.Skipper, fakePool *fakeip.Pool, fakePool6 *fakei
|
|||||||
msg.Answer = []D.RR{rr}
|
msg.Answer = []D.RR{rr}
|
||||||
|
|
||||||
ctx.SetType(icontext.DNSTypeFakeIP)
|
ctx.SetType(icontext.DNSTypeFakeIP)
|
||||||
setMsgTTL(msg, 1)
|
setMsgTTL(msg, uint32(fakeIPTTL))
|
||||||
msg.SetRcode(r, D.RcodeSuccess)
|
msg.SetRcode(r, D.RcodeSuccess)
|
||||||
msg.Authoritative = true
|
msg.Authoritative = true
|
||||||
msg.RecursionAvailable = true
|
msg.RecursionAvailable = true
|
||||||
@ -238,7 +238,7 @@ func newHandler(resolver *Resolver, mapper *ResolverEnhancer) handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if mapper.mode == C.DNSFakeIP {
|
if mapper.mode == C.DNSFakeIP {
|
||||||
middlewares = append(middlewares, withFakeIP(mapper.fakeIPSkipper, mapper.fakeIPPool, mapper.fakeIPPool6))
|
middlewares = append(middlewares, withFakeIP(mapper.fakeIPSkipper, mapper.fakeIPPool, mapper.fakeIPPool6, mapper.fakeIPTTL))
|
||||||
}
|
}
|
||||||
|
|
||||||
if mapper.mode != C.DNSNormal {
|
if mapper.mode != C.DNSNormal {
|
||||||
|
|||||||
@ -275,6 +275,8 @@ dns:
|
|||||||
# 配置fake-ip-filter的匹配模式,默认为blacklist,即如果匹配成功不返回fake-ip
|
# 配置fake-ip-filter的匹配模式,默认为blacklist,即如果匹配成功不返回fake-ip
|
||||||
# 可设置为whitelist,即只有匹配成功才返回fake-ip
|
# 可设置为whitelist,即只有匹配成功才返回fake-ip
|
||||||
fake-ip-filter-mode: blacklist
|
fake-ip-filter-mode: blacklist
|
||||||
|
# 配置fakeip查询返回的TTL,非必要情况下请勿修改
|
||||||
|
fake-ip-ttl: 1
|
||||||
|
|
||||||
# use-hosts: true # 查询 hosts
|
# use-hosts: true # 查询 hosts
|
||||||
|
|
||||||
|
|||||||
@ -269,6 +269,7 @@ func updateDNS(c *config.DNS, generalIPv6 bool) {
|
|||||||
FakeIPPool: c.FakeIPPool,
|
FakeIPPool: c.FakeIPPool,
|
||||||
FakeIPPool6: c.FakeIPPool6,
|
FakeIPPool6: c.FakeIPPool6,
|
||||||
FakeIPSkipper: c.FakeIPSkipper,
|
FakeIPSkipper: c.FakeIPSkipper,
|
||||||
|
FakeIPTTL: c.FakeIPTTL,
|
||||||
UseHosts: c.UseHosts,
|
UseHosts: c.UseHosts,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user