clash TUN模式


clash TUN模式

簡介

Tun 模式可以通過新建一個 Tun 虛擬網卡接受操作系統的三層流量,從而拓展 Clash 入口(inbound) 轉發能力。Tun 模式有以下潛在的優點:

  • 提升 Clash 處理 UDP 的能力
  • 從Inbound發回三層流量時,IP 源地址可由 Clash 控制,因此在使用 socks5或shadowsoks協議時,可以表達 socks5/ss 協議發回的 UDP 流量中不同的源IP地址。因此,有可能通過 OutBound 代理實現 STUN因此,對在代理條件下很多游戲的體驗會有提升。
  • 可以劫持任何三層流量,Clash 可以在任何IP地址和任何端口提供某些服務,非常靈活因而可以實現 DNS 劫持
  • 可以與操作系統的網絡棧結合,利用 iptables 等組件的能力

實現

Tun 模式的核心問題有兩個:

  1. 使用操作系統的 API 建立 Tun NIC(Network Interface Card),得到 IP Packet
  2. 由三層IP Packet 重組傳輸層 TCP stream / UDP Packet,交由 Clash 進行轉發

其中,創建 NIC 並得到三層網絡包可以由一系列系統調用實現。而由三層流量重組四層流量需要用戶態網絡棧。因為 Clash 使用 Go 語言,PR393 使用了 gvisor 的網絡棧。gvisor 的網絡棧前身是 netstack 。

配置

首先在setting中配置相關的策略

image-20211105140831678

然后編寫相關的策略,下圖是我寫的內容

image-20211105140934829

當然,也可以選擇JavaScript作為自己的腳本語言。

參考樣例:

module.exports.parse = async (
  { content, name, url },
  { axios, yaml, notify }
) => {
  const extra = {
    dns: {
      enable: true,
      listen: ":53",
      nameserver: ["8.8.8.8"],
    },
  };
  return { ...content, ...extra };
};

CFW 調用用戶定義的parse方法時,會傳入 2 個參數,分別是配置文件元數據以及工具類對象/方法

配置文件元數據

包括:

  1. content:yaml 格式化后的 JavaScript 對象
  2. name:配置文件文件名
  3. url:配置文件下載地址

最后,在首頁打開services Mode模式,即可

image-20211105141346462

當出現綠色的小地球就代表了成功,成功之后即可做一個底層的代理,可以ping通google哦。

image-20211105141507677


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM