當前位置:編程學習大全網 - 源碼下載 - Surge - 轉發,代理和規則系統

Surge - 轉發,代理和規則系統

本文整理自官方文檔: 《Surge 官方中文指引:理解 Surge 原理 - 章節 4 轉發,代理和規則系統》

本文旨在介紹清楚概念,所以只描述常用只要功能,更多細節請參考官方文檔。

被 Surge 攔截的請求在處理完畢後將被轉發。

如果 Surge 的出站模式設置為 直接連接 ,那麽該請求將被 直接發往目標服務器

如果出站模式設置為 全局代理 ,那麽將 轉發給指定的代理服務器

當出站模式設置被設置為 規則判定 時,將 根據配置的規則決定轉發策略

規則系統中有兩個基本概念: 策略 規則

1、策略:描述了 Surge 進行轉發的方式,有三種類別:

2、規則:規則由四個部分組成:類型、條件、策略和參數。當條件滿足時,該規則匹配,使用該規則指定的策略。

內置策略由 Surge 提供,不隨配置而變化:

由於操作系統對用戶空間程序(user-space program)的 socket 並沒有提供拋棄的操作,Surge 靜默拋棄的實現方式是將該 socket 閑置壹段時間後再關閉。

同時,如果發往某主機名的請求短時間內大量觸發 REJECT/REJECT-TINYGIF 策略(當前版本的閾值為 30 秒內 10 次),為了避免產生大量資源浪費,Surge 將自動升級策略為 REJECT-DROP 策略。

代理策略由用戶自己定義,每個策略描述了壹個代理服務,當使用該策略時即為通過該代理服務轉發請求。

壹個簡單的代理策略定義行如下:

其中,ProxyA 為策略名,供規則和策略組所使用。第壹個參數為代理協議類型,目前 Surge 支持的代理協議類型有:

另外還有兩個特殊類型:

第二個參數為代理服務器主機名,第三個參數為代理服務器端口號,後續為 key=value 的參數表,根據協議類型不同需要提供不同的參數。

這是壹個特別的類型,嚴格來說並不是壹個代理,用於強制使用某壹個網卡進行請求。

external 類型策略可以讓 Surge 與其他代理客戶端(如:SSR、Brook)更方便的協同工作。

該功能 目前只能通過直接編輯配置 實現,策略定義行為:

其中 args 和 addresses 參數為選填,其他必填。args 和 addresses 字段可以反復使用進行追加。

當使用到該策略時 Surge 會進行以下工作:

(1)使用 exec 和 args 參數啟動該外部程序,之後向 SOCKS5 127.0.0.1:[local-port] 轉發請求。

(2)如果外部進程被終止,當再次使用該策略時會自動進行重啟。

(3)Surge 會在啟動增強模式時自動將 addresses 參數中的地址排除在 VIF 路由表外。(請在該字段填寫使用的代理服務器 IP 地址)

(4)當由 Surge 啟動的外部進程的請求被 Surge VIF 處理時,永遠使用 DIRECT 策略。(為了應對像 obfs-local 這樣的插件請求問題,外部進程的子進程也會被同樣處理)

(5)Surge 退出時會自動關閉所有外部進程,增強模式關閉時會自動清理加入的路由表。

上述 3 和 4 的功能是有重疊的,請盡量使用 addresses 聲明使用到的地址以排除 TUN 處理,這樣可以減少系統開銷,4 的功能是壹重額外保護。

RULE-SET 規則集可以將 多個子規則 放在 壹個單獨的文件中 ,便於分享和復用。但是規則集中的規則 不可以指定策略 ,整個規則集指向壹個同壹個策略。

另外 Surge 自帶了 SYSTEM 和 LAN 兩個規則集,規則集包含的具體子規則會隨 Surge 更新而有所調整。註意 LAN 規則集會觸發 DNS 解析。

可通過 AND,OR,NOT 運算對所有規則類型進行組合使用。如

可以攔截 Chrome 發出的 UDP 數據包。

(完)

  • 上一篇:JAVA文件jad格式的怎麽轉化為jar格式
  • 下一篇:急需大型家具獨立店員工手冊及管理制度
  • copyright 2024編程學習大全網