diff --git a/src-tauri/src/config/clash.rs b/src-tauri/src/config/clash.rs index c5a4f21c..26764c01 100644 --- a/src-tauri/src/config/clash.rs +++ b/src-tauri/src/config/clash.rs @@ -48,6 +48,7 @@ impl IClashTemp { map.insert("port".into(), 7899.into()); map.insert("log-level".into(), "info".into()); map.insert("allow-lan".into(), false.into()); + map.insert("ipv6".into(), true.into()); map.insert("mode".into(), "rule".into()); map.insert("external-controller".into(), "127.0.0.1:9097".into()); let mut cors_map = Mapping::new(); diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index 1e97f07b..887487f5 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -180,6 +180,8 @@ fn init_dns_config() -> Result<()> { Value::String("system".into()), Value::String("223.6.6.6".into()), Value::String("8.8.8.8".into()), + Value::String("2400:3200::1".into()), + Value::String("2001:4860:4860::8888".into()), ]), ), ( diff --git a/src/components/setting/mods/dns-viewer.tsx b/src/components/setting/mods/dns-viewer.tsx index 0e192bfd..be41e3be 100644 --- a/src/components/setting/mods/dns-viewer.tsx +++ b/src/components/setting/mods/dns-viewer.tsx @@ -45,6 +45,7 @@ const DEFAULT_DNS_CONFIG = { "respect-rules": false, "use-hosts": false, "use-system-hosts": false, + ipv6: true, "fake-ip-filter": [ "*.lan", "*.local", @@ -57,7 +58,7 @@ const DEFAULT_DNS_CONFIG = { "*.msftncsi.com", "www.msftconnecttest.com", ], - "default-nameserver": ["system", "223.6.6.6", "8.8.8.8"], + "default-nameserver": ["system", "223.6.6.6", "8.8.8.8", "2400:3200::1", "2001:4860:4860::8888"], nameserver: [ "8.8.8.8", "https://doh.pub/dns-query", @@ -97,6 +98,7 @@ export const DnsViewer = forwardRef((props, ref) => { respectRules: boolean; useHosts: boolean; useSystemHosts: boolean; + ipv6: boolean; fakeIpFilter: string; nameserver: string; fallback: string; @@ -119,6 +121,7 @@ export const DnsViewer = forwardRef((props, ref) => { respectRules: DEFAULT_DNS_CONFIG["respect-rules"], useHosts: DEFAULT_DNS_CONFIG["use-hosts"], useSystemHosts: DEFAULT_DNS_CONFIG["use-system-hosts"], + ipv6: DEFAULT_DNS_CONFIG.ipv6, fakeIpFilter: DEFAULT_DNS_CONFIG["fake-ip-filter"].join(", "), defaultNameserver: DEFAULT_DNS_CONFIG["default-nameserver"].join(", "), nameserver: DEFAULT_DNS_CONFIG.nameserver.join(", "), @@ -206,9 +209,10 @@ export const DnsViewer = forwardRef((props, ref) => { preferH3: config["prefer-h3"] ?? DEFAULT_DNS_CONFIG["prefer-h3"], respectRules: config["respect-rules"] ?? DEFAULT_DNS_CONFIG["respect-rules"], - useHosts: config["use-hosts"] ?? DEFAULT_DNS_CONFIG["use-hosts"], - useSystemHosts: - config["use-system-hosts"] ?? DEFAULT_DNS_CONFIG["use-system-hosts"], + useHosts: config["use-hosts"] ?? DEFAULT_DNS_CONFIG["use-hosts"], + useSystemHosts: + config["use-system-hosts"] ?? DEFAULT_DNS_CONFIG["use-system-hosts"], + ipv6: config.ipv6 ?? DEFAULT_DNS_CONFIG.ipv6, fakeIpFilter: config["fake-ip-filter"]?.join(", ") ?? DEFAULT_DNS_CONFIG["fake-ip-filter"].join(", "), @@ -258,6 +262,7 @@ export const DnsViewer = forwardRef((props, ref) => { respectRules: DEFAULT_DNS_CONFIG["respect-rules"], useHosts: DEFAULT_DNS_CONFIG["use-hosts"], useSystemHosts: DEFAULT_DNS_CONFIG["use-system-hosts"], + ipv6: DEFAULT_DNS_CONFIG.ipv6, fakeIpFilter: DEFAULT_DNS_CONFIG["fake-ip-filter"].join(", "), defaultNameserver: DEFAULT_DNS_CONFIG["default-nameserver"].join(", "), nameserver: DEFAULT_DNS_CONFIG.nameserver.join(", "), @@ -331,6 +336,7 @@ export const DnsViewer = forwardRef((props, ref) => { useSystemHosts: dnsConfig["use-system-hosts"] ?? DEFAULT_DNS_CONFIG["use-system-hosts"], + ipv6: dnsConfig.ipv6 ?? DEFAULT_DNS_CONFIG.ipv6, fakeIpFilter: dnsConfig["fake-ip-filter"]?.join(", ") ?? DEFAULT_DNS_CONFIG["fake-ip-filter"].join(", "), @@ -457,6 +463,7 @@ export const DnsViewer = forwardRef((props, ref) => { "respect-rules": values.respectRules, "use-hosts": values.useHosts, "use-system-hosts": values.useSystemHosts, + ipv6: values.ipv6, "fake-ip-filter": parseList(values.fakeIpFilter), "default-nameserver": parseList(values.defaultNameserver), nameserver: parseList(values.nameserver), @@ -679,6 +686,18 @@ export const DnsViewer = forwardRef((props, ref) => { + + + + + ((props, ref) => { size="small" value={values.defaultNameserver} onChange={handleChange("defaultNameserver")} - placeholder="system,223.6.6.6, 8.8.8.8" + placeholder="system,223.6.6.6, 8.8.8.8, 2400:3200::1, 2001:4860:4860::8888" /> diff --git a/src/locales/en.json b/src/locales/en.json index 1fd9fa75..0e76f797 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -500,6 +500,7 @@ "Enhanced Mode": "Enhanced Mode", "Fake IP Range": "Fake IP Range", "Fake IP Filter Mode": "Fake IP Filter Mode", + "Enable IPv6 DNS resolution": "Enable IPv6 DNS resolution", "Prefer H3": "Prefer H3", "DNS DOH使用HTTP/3": "DNS DOH uses HTTP/3", "Respect Rules": "Respect Rules", diff --git a/src/locales/zh.json b/src/locales/zh.json index 4b4726ff..53e295c4 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -500,6 +500,7 @@ "Enhanced Mode": "增强模式", "Fake IP Range": "Fake IP 范围", "Fake IP Filter Mode": "Fake IP 过滤模式", + "Enable IPv6 DNS resolution": "启用 IPv6 DNS 解析", "Prefer H3": "优先使用 HTTP/3", "DNS DOH使用HTTP/3": "DNS DOH 使用 HTTP/3 协议", "Respect Rules": "遵循路由规则",