關於一些客戶端作者停止更新#
這些客戶端停止更新了,對我們的使用是否有影響呢?想要知道這個問題的答案,首先我們先明白一個概念,Clash Verge(開源)、Clash for Windows、Clash X Pro 這一類圖形化的軟體,都是一個殼,用於對接核心的功能,停止更新的只是這個殼。
常見的核心有 Clash Premium、Clash Meta(開源)
因為 Clash Verge 和它能切換的內核 Clash Meta都是開源的,所以我們應該優先選這個搭配,下文中也會使用。
那我們還能夠繼續使用它們嗎?
當然可以,解釋如下
- 就像你在使用一個收音機 *(Clash Verge),你不會因為收音機的製造商(作者)* 倒閉了 *(停止更新)*,而立刻扔掉你的收音機
- 收音機的所有零件圖紙是公開 *(開源)* 的,你不用擔心它可能植入一些不好的後台程序
- 收音機的外殼按鈕 *(Clash Verge)* ,是讓我們更輕鬆地控制收音機裡面的主板元件 *(Clash Meta 核心)* 去執行它們的任務,只要這個外殼按鈕 *(Clash Verge)* 控制收音機主板 *(Clash Meta 核心)* 的方式沒有太大問題,那我們就可以用
- 外殼停止更新,意味著收音機外殼不會增加新的按鈕
- 核心停止更新,意味著收音機主板不會更新功能,僅此而已
- 收音機能播放聲音 *(開啟魔法),是因為你輸入了正確的 FM 頻率(訂閱鏈接)。只要電台(機場)* 還在廣播 *(服務),只要你的殼和核還在,就不影響你播放聲音(開啟魔法)*
最後,我們要明確一點,下文中涉及到隱私保護的操作並不是絕對的安全,就像是想要知道你在家裡做什麼,可以在樓下垃圾桶翻你的扔的垃圾進行推測,可以望遠鏡監視你,可以把你家天花板炸了或者用大炮強行衝進來看。網路監控也一樣,就看你在網路上的行為,值不值得人家用那些高階手段了,總不能因為挖掘機一鏟子能把防盜門破了我就不裝防盜門了。
目前可用的開源 Clash Verge 客戶端#
現在有不少基於 Clash Verge 繼續開發維護的客戶端,比較推薦 Clash Verge Rev 後面的文章中會基於這個客戶端進行演示
後面提到的配置已完成 Clash Verge Rev ≥ v1.7 的適配,並自用了相當一段時間,放心食用
為什麼是這個軟體?
多端兼容性出色 ——Clash Verge Rev 支持 Windows、macOS、Linux。如果按照下方的教程進行操作,最終將得到一個新的訂閱鏈接,而 iOS 上,可以將這個新的訂閱鏈接生成二維碼,用小火箭,點擊「+」圖標,找到底下的「掃描二維碼」,就可以導入 iOS 設備進行使用;Stash 更是直接輸入生成的鏈接就能用,而下方的最佳實踐操作,只需執行一次,就可以在眾多設備上跨端應用。
太長不看版本#
- 訂閱轉換 **(所有端必做)**
- 開 TUN 模式,關代理(可選)
- 關閉瀏覽器安全 DNS 地址,設置 DNS 地址(所有 PC 可選,如果操作了 2,則此項必做)
- 系統 DNS 設置自動(可選)
- 關閉瀏覽器 QUIC**(所有 PC 必做)**
- 設置本地中國 IP 數據庫(可選)
解決訂閱分流規則問題#
拿到了訂閱鏈接,第一步要做的應該就是訂閱轉換,將它的分流規則完善(因為給你提供訂閱的服務商,自帶的分流規則往往就幾百條,很不健全,很多人開著 Clash 但 New Bing 卻用不了就是個很好的例子)
在線訂閱轉換不僅僅是將Shadowsocks、V2ray、Trojan 訂閱鏈接轉換為 Clash 、Stash、V2ray、Quantumult X、Surge 等軟體使用的訂閱格式,它還支持非常多的進階操作,不過在本文僅以夠用為目標,而不是把這個東西玩出花來。
在線訂閱轉換網站雖然好用,但也有一定的隱私風險,需要注意,建議會技術的朋友自己搭建在線訂閱轉換平台。
訂閱轉換網站#
我搭建的訂閱轉換網站,下文將使用該網站作為示例
需要操作的步驟#
一般這樣就已經可以比較完美的使用了,並且擁有我寫的遠程配置文件中的一些額外功能
判斷是否成功套用了規則文件#
拉取訂閱後,節點中應該會出現 “🌿自動選擇”、“🇭🇰香港自動”、“🇨🇳台灣自動”、“🇸🇬獅城自動”、“🇺🇸美國自動”、“🇯🇵日本自動” 這幾個自動節點。能看到這幾個自動節點,那你就成功在自己的訂閱上套用了我的規則。
推薦在沒有特殊需求的時候選擇用這幾個自動節點,自動節點會幫你使用對應國家 / 地區節點中,延遲最低的節點。
關於遠程配置#
這個遠程配置是什麼,能賦予你的訂閱什麼功能,你可以打開「遠程配置」原文的鏈接,頂部有註釋
解決 DNS 洩露問題#
DNS 洩露指的是在使用 VPN 或其他隱私服務的情況下,用戶的真實 IP 地址通過 DNS 請求被發送到了 ISP(如聯通,移動)的 DNS 伺服器,而不是通過 VPN 設置的安全、匿名的 DNS 伺服器。如果在 DNS Leak Test 、ipleak這種網站的列表中看到了中國國旗,就要意識到可能發生了 DNS 洩露。
如果真的洩露了有什麼問題呢?我也不知道可能導致什麼,或許你可能收到下圖這樣的消息
我覺得還是儘量不要讓他們知道這件事。雖然沒有人知道具體的探測機制是什麼,但很可能是從網路層面獲取的。在一般的家庭網路拓撲中,wireshark可以看到什麼內容,運營商就能看見什麼內容,所以你使用 114.114.114.114、223.5.5.5 這樣的 DNS 解析去訪問了什麼網站是很清晰的。
這就要衍生出第一個使用技巧 ——Clash 開啟 TUN 模式,關閉系統代理去使用
與普通的系統代理模式區別在於,TUN 模式下 Clash 會創建一張虛擬網卡,從網路層面接管所有的網路流量。
普通的系統代理模式,是作為一個軟體的權限去接管別的軟體的網路,總有一些無法接管的應用,比如遊戲,比如命令行。所以我們應該開啟 TUN 模式,關閉系統代理,讓網卡做這件事,而不是讓軟體做這件事
操作一(開啟 TUN 模式)#
-
首先切換 Clash Verge 的內核,選開源的 Clash Meta 內核,然後重啟整個 Clash Verge 確保生效(Clash Verge Rev 新版本應該默認就是 Meta 了)
(Clash Meta 在後期可能在不同的客戶端名稱有所不同,如果看到內核名字是
Mihomo
也是 Meta) -
安裝服務,開啟 Tun 模式,開啟嚴格路由,按下方圖中的數字序號順序點擊
如果服務模式無法安裝
- Win 可以嘗試在系統命令行(PowerShell)中執行
sc delete clash_verge_service
來刪除之前的 Clash Verge 服務,這可能是你之前安裝過 Clash Verge,但是卸載的時候沒有寫在這服務模式,導致新的安裝不上 - Mac/Linux 請在設置的
Clash內核
點開齒輪圖標⚙️,點 " 授權” - 其他疑難雜症參考https://github.com/clash-verge-rev/clash-verge-rev/issues/125
- Win 可以嘗試在系統命令行(PowerShell)中執行
-
此時需要重啟一下 Clash 軟體,再點擊 TUN 模式旁邊的齒輪圖標⚙️,選擇 Tun 的堆疊模式為 Mixed,這也是官方推薦的選項,開啟「嚴格路由」。
-
前端開發朋友需要注意
前端開發如果開啟了嚴格路由,Vite 默認運行 npm run vite dev,啟動起來的http://localhost:5173 可能無法訪問,解決方式就是使用指定 Vite 伺服器應該監聽哪個 IP 地址。
即:以下兩種方式均可解決,二選一即可
-
在 package.json 修改(加個
--host
)"scripts": { "dev": "vite --host", }
-
或者在 vite.config.ts 修改(在 server 塊中將 host 指定為 0.0.0.0)
export default defineConfig({ server: { host: '0.0.0.0', } })
-
-
操作二(調整組策略 Mac 跳過)#
要解決這個問題也很簡單,問題出現的原因是 Windows 系統默認使用多宿主 DNS 解析,會使用所有的網卡發起請求,我們只需要在組策略(Windows 家庭版無該功能)中關閉這個功能即可(Win+R,輸入gpedit.msc
點確定)。
至此,我們解決了 Clash 在 Windows 下可能發生的 DNS 洩露問題
但並不能保證 ipleak 檢測不到。雖然我可以將 ipleak 加入規則中,但這樣做就是掩耳盜鈴。只要確保某些黑名單網站不被漏掉,不會收到上面那種短信,我認為就可以了。
操作三(使用一個穩定的 DNS)#
DNS 這部分有人會教使用運營商的 DNS,運營商的 DNS 只適合小白用戶,因為他可能連反詐,所以建議使用國內大廠的。
-
關閉瀏覽器的 QUIC,中國大陸的 isp 是限速 udp 的,所以導致 QUIC 這個優秀的協議,到了中國大陸的網路下成了個負面增益效果。
about://flags/#enable-quic
設置為Disabled
(點下方彈出的重啟瀏覽器生效) -
關閉瀏覽器中的 “安全 DNS”
-
Chrome:
chrome://settings/security
【使用安全 DNS】(新版 Chrome 中叫做【對您訪問的網站的名稱進行加密】),關閉
-
Edge:
edge://settings/privacy
找到【安全性】 -【使用安全的 DNS 指定如何查找網站的網路地址】,關閉
-
-
如果你的 Clash Verge Rev 的版本 < 1.7
- 在 Clash Verge 的【配置】中,點右上角的新建,進行如下操作
-
右鍵點擊新建的卡片,選擇編輯文件,並輸入以下內容,保存,右鍵點擊卡片啟用
function main(content) { const isObject = (value) => { return value !== null && typeof value === 'object' } const mergeConfig = (existingConfig, newConfig) => { if (!isObject(existingConfig)) { existingConfig = {} } if (!isObject(newConfig)) { return existingConfig } return { ...existingConfig, ...newConfig } } const cnDnsList = [ 'https://1.12.12.12/dns-query', 'https://223.5.5.5/dns-query', ] // 大部分的網路請求都會走這個裡面的,這裡目前是騰訊、阿里、和使用節點查詢的1.0.0.1的dns const trustDnsList = [ 'https://doh.pub/dns-query', // 騰訊 'https://dns.alidns.com/dns-query', // 阿里(這裡會觸發h3和普通的並發查詢) '180.184.1.1', // 字節-火山引擎的DNS ] const notionDns = 'tls://dns.jerryw.cn' // notion加速dns const notionUrls = [ 'http-inputs-notion.splunkcloud.com', '+.notion-static.com', '+.notion.com', '+.notion.new', '+.notion.site', '+.notion.so', ] const combinedUrls = notionUrls.join(','); const dnsOptions = { 'enable': true, 'prefer-h3': true, // 如果DNS伺服器支持DoH3會優先使用h3(本例子中只有阿里DNS支持) 'default-nameserver': cnDnsList, // 用於解析其他DNS伺服器、和節點的域名, 必須為IP, 可為加密DNS。注意這個只用來解析節點和其他的dns,其他網路請求不歸他管 'nameserver': trustDnsList, // 其他網路請求都歸他管 // 這個用於覆蓋上面的 nameserver 'nameserver-policy': { [combinedUrls]: notionDns, 'geosite:geolocation-!cn': trustDnsList, // 如果你有一些內網使用的DNS,應該定義在這裡,多個域名用英文逗號分割 // '+.公司域名.com, www.4399.com, +.baidu.com': '10.0.0.1' }, } // GitHub加速前綴 const githubPrefix = 'https://fastgh.lainbo.com/' // GEO數據GitHub資源原始下載地址 const rawGeoxURLs = { geoip: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat', geosite: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat', mmdb: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb', } // 生成帶有加速前綴的GEO數據資源對象 const accelURLs = Object.fromEntries( Object.entries(rawGeoxURLs).map(([key, githubUrl]) => [key, `${githubPrefix}${githubUrl}`]), ) const otherOptions = { 'unified-delay': true, 'tcp-concurrent': true, 'profile': { 'store-selected': true, 'store-fake-ip': true, }, 'sniffer': { enable: true, sniff: { TLS: { ports: [443, 8443], }, HTTP: { 'ports': [80, '8080-8880'], 'override-destination': true, }, }, }, 'geodata-mode': true, 'geo-auto-update': true, 'geo-update-interval': 24, 'geodata-loader': 'standard', 'geox-url': accelURLs, 'find-process-mode': 'strict', } content.dns = mergeConfig(content.dns, dnsOptions) return { ...content, ...otherOptions } }
圖片僅提供界面參考,實際內容以上方代碼塊為準
-
啟用後再次點擊按鈕,確保正確的應用了設置(這裡的任何代碼變動,都需要點擊這個按鈕手動刷新運行時的配置)
-
如果你的 Clash Verge Rev 的版本≥1.7
-
右鍵「全局擴展配置」,點擊編輯文件
-
粘貼以下代碼後,點擊「保存」
dns: prefer-h3: true default-nameserver: - 180.184.1.1 - udp://47.108.230.123:5553 - https://119.29.29.29/dns-query nameserver-policy: "http-inputs-notion.splunkcloud.com,+.notion-static.com,+.notion.com,+.notion.new,+.notion.site,+.notion.so": tls://dns.jerryw.cn geosite:geolocation-!cn: - https://doh.pub/dns-query - https://dns.alidns.com/dns-query - 180.184.1.1 nameserver: - https://doh.pub/dns-query - https://dns.alidns.com/dns-query - 180.184.1.1 unified-delay: true tcp-concurrent: true profile: store-selected: true store-fake-ip: true sniffer: enable: true sniff: HTTP: ports: - 80 - 8080-8880 override-destination: true TLS: ports: - 443 - 8443 QUIC: ports: - 443 - 8443 geodata-mode: true geo-auto-update: true geo-update-interval: 24 geodata-loader: standard geox-url: geoip: https://fastgh.lainbo.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat geosite: https://fastgh.lainbo.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat mmdb: https://fastgh.lainbo.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb
-
這段代碼的作用是
- 使用阿里和 DNSPod(騰訊的 DNS)的
DoT
來解析節點、DNS 伺服器 - 使用阿里、騰訊、火山的 DNS 伺服器解析其他網站(DNS 洩露往往是運營商洩露,大廠沒聽說過洩露)
- 使用非營利組織的 DoT 解析 Notion 網站
- tun 模式堆疊使用自適應模式
- 更換延遲計算方式,去除握手等額外延遲
- 開啟 TCP 並發的支持
- 開啟域名嗅探,準確還原域名,進行域名分流
- 設置 geodata 的下載源為國內加速下載源
有人可能這裡會說,你用了阿里騰訊這些 dns 解析網站,還是會漏呀!我想說的是,我們要解決的問題是運營商(電信、聯通、移動)外洩數據這件事,而不是不留痕跡的 DNS 查詢,如果你希望自己的 DNS 查詢行為不留痕跡,請自建 DNS
解決 GEOIP, CN 問題#
目前市面上絕大多數的代理工具都依賴於 GeoIP2 數據庫判斷地址所屬地。它們的規則結尾部分一般都會有一條類似 GEOIP, CN
,用來查詢目的 IP 地址是否屬於中國大陸,從而判斷是否直連。
這些代理工具通常使用的 GeoIP2 數據庫是來自於 MaxMind 的 GeoLite2 免費數據庫。這個數據庫目前存在一下幾個問題:
- 獲取不便:從 2019 年 12 月 30 日起,必須註冊後才能下載
- 數據量大:數據庫龐大,包含全球的 IP 地址段,約 10 MB
- 準確度低:對中國大陸的 IP 地址判定不準,如:香港阿里雲的 IP 被判定為新加坡、中國大陸等。
龐大的數據量對於大多數中國大陸的用戶來說是沒有意義的,因為只僅需要去判斷 IP 的地理位置是否屬於中國大陸境內,其他國家的 IP 一律代理 / 直連。過多的數據量會增加載入時間,降低查詢效率。
我們在之前創建的 Script 中已經包含了下載更精簡合適中國大陸的 IP 數據庫鏈接,現在只需要手動操作下載和替換即可。
- 點擊 Clash Verge Rev 的設置菜單,找到「更新 GeoData」,點擊進行更新即可
- 下載完成後右鍵托盤中的 Clash Verge 圖標,【更多】-【重啟應用】確保數據庫被正確應用
我希望 xxx.com 不要走代理,如何做?#
- 如果你的 Clash Verge Rev 的版本 < 1.7
-
點擊左側「訂閱」菜單,點擊右上角的「新建」按鈕
-
類型選擇「Merge」,名稱自己起一個,點保存
-
右鍵點擊剛才新建出來的 Merge,點擊「編輯文件」,在
prepend-rules:
後面進行添加(Clash 的策略是從上往下讀取規則,讀取到了就不再往下找,所以要使用 prepend,在前面插入規則) -
格式如下,自行靈活組合即可添加你想要的規則,寫時注意 yaml 文件的縮進
(不要照搬下面的規則,只是寫法演示,演示內容寫的策略很不合理!)
prepend-rules: # ↓表示`*.baidu.com`會走`🔗 無需代理`這個策略組,而這個策略組默認行為走直連而非走節點 - DOMAIN-SUFFIX,baidu.com,🔗 無需代理 # ↓表示`abc.baidu.com`會走`DIRECT`這個內置策略 # DIRECT同樣為直連,區別在於這條規則不受`🔗 無需代理`策略組控制 # 🔗 無需代理策略組只是名字叫“無需代理”,你可以手動調整他的策略,但DIRECT不能調 - DOMAIN,abc.baidu.com,DIRECT # ↓表示`Weiyun.exe`這個源進程名,會走`🛡️ 廣告攔截`,而這個策略組默認行為是Reject請求 - PROCESS-NAME,Weiyun.exe,🛡️ 廣告攔截 # ↓表示只要請求url中包含`aria2`這個關鍵字,就會走`REJECT`這個內置策略 # REJECT同樣為丟棄請求,區別在於這條規則不受`🛡️ 廣告攔截`策略組控制 # 不解釋了,和上面的無需代理一樣的邏輯 - DOMAIN-KEYWORD,aria2,REJECT # ↓表示所有的22端口都走`✈️ 節點選擇`這個策略組,也就是走你選擇的節點流量 - DST-PORT,22,✈️ 節點選擇 # ↓表示指定的ip段不需要代理,記得在最後加`,no-resolve` # no-resolve會告訴Clash不要去嘗試解析來匹配這條規則,只處理「直接IP訪問」的請求 - IP-CIDR,203.205.254.0/23,🔗 無需代理,no-resolve - IP-CIDR6,2a0b:b580::/48,🔗 無需代理,no-resolve
上面只寫了常用的,還有更多規則類型詳見Clash 文檔的對應章節 或 虛空終端 Docs
-
寫完之後右鍵你新建出來的 Merge,點擊「啟用」,再點擊右上角的「重新激活訂閱」按鈕來刷新配置
-
- 如果你的 Clash Verge Rev 的版本≥1.7
-
右鍵「全局擴展腳本」,點擊「編輯文件」
-
格式如下,自行靈活組合即可添加你想要的規則,組合方式和上面版本 < 1.7 是一樣的,可以參照,只是格式需要寫 JavaScript 代碼,需要添加更多規則,請自行擴充代碼中的
prependRules
function main(content) { const prependRules = [ 'IP-ASN,132203,🔗 無需代理,no-resolve', 'DOMAIN-SUFFIX,baidu.com,🔗 無需代理', // 表示`*.baidu.com`會走`🔗 無需代理`這個策略組,而這個策略組默認行為走直連而非走節點 'PROCESS-NAME,Weiyun.exe,🛡️ 廣告攔截', // 表示`Weiyun.exe`這個源進程名,會走`🛡️ 廣告攔截`,而這個策略組默認行為是Reject請求 'DST-PORT,22,✈️ 節點選擇', // 表示所有的22端口都走`✈️ 節點選擇`這個策略組,也就是走你選擇的節點流量 ] if (content.rules?.length) { content.rules = prependRules.concat(content.rules) } return content }
-