mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2025-12-19 00:10: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
|
||||
FakeIPPool6 *fakeip.Pool
|
||||
FakeIPSkipper *fakeip.Skipper
|
||||
FakeIPTTL int
|
||||
NameServerPolicy []dns.Policy
|
||||
ProxyServerNameserver []dns.NameServer
|
||||
DirectNameServer []dns.NameServer
|
||||
@ -228,6 +229,7 @@ type RawDNS struct {
|
||||
FakeIPRange6 string `yaml:"fake-ip-range6" json:"fake-ip-range6"`
|
||||
FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"`
|
||||
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"`
|
||||
CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"`
|
||||
CacheMaxSize int `yaml:"cache-max-size" json:"cache-max-size"`
|
||||
@ -490,6 +492,7 @@ func DefaultRawConfig() *RawConfig {
|
||||
IPv6Timeout: 100,
|
||||
EnhancedMode: C.DNSMapping,
|
||||
FakeIPRange: "198.18.0.1/16",
|
||||
FakeIPTTL: 1,
|
||||
FallbackFilter: RawFallbackFilter{
|
||||
GeoIP: true,
|
||||
GeoIPCode: "CN",
|
||||
@ -1458,6 +1461,7 @@ func parseDNS(rawCfg *RawConfig, ruleProviders map[string]P.RuleProvider) (*DNS,
|
||||
Mode: cfg.FakeIPFilterMode,
|
||||
}
|
||||
dnsCfg.FakeIPSkipper = skipper
|
||||
dnsCfg.FakeIPTTL = cfg.FakeIPTTL
|
||||
|
||||
if dnsCfg.FakeIPRange.IsValid() {
|
||||
pool, err := fakeip.New(fakeip.Options{
|
||||
|
||||
@ -14,6 +14,7 @@ type ResolverEnhancer struct {
|
||||
fakeIPPool *fakeip.Pool
|
||||
fakeIPPool6 *fakeip.Pool
|
||||
fakeIPSkipper *fakeip.Skipper
|
||||
fakeIPTTL int
|
||||
mapping *lru.LruCache[netip.Addr, string]
|
||||
useHosts bool
|
||||
}
|
||||
@ -162,6 +163,7 @@ type EnhancerConfig struct {
|
||||
FakeIPPool *fakeip.Pool
|
||||
FakeIPPool6 *fakeip.Pool
|
||||
FakeIPSkipper *fakeip.Skipper
|
||||
FakeIPTTL int
|
||||
UseHosts bool
|
||||
}
|
||||
|
||||
@ -177,6 +179,10 @@ func NewEnhancer(cfg EnhancerConfig) *ResolverEnhancer {
|
||||
e.fakeIPPool6 = cfg.FakeIPPool6
|
||||
}
|
||||
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))
|
||||
}
|
||||
|
||||
|
||||
@ -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(ctx *icontext.DNSContext, r *D.Msg) (*D.Msg, error) {
|
||||
q := r.Question[0]
|
||||
@ -186,7 +186,7 @@ func withFakeIP(skipper *fakeip.Skipper, fakePool *fakeip.Pool, fakePool6 *fakei
|
||||
msg.Answer = []D.RR{rr}
|
||||
|
||||
ctx.SetType(icontext.DNSTypeFakeIP)
|
||||
setMsgTTL(msg, 1)
|
||||
setMsgTTL(msg, uint32(fakeIPTTL))
|
||||
msg.SetRcode(r, D.RcodeSuccess)
|
||||
msg.Authoritative = true
|
||||
msg.RecursionAvailable = true
|
||||
@ -238,7 +238,7 @@ func newHandler(resolver *Resolver, mapper *ResolverEnhancer) handler {
|
||||
}
|
||||
|
||||
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 {
|
||||
|
||||
@ -275,6 +275,8 @@ dns:
|
||||
# 配置fake-ip-filter的匹配模式,默认为blacklist,即如果匹配成功不返回fake-ip
|
||||
# 可设置为whitelist,即只有匹配成功才返回fake-ip
|
||||
fake-ip-filter-mode: blacklist
|
||||
# 配置fakeip查询返回的TTL,非必要情况下请勿修改
|
||||
fake-ip-ttl: 1
|
||||
|
||||
# use-hosts: true # 查询 hosts
|
||||
|
||||
|
||||
@ -269,6 +269,7 @@ func updateDNS(c *config.DNS, generalIPv6 bool) {
|
||||
FakeIPPool: c.FakeIPPool,
|
||||
FakeIPPool6: c.FakeIPPool6,
|
||||
FakeIPSkipper: c.FakeIPSkipper,
|
||||
FakeIPTTL: c.FakeIPTTL,
|
||||
UseHosts: c.UseHosts,
|
||||
})
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user