标签 Clash Verge 下的文章

Clash Verge Rev (Mac) 内网 DNS 与 VLESS 配置指南

文档说明:本文档记录了如何在 Mac 版 Clash Verge Rev (Mihomo 内核) 中配置 VLESS 节点,并解决开启 Tun 模式后公司内网域名无法解析的问题。
最后更新时间


1. 环境与目标

  • 软件:Clash Verge Rev (Mihomo/Meta 内核)
  • 协议:VLESS + Reality + Vision
  • 模式:Tun 模式 (接管系统所有流量)
  • 痛点解决:修复 Tun 模式下,内网域名报 dns resolve failed 的问题。


2. 核心步骤一:获取物理 DNS

必须步骤:在配置脚本前,需要知道公司网络分配的真实 DNS IP。

  1. 关闭 Clash Verge 的 Tun 模式。
  2. 确保 Mac 连接了公司 Wi-Fi 或网线。
  3. 打开 系统设置网络Wi-Fi (或以太网)详细信息DNS
  4. 记下列表中的 IP 地址(例如 10.58.1.10)。


3. 核心步骤二:全局扩展脚本 (Script)

此脚本是解决问题的关键,它强制指定特定域名走物理 DNS,绕过 Tun 模式的干扰。

  • 操作:在 Clash Verge Rev → 脚本 (Script) → 新建 → 编辑代码。
  • 设置:右键点击该脚本 → 选择 “全局扩展” (Global Extension) → 启用。
// Merge Script - Tun 模式内网 DNS 修复终极版 function main(config) {
  
  // ======================================================= // [配置区] 请根据实际网络环境修改以下变量 // ======================================================= // 1. 公司内网真实的 DNS 服务器 IP (步骤一中获取的) // 务必替换成你实际看到的 IP const companyDNS = ["10.**.**.**"]; 

  // 2. 需要直连且必须走内网 DNS 的域名列表 const directDomains = [
    "local",
    "localhost",
    "*.internal.corp" // 示例:如有其他内网域名在此添加
  ];

  // ======================================================= // [逻辑区] 以下代码无需修改 // ======================================================= // 1. 初始化 DNS 配置 (防止简易 Profile 缺失 DNS 模块) if (!config.dns) config.dns = {};
  config.dns.enable = true;
  config.dns.ipv6 = false; // 建议关闭 IPv6 DNS 防止内网干扰
  config.dns.listen = "0.0.0.0:1053";
  config.dns['enhanced-mode'] = "fake-ip";
  config.dns['fake-ip-range'] = "198.18.0.1/16";
  
  // 设置默认公网 DNS (用于解析外网,如 Google) if (!config.dns.nameserver) {
    config.dns.nameserver = ["223.5.5.5", "8.8.8.8"];
  }

  // 2. 注入 DNS 分流策略 if (!config.dns['nameserver-policy']) config.dns['nameserver-policy'] = {};
  if (!config.dns['fake-ip-filter']) config.dns['fake-ip-filter'] = [];

  directDomains.forEach(domain => {
    // 【核心修复】强制这些域名去问 companyDNS,而不走系统默认或 Google
    config.dns['nameserver-policy'][`+.${domain}`] = companyDNS;
    
    // 【重要】加入 Fake-IP 白名单,防止返回假 IP 导致连接失败
    config.dns['fake-ip-filter'].push(`+.${domain}`);
  });

  // 常见的局域网反查也走公司 DNS
  config.dns['nameserver-policy']['geosite:private'] = companyDNS;

  // 3. 注入直连规则 (Rules) // 插入到规则列表最前面,确保优先级最高 const myRules = [
    "DOMAIN-SUFFIX,lenovo.com,DIRECT",
    "DOMAIN-SUFFIX,lenovo.com.cn,DIRECT",
    "DOMAIN-SUFFIX,local,DIRECT",
    "IP-CIDR,192.168.0.0/16,DIRECT",
    "IP-CIDR,10.0.0.0/8,DIRECT",
    "IP-CIDR,172.16.0.0/12,DIRECT",
    "GEOIP,CN,DIRECT"
  ];
  
  if (!config.rules) config.rules = [];
  config.rules.unshift(...myRules);

  return config;
}
## 4. 核心步骤三:节点配置 (VLESS)
这是连接 VPS 的基础配置文件。由于脚本是全局扩展的,这里只需要关注节点本身的连接信息。

*   **操作**:在 Clash Verge Rev -> **订阅 (Profiles)** -> 新建 -> 类型选 **Local** -> 编辑文件。
*   **注意**:请将下方的 `*` 号部分替换为你真实的服务器信息。

```yaml
# Local Configuration for My VPS
# 基础监听端口设置
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
ipv6: true
external-controller: 127.0.0.1:9090

proxies:
- name: "My VPS Node"
type: vless
server: 144.**.**.** # 替换:你的 VPS IP 地址
port: 1444 # 替换:你的端口号
uuid: ********-****-****-****-************ # 替换:你的 UUID
network: tcp
tls: true
udp: true
flow: xtls-rprx-vision # 流控模式
servername: **** # 替换:你的伪装域名 (SNI)
client-fingerprint: chrome
reality-opts: # Reality 安全配置
public-key: ******************************************* # 替换:你的 Public Key
short-id: "" # 替换:如有 ShortId 则填入

proxy-groups:
- name: Proxy
type: select
proxies:
- "My VPS Node"

rules:
# 这里留空或只写兜底规则即可
# 上面的全局脚本会自动处理内网和直连规则
- MATCH,Proxy

📌 转载信息
原作者:
ganwurrt
转载时间:
2026/1/16 12:08:09

// Clash Verge 全局扩展脚本
// 将此脚本复制到 Clash Verge -> 订阅 -> 全局扩展脚本

// ==================== 配置常量 ====================

// 代理组基础配置
const groupBaseOption = {
  interval: 0,
  timeout: 3000,
  url: "https://www.google.com/generate_204",
  lazy: true,
  "max-failed-times": 3,
  hidden: false,
};

// 图标 URL 基础路径
const iconBaseUrl = "https://fastly.jsdelivr.net/gh/clash-verge-rev/clash-verge-rev.github.io@main/docs/assets/icons";

// 落地节点排除过滤器(用于排除落地节点不参与自动选择)
const landingNodeExcludeFilter = "(?i)webshare";

// ==================== 主函数 ====================
function main(config) {
  // 添加代理提供者
  config["proxy-providers"] = getProxyProviders();

  // 添加落地节点代理
  config.proxies = getProxies();

  // 配置 DNS
  config.dns = getDnsConfig();

  // 添加规则提供者
  config["rule-providers"] = getRuleProviders();

  // 添加规则
  config.rules = getRules();

  // 添加代理组
  config["proxy-groups"] = getProxyGroups();

  return config;
}

// ==================== 代理提供者配置 ====================
function getProxyProviders() {
  return {
    p1: {
      type: "http",
      url: "", // 请替换成你的订阅链接
      interval: 86400,
      proxy: "🔰 模式选择",
      path: "./proxy_providers/p1.yaml",
      "health-check": {
        enable: false,
        url: "http://www.gstatic.com/generate_204",
        interval: 3600,
      },
      override: {
        "additional-prefix": "p1 | ",
        udp: true,
      },
    },
    // --- 在这里添加其他订阅 ---
    // p2: {
    //   type: "http",
    //   url: "YOUR_SECOND_SUBSCRIPTION_URL",
    //   interval: 86400,
    //   path: "./proxy_providers/p2.yaml",
    //   "health-check": {
    //     enable: true,
    //     url: "http://www.gstatic.com/generate_204",
    //     interval: 3600,
    //   },
    //   override: {
    //     "additional-prefix": "p2 | ",
    //   },
    // },
  };
}

// ==================== 落地节点配置 ====================
function getProxies() {
  return [
    // --- 机场节点 开始 (请替换成你自己的信息) ---
    {
      name: "", // 替换成你的机场节点起个名字
      server: "",  // 替换成你的机场节点IP或域名
      port: ,  // 替换成你的机场节点端口
      sni: "", // Server Name Indication(服务器名称指示),TLS 握手时发送的域名,用于伪装流量-SNI 伪装原理:将流量伪装成访问正常网站,防火墙看到的是你在访问一个普通 HTTPS 网站
      up: "100 Mbps",  // 上传带宽限制,告诉服务器你的上行速度
      down: "200 Mbps",  // 下载带宽限制,告诉服务器你的下行速度
      "skip-cert-verify": true,  // 跳过 TLS 证书验证,true 表示不验证证书(自签证书时需要)
      type: "hysteria2",  //  代理协议类型,这里是 Hysteria2 协议
      password: "",  // 认证密码,连接服务器时的验证凭证
    },
	
	// 落地节点
    {
      name: "", // 替换成你的落地节点起个名字
      server: "",  // 替换成你的落地节点IP或域名
      port: ,  // 替换成你的落地节点端口
      type: "",  // 代理协议类型,这里是 SOCKS5 协议
      username: "",  // 替换成你的用户名
      password: "",  // 替换成你的密码
      tls: false,  //  是否启用 TLS 加密,false 表示不加密
      "skip-cert-verify": true,  // 跳过证书验证(TLS 关闭时此项无实际作用) true 表示:跳过证书验证
      udp: true,  // 是否支持 UDP 转发,true 表示支持
      "dialer-proxy": "⚙️ 节点选择",  // 链式代理,指定通过哪个代理组连接此节点
    },
    // --- 如果有更多落地节点,在这里继续添加 ---
  ];
}

// ==================== DNS 配置 ====================
function getDnsConfig() {
  return {
    enable: true,
    listen: "0.0.0.0:1053",
    "prefer-h3": false,
    "respect-rules": true,
    "use-system-hosts": false,
    "cache-algorithm": "arc",
    "enhanced-mode": "fake-ip",
    "fake-ip-range": "198.18.0.1/16",
    "fake-ip-filter": [
      "+.lan",
      "+.local",
      "+.msftconnecttest.com",
      "+.msftncsi.com",
      "localhost.ptlogin2.qq.com",
      "localhost.sec.qq.com",
      "localhost.work.weixin.qq.com",
    ],
    "default-nameserver": ["223.5.5.5", "1.2.4.8"],
    nameserver: [
      "https://cloudflare-dns.com/dns-query",
      "https://77.88.8.8/dns-query",
      "https://8.8.4.4/dns-query#ecs=1.1.1.1/24&ecs-override=true",
      "https://208.67.222.222/dns-query#ecs=1.1.1.1/24&ecs-override=true",
    ],
    "proxy-server-nameserver": [
      "https://223.5.5.5/dns-query",
      "https://doh.pub/dns-query",
    ],
    "direct-nameserver": [
      "https://223.5.5.5/dns-query",
      "https://doh.pub/dns-query",
    ],
    "direct-nameserver-follow-policy": false,
    "nameserver-policy": {
      "geosite:cn": [
        "https://223.5.5.5/dns-query",
        "https://doh.pub/dns-query",
      ],
    },
  };
}

// ==================== 规则提供者配置 ====================
function getRuleProviders() {
  const loyalsoldierBase = "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release";
  const metaCubeXBase = "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/refs/heads/meta/geo/geosite/classical";

  return {
    // Loyalsoldier 规则集
    reject: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/reject.txt`,
      path: "./ruleset/loyalsoldier/reject.yaml",
    },
    icloud: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/icloud.txt`,
      path: "./ruleset/loyalsoldier/icloud.yaml",
    },
    apple: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/apple.txt`,
      path: "./ruleset/loyalsoldier/apple.yaml",
    },
    google: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/google.txt`,
      path: "./ruleset/loyalsoldier/google.yaml",
    },
    proxy: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/proxy.txt`,
      path: "./ruleset/loyalsoldier/proxy.yaml",
    },
    direct: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/direct.txt`,
      path: "./ruleset/loyalsoldier/direct.yaml",
    },
    private: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/private.txt`,
      path: "./ruleset/loyalsoldier/private.yaml",
    },
    gfw: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/gfw.txt`,
      path: "./ruleset/loyalsoldier/gfw.yaml",
    },
    "tld-not-cn": {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "domain",
      url: `${loyalsoldierBase}/tld-not-cn.txt`,
      path: "./ruleset/loyalsoldier/tld-not-cn.yaml",
    },
    telegramcidr: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "ipcidr",
      url: `${loyalsoldierBase}/telegramcidr.txt`,
      path: "./ruleset/loyalsoldier/telegramcidr.yaml",
    },
    cncidr: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "ipcidr",
      url: `${loyalsoldierBase}/cncidr.txt`,
      path: "./ruleset/loyalsoldier/cncidr.yaml",
    },
    lancidr: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "ipcidr",
      url: `${loyalsoldierBase}/lancidr.txt`,
      path: "./ruleset/loyalsoldier/lancidr.yaml",
    },
    applications: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${loyalsoldierBase}/applications.txt`,
      path: "./ruleset/loyalsoldier/applications.yaml",
    },
    // MetaCubeX 规则集
    openai: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/openai.yaml`,
      path: "./ruleset/MetaCubeX/openai.yaml",
    },
    bybit: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/bybit.yaml`,
      path: "./ruleset/MetaCubeX/bybit.yaml",
    },
    pikpak: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/pikpak.yaml`,
      path: "./ruleset/MetaCubeX/pikpak.yaml",
    },
    anthropic: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/anthropic.yaml`,
      path: "./ruleset/MetaCubeX/anthropic.yaml",
    },
    "google-gemini": {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/google-gemini.yaml`,
      path: "./ruleset/MetaCubeX/google-gemini.yaml",
    },
    xai: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/xai.yaml`,
      path: "./ruleset/MetaCubeX/xai.yaml",
    },
    perplexity: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/perplexity.yaml`,
      path: "./ruleset/MetaCubeX/perplexity.yaml",
    },
    microsoft: {
      type: "http",
      format: "yaml",
      interval: 86400,
      behavior: "classical",
      url: `${metaCubeXBase}/microsoft.yaml`,
      path: "./ruleset/MetaCubeX/microsoft.yaml",
    },
  };
}

// ==================== 规则配置 ====================
function getRules() {
  return [
    // 额外自定义规则
    "PROCESS-NAME,steam.exe,🐬 自定义直连",
    "DOMAIN-SUFFIX,immersivetranslate.com,🐳 自定义代理",

    // 自定义规则
    "DOMAIN-SUFFIX,googleapis.cn,🔰 模式选择",
    "DOMAIN-SUFFIX,gstatic.com,🔰 模式选择",
    "DOMAIN-SUFFIX,xn--ngstr-lra8j.com,🔰 模式选择",
    "DOMAIN-SUFFIX,github.io,🔰 模式选择",
    "DOMAIN,v2rayse.com,🔰 模式选择",

    // MetaCubeX 规则集
    "RULE-SET,openai,💸 ChatGPT-Gemini-XAI-Perplexity",
    "RULE-SET,pikpak,🅿️ PikPak",
    "RULE-SET,bybit,🪙 Bybit",
    "RULE-SET,anthropic,💵 Claude",
    "RULE-SET,google-gemini,💸 ChatGPT-Gemini-XAI-Perplexity",
    "RULE-SET,xai,💸 ChatGPT-Gemini-XAI-Perplexity",
    "RULE-SET,perplexity,💸 ChatGPT-Gemini-XAI-Perplexity",

    // Loyalsoldier 规则集
    "RULE-SET,applications,🔗 全局直连",
    "RULE-SET,private,🔗 全局直连",
    "RULE-SET,reject,🥰 广告过滤",
    "RULE-SET,microsoft,Ⓜ️ 微软服务",
    "RULE-SET,icloud,🍎 苹果服务",
    "RULE-SET,apple,🍎 苹果服务",
    "RULE-SET,google,📢 谷歌服务",
    "RULE-SET,proxy,🔰 模式选择",
    "RULE-SET,gfw,🔰 模式选择",
    "RULE-SET,tld-not-cn,🔰 模式选择",
    "RULE-SET,direct,🔗 全局直连",
    "RULE-SET,lancidr,🔗 全局直连,no-resolve",
    "RULE-SET,cncidr,🔗 全局直连,no-resolve",
    "RULE-SET,telegramcidr,📲 电报消息,no-resolve",

    // 其他规则
    "GEOIP,LAN,🔗 全局直连,no-resolve",
    "GEOIP,CN,🔗 全局直连,no-resolve",
    "MATCH,🐟 漏网之鱼",
  ];
}

// ==================== 代理组配置 ====================
function getProxyGroups() {
  // 代理提供者列表
  const providersList = ["p1"]; // 如果有 p2,添加到这里: ["p1", "p2"]

  // 落地节点列表
  const landingNodes = [""];  // 替换你的第2个节点 

  // 基础代理组选项
  const baseProxies = [
    "🔰 模式选择",
    "⚙️ 节点选择",
    "🕊️ 落地节点",
    "♻️ 延迟选优",
    "🚑 故障转移",
    "⚖️ 负载均衡(散列)",
    "☁️ 负载均衡(轮询)",
    "🔗 全局直连",
  ];

  return [
    // 模式选择
    {
      ...groupBaseOption,
      name: "🔰 模式选择",
      type: "select",
      proxies: ["⚙️ 节点选择", "🕊️ 落地节点", "🔗 全局直连"],
      icon: `${iconBaseUrl}/adjust.svg`,
    },

    // 节点选择
    {
      ...groupBaseOption,
      name: "⚙️ 节点选择",
      type: "select",
      proxies: [
        "♻️ 延迟选优",
        "🚑 故障转移",
        "⚖️ 负载均衡(散列)",
        "☁️ 负载均衡(轮询)",
        "",  // 替换你的第1个节点
      ],
      "exclude-filter": landingNodeExcludeFilter,
      icon: `${iconBaseUrl}/adjust.svg`,
    },

    // 落地节点
    {
      ...groupBaseOption,
      name: "🕊️ 落地节点",
      type: "select",
      proxies: landingNodes,
      icon: `${iconBaseUrl}/openwrt.svg`,
    },

    // 延迟选优
    {
      ...groupBaseOption,
      name: "♻️ 延迟选优",
      type: "url-test",
      tolerance: 50,
      use: providersList,
      "exclude-filter": landingNodeExcludeFilter,
      icon: `${iconBaseUrl}/speed.svg`,
    },

    // 故障转移
    {
      ...groupBaseOption,
      name: "🚑 故障转移",
      type: "fallback",
      use: providersList,
      icon: `${iconBaseUrl}/ambulance.svg`,
    },

    // 负载均衡(散列)
    {
      ...groupBaseOption,
      name: "⚖️ 负载均衡(散列)",
      type: "load-balance",
      strategy: "consistent-hashing",
      use: providersList,
      "exclude-filter": landingNodeExcludeFilter,
      icon: `${iconBaseUrl}/merry_go.svg`,
    },

    // 负载均衡(轮询)
    {
      ...groupBaseOption,
      name: "☁️ 负载均衡(轮询)",
      type: "load-balance",
      strategy: "round-robin",
      use: providersList,
      "exclude-filter": landingNodeExcludeFilter,
      icon: `${iconBaseUrl}/balance.svg`,
    },

    // 国外媒体
    {
      ...groupBaseOption,
      name: "🌍 国外媒体",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/youtube.svg`,
    },

    // ChatGPT-Gemini-XAI-Perplexity
    {
      ...groupBaseOption,
      name: "💸 ChatGPT-Gemini-XAI-Perplexity",
      type: "select",
      proxies: [
        "🔰 模式选择",
        "⚙️ 节点选择",
        "🕊️ 落地节点",
        "🔗 全局直连",
        "♻️ 延迟选优",
        "🚑 故障转移",
        "⚖️ 负载均衡(散列)",
        "☁️ 负载均衡(轮询)",
      ],
      use: providersList,
      "exclude-filter": "(?i)港|hk|hongkong|hong kong|俄|ru|russia|澳|macao",
      icon: `${iconBaseUrl}/chatgpt.svg`,
    },

    // Claude
    {
      ...groupBaseOption,
      name: "💵 Claude",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/claude.svg`,
    },

    // Bybit
    {
      ...groupBaseOption,
      name: "🪙 Bybit",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/link.svg`,
    },

    // PikPak
    {
      ...groupBaseOption,
      name: "🅿️ PikPak",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/link.svg`,
    },

    // 电报消息
    {
      ...groupBaseOption,
      name: "📲 电报消息",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/telegram.svg`,
    },

    // 谷歌服务
    {
      ...groupBaseOption,
      name: "📢 谷歌服务",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/google.svg`,
    },

    // 苹果服务
    {
      ...groupBaseOption,
      name: "🍎 苹果服务",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/apple.svg`,
    },

    // 微软服务
    {
      ...groupBaseOption,
      name: "Ⓜ️ 微软服务",
      type: "select",
      proxies: [
        "🔰 模式选择",
        "⚙️ 节点选择",
        "🕊️ 落地节点",
        "🔗 全局直连",
        "♻️ 延迟选优",
        "🚑 故障转移",
        "⚖️ 负载均衡(散列)",
        "☁️ 负载均衡(轮询)",
      ],
      use: providersList,
      icon: `${iconBaseUrl}/microsoft.svg`,
    },

    // 广告过滤
    {
      ...groupBaseOption,
      name: "🥰 广告过滤",
      type: "select",
      proxies: ["REJECT", "DIRECT"],
      icon: `${iconBaseUrl}/bug.svg`,
    },

    // 全局直连
    {
      ...groupBaseOption,
      name: "🔗 全局直连",
      type: "select",
      proxies: [
        "DIRECT",
        "⚙️ 节点选择",
        "♻️ 延迟选优",
        "🚑 故障转移",
        "⚖️ 负载均衡(散列)",
        "☁️ 负载均衡(轮询)",
      ],
      icon: `${iconBaseUrl}/link.svg`,
    },

    // 全局拦截
    {
      ...groupBaseOption,
      name: "❌ 全局拦截",
      type: "select",
      proxies: ["REJECT", "DIRECT"],
      icon: `${iconBaseUrl}/block.svg`,
    },

    // 自定义直连
    {
      ...groupBaseOption,
      name: "🐬 自定义直连",
      type: "select",
      proxies: [
        "🔗 全局直连",
        "🔰 模式选择",
        "⚙️ 节点选择",
        "♻️ 延迟选优",
        "🚑 故障转移",
        "⚖️ 负载均衡(散列)",
        "☁️ 负载均衡(轮询)",
      ],
      icon: `${iconBaseUrl}/unknown.svg`,
    },

    // 自定义代理
    {
      ...groupBaseOption,
      name: "🐳 自定义代理",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/openwrt.svg`,
    },

    // 漏网之鱼
    {
      ...groupBaseOption,
      name: "🐟 漏网之鱼",
      type: "select",
      proxies: baseProxies,
      use: providersList,
      icon: `${iconBaseUrl}/fish.svg`,
    },
  ];
}

📌 转载信息
原作者:
fyhyxp4
转载时间:
2026/1/15 10:18:13

问题原因:
前不久由于 clash verge 开启 tun 后无法上网,为了使用 Antigravity 配置了 proxifier 从而连接上了。但是采取同样方案最近想使用 Antigravity 时发现要么卡在登录回弹。要么卡在模型选择 [one moment the agent is currently loading]。尝试各种方法无果后还是想用 tun 模式。
在这个贴子中的所有方法我都尝试过了解决 Clash verge 开启 Tun 模式无法上网 ,但是全都对我不起作用,走投无路之时尝试了最后一条评论的方法解决 Clash verge 开启 Tun 模式无法上网 - #62,来自 linjianyan ,发现成功了,考虑到这个 tun 无法上网的问题折腾了我两个晚上,全网所有方法几乎都试过了,给想用 Antigravity 的人强调一下这个隐藏在评论中的方法并给出图文吧。
解决方法:

勾选【允许其他网络用户通过此计算机… 来连接】,确认后回到这个页面,再取消勾选。然后这个问题就神奇的解决了… 原理未知,但是我现在可以快乐的用 tun 了。
坏消息是两天后不知道是不是和这个有关系,我的校园网账号异常了,查看校园网文档,发现里面也有涉及这个选项,计划择日和管理员联系。


📌 转载信息
原作者:
ghwghwghw
转载时间:
2026/1/15 10:08:41

基于 V2rayN Steam 下载直连 规则备份
然后看了一下 Steam 商店请求的各种资源域名 做了补充修改
我试了好多次 加载 steam 商店的图片啥的都挺快的 当然还是没有全局快

复制粘贴下面脚本

function main(config, profileName) {
  if (!config || !config.rules) return config;

  let targetProxyName = 'Proxies'; 
  if (config['proxy-groups'] && config['proxy-groups'].length > 0) {
    const firstGroup = config['proxy-groups'].find(g => g.name !== 'DIRECT' && g.name !== 'REJECT');
    if (firstGroup) targetProxyName = firstGroup.name;
  }

  const forceProxyRules = [
    'DOMAIN-SUFFIX,steamstatic.com',
    'DOMAIN-SUFFIX,steamcommunity.com',
    'DOMAIN-SUFFIX,steampowered.com',
    'DOMAIN-SUFFIX,steamserver.net',
    'DOMAIN-SUFFIX,steam-chat.com',
    'DOMAIN-SUFFIX,queniuqe.com',
    'DOMAIN-SUFFIX,s.team',
    'DOMAIN-SUFFIX,steamgames.com',
    'DOMAIN-SUFFIX,steam-api.com',
    'DOMAIN-SUFFIX,linux.do',
    'DOMAIN-SUFFIX,gvt2.com',
    'DOMAIN-SUFFIX,google.com',
    'DOMAIN,challenges.cloudflare.com',
    'DOMAIN,activity.windows.com'
  ].map(rule => `${rule},${targetProxyName}`);

  const forceDirectRules = [
    'DOMAIN,store.ak.valvesoftware.com,DIRECT',
    'DOMAIN-SUFFIX,steamcontent.com,DIRECT',
    'IP-CIDR,45.121.184.0/24,DIRECT,no-resolve',
    'IP-CIDR,103.10.124.0/23,DIRECT,no-resolve',
    'IP-CIDR,103.28.54.0/24,DIRECT,no-resolve',
    'IP-CIDR,146.66.152.0/23,DIRECT,no-resolve',
    'IP-CIDR,153.254.86.0/24,DIRECT,no-resolve',
    'IP-CIDR,155.133.224.0/20,DIRECT,no-resolve',
    'IP-CIDR,162.254.192.0/21,DIRECT,no-resolve',
    'IP-CIDR,185.25.182.0/23,DIRECT,no-resolve',
    'IP-CIDR,190.217.32.0/22,DIRECT,no-resolve',
    'IP-CIDR,192.69.96.0/22,DIRECT,no-resolve',
    'IP-CIDR,208.64.200.0/20,DIRECT,no-resolve'
  ];

  config.rules.unshift(...forceProxyRules, ...forceDirectRules);
  return config;
}


📌 转载信息
原作者:
Coee
转载时间:
2026/1/9 17:36:25

起初是不想用 TUN 模式的,怕代理了下载流量和游戏流量。
为了认证咕噜咕噜学生会员和反重力,就开始折腾一下(结果因为以前用 Adsense 加了国内地址导致学生会员没资格,然后反重力也改成周刷新额度了,555)
本脚本解决了以下问题:

  • 锁定谷歌的地区为新加坡(你也可以自己改地区,或者加规则实现其他网站固定地区)
  • 把到期时间、剩余流量等没意义的节点单独丢一个分组,不参与自动选择
  • TUN 模式下,非必要代理的流量尽可能走直连(测试了游戏没问题)
    • 原理是解析 IP 如果是国内就走直连,但是不知道如果分发 CND 是亚洲 IP 能不能命中该规则
    • 有没有佬帮测一下 steam 下载这类流量比较大且使用场景比较多的情况
  • TUN 模式下反重力正常工作


然后我想再问个问题:
开了 TUN 之后,有些支持配置代理的软件,还需要再选择系统代理吗,或者是直接不开代理也行?因为我看 TUN 模式需要关闭系统代理,然后软件不配置代理的话好像也能走代理


脚本:

// 自定义域名配置
const forceProxyDomains = [
    "DOMAIN-SUFFIX,linux.do,常规节点组",
    "DOMAIN-SUFFIX,genspark.ai,常规节点组"
]

// 自定义规则集配置
// 规则集仓库 https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/README.md
const ruleConfig = [
    {
        name: "谷歌规则集",
        group: "地区节点组",
        url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Google/Google.yaml"
    },
    {
        name: "油管规则集",
        group: "地区节点组",
        url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/YouTube/YouTube.yaml"
    }
]

function main(config) {
    const newConfig = JSON.parse(JSON.stringify(config));

    // 特殊节点组:无用的节点(官网地址、到期时间等)
    const premiumKeywords = /(免费|2026|官网|剩余|到期|Traffic)/i;
    let specialProxies = newConfig.proxies.filter(p => premiumKeywords.test(p.name));
    let normalProxies = newConfig.proxies.filter(p => !premiumKeywords.test(p.name));
    
    // 地区节点组:固定新加坡,没有则降级到常规节点组
    const areaKeywords = /(singapore|新加坡)/i;
    let areaProxies = newConfig.proxies.filter(p => areaKeywords.test(p.name));
    if(areaProxies.length <= 0) {
        areaProxies = normalProxies;
    }

   // 构建代理组
    const proxyGroups = [
        {
            "name": "代理分流组",
            "type": "select",
            "proxies": specialProxies.length > 0 ? ["常规节点组", "特殊节点组", "DIRECT"] : ["常规节点组", "DIRECT"]
        },
        {
            "name": "常规节点组",
            "type": "url-test",
            "url": "http://www.google.com/generate_204",
            "interval": 1800,
            "tolerance": 30,
            "proxies": normalProxies.map(p => p.name)
        },
        ...(specialProxies.length > 0 ? [
            {
                "name": "特殊节点组",
                "type": "select",
                "proxies": specialProxies.map(p => p.name)
            }] : []
        ),
        {
                "name": "地区节点组",
                "type": "select",
                "proxies": areaProxies.map(p => p.name)
        },
        {
            "name": "国内直连组",
            "type": "select",
            "proxies": ["DIRECT"]
        }
    ];

    // 规则配置
    const rules = [];

    // 添加自定义域名
    forceProxyDomains.forEach(domain => {
        rules.push(domain);
    });

    // 添加自定义规则集
    const ruleProviders = {};
    ruleConfig.forEach(({ name, url, group }) => {
        const providerKey = `${name.toLowerCase()}_rules`;
        ruleProviders[providerKey] = {
            "type": "http",
            "behavior": "classical",
            "url": url,
            "interval": 86400,
            "path": `./rule-providers/${providerKey}.yaml`
        };
        rules.push(`RULE-SET,${providerKey},${group}`);
    });

    // 全局配置
    const globalConfig = {
        "global-client-fingerprint": "chrome",
        "tcp-concurrent": true,
        "geox-url": {
            "geoip": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat",
            "geosite": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat",
            "mmdb": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb"
        }
    };

    // GEO规则
    rules.push(
        // 确定被墙 → 代理
        "GEOSITE,gfw,代理分流组",
        // 中国相关 → 直连
        "GEOSITE,cn,国内直连组",
        "GEOSITE,private,国内直连组",
        "GEOIP,private,国内直连组,no-resolve",
        "GEOIP,cn,国内直连组",
        // 兜底 → 代理
        "MATCH,代理分流组"
    );


    return {
        ...newConfig,
        ...globalConfig,
        "proxy-groups": proxyGroups,
        "rules": rules,
        "rule-providers": ruleProviders
    };
}

没写 DNS 的规则,有需要可以参考之前的帖子傻瓜式 clash verge 全局脚本,实现 DNS 国内外分流,粘贴即用


📌 转载信息
原作者:
mos6
转载时间:
2025/12/28 19:50:40

起初是不想用 TUN 模式的,怕代理了下载流量和游戏流量。
为了认证咕噜咕噜学生会员和反重力,就开始折腾一下(结果因为以前用 Adsense 加了国内地址导致学生会员没资格,然后反重力也改成周刷新额度了,555)
本脚本解决了以下问题:

  • 锁定谷歌的地区为新加坡(你也可以自己改地区,或者加规则实现其他网站固定地区)
  • 把到期时间、剩余流量等没意义的节点单独丢一个分组,不参与自动选择
  • TUN 模式下,非必要代理的流量尽可能走直连(测试了游戏没问题)
    • 原理是解析 IP 如果是国内就走直连,但是不知道如果分发 CND 是亚洲 IP 能不能命中该规则
    • 有没有佬帮测一下 steam 下载这类流量比较大且使用场景比较多的情况
  • TUN 模式下反重力正常工作


然后我想再问个问题:
开了 TUN 之后,有些支持配置代理的软件,还需要再选择系统代理吗,或者是直接不开代理也行?因为我看 TUN 模式需要关闭系统代理,然后软件不配置代理的话好像也能走代理


脚本:

// 自定义域名配置
const forceProxyDomains = [
    "DOMAIN-SUFFIX,linux.do,常规节点组",
    "DOMAIN-SUFFIX,genspark.ai,常规节点组"
]

// 自定义规则集配置
// 规则集仓库 https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/README.md
const ruleConfig = [
    {
        name: "谷歌规则集",
        group: "地区节点组",
        url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Google/Google.yaml"
    },
    {
        name: "油管规则集",
        group: "地区节点组",
        url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/YouTube/YouTube.yaml"
    }
]

function main(config) {
    const newConfig = JSON.parse(JSON.stringify(config));

    // 特殊节点组:无用的节点(官网地址、到期时间等)
    const premiumKeywords = /(免费|2026|官网|剩余|到期|Traffic)/i;
    let specialProxies = newConfig.proxies.filter(p => premiumKeywords.test(p.name));
    let normalProxies = newConfig.proxies.filter(p => !premiumKeywords.test(p.name));
    
    // 地区节点组:固定新加坡,没有则降级到常规节点组
    const areaKeywords = /(singapore|新加坡)/i;
    let areaProxies = newConfig.proxies.filter(p => areaKeywords.test(p.name));
    if(areaProxies.length <= 0) {
        areaProxies = normalProxies;
    }

   // 构建代理组
    const proxyGroups = [
        {
            "name": "代理分流组",
            "type": "select",
            "proxies": specialProxies.length > 0 ? ["常规节点组", "特殊节点组", "DIRECT"] : ["常规节点组", "DIRECT"]
        },
        {
            "name": "常规节点组",
            "type": "url-test",
            "url": "http://www.google.com/generate_204",
            "interval": 1800,
            "tolerance": 30,
            "proxies": normalProxies.map(p => p.name)
        },
        ...(specialProxies.length > 0 ? [
            {
                "name": "特殊节点组",
                "type": "select",
                "proxies": specialProxies.map(p => p.name)
            }] : []
        ),
        {
                "name": "地区节点组",
                "type": "select",
                "proxies": areaProxies.map(p => p.name)
        },
        {
            "name": "国内直连组",
            "type": "select",
            "proxies": ["DIRECT"]
        }
    ];

    // 规则配置
    const rules = [];

    // 添加自定义域名
    forceProxyDomains.forEach(domain => {
        rules.push(domain);
    });

    // 添加自定义规则集
    const ruleProviders = {};
    ruleConfig.forEach(({ name, url, group }) => {
        const providerKey = `${name.toLowerCase()}_rules`;
        ruleProviders[providerKey] = {
            "type": "http",
            "behavior": "classical",
            "url": url,
            "interval": 86400,
            "path": `./rule-providers/${providerKey}.yaml`
        };
        rules.push(`RULE-SET,${providerKey},${group}`);
    });

    // 全局配置
    const globalConfig = {
        "global-client-fingerprint": "chrome",
        "tcp-concurrent": true,
        "geox-url": {
            "geoip": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat",
            "geosite": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat",
            "mmdb": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb"
        }
    };

    // GEO规则
    rules.push(
        // 确定被墙 → 代理
        "GEOSITE,gfw,代理分流组",
        // 中国相关 → 直连
        "GEOSITE,cn,国内直连组",
        "GEOSITE,private,国内直连组",
        "GEOIP,private,国内直连组,no-resolve",
        "GEOIP,cn,国内直连组",
        // 兜底 → 代理
        "MATCH,代理分流组"
    );


    return {
        ...newConfig,
        ...globalConfig,
        "proxy-groups": proxyGroups,
        "rules": rules,
        "rule-providers": ruleProviders
    };
}

没写 DNS 的规则,有需要可以参考之前的帖子傻瓜式 clash verge 全局脚本,实现 DNS 国内外分流,粘贴即用


📌 转载信息
原作者:
mos6
转载时间:
2025/12/28 18:29:55