Clash出入站知识

Clash知识

系统代理 / Tun 模式

入站

入站流量指的是从本地网络请求向本地代理程序发送的流量。简单来说,就是本地应用程序发出的网络请求如何被代理程序捕获和处理。

代理模式

代理模式决定了本地网络请求如何抵达监听在本地的代理程序。常见的代理模式包括系统代理和 TUN 模式

系统代理

系统代理模式是依赖操作系统的“约定”,也就是说:

  • 约定俗成的位置:系统代理程序会在操作系统的特定位置(如注册表、系统变量等)设置代理信息。这些位置是约定俗成的,各个应用程序可以读取这些位置来获取代理设置。
  • 应用程序遵守约定:如果应用程序遵守这种“约定”,它会自动读取这些代理设置,并将其网络请求通过代理程序发送出去。
  • 应用程序不遵守约定:如果应用程序不遵守这种“约定”,或者其设计者选择不使用系统代理,那么这些网络请求就不会通过代理程序,而是直接连接到目标服务器。这意味着代理程序无法处理这些请求。

系统代理模式的局限性在于,它依赖于应用程序本身是否愿意遵守系统的代理设置。如果应用程序不遵守,系统代理就无法捕获和代理这些请求。

举例说明

  • 浏览器:大多数现代浏览器(如Chrome、Firefox)都支持系统代理设置。当系统代理设置好后,这些浏览器会自动读取并使用代理进行网络请求。(所以说浏览器可以代理在上面的各种网络请求)
  • 特定应用:一些应用程序,尤其是一些游戏或定制的网络工具,可能不会使用系统代理设置。它们可能有自己内置的网络配置或不使用代理功能。在这种情况下,系统代理就无法捕获这些应用程序的流量。通常不能代理UDP流量(如游戏数据包)。
  • 这正是为什么有些应用程序可以使用代理,而有些则不能使用代理的原因。

Tun 模式

为了确保所有应用程序的流量都能被代理,可以使用以下方法:

TUN 模式

  • 创建一个虚拟网卡,将所有网络请求重定向到代理程序。
  • 这种方法不依赖于应用程序是否遵守系统代理设置,能够捕获所有的网络流量,包括TCP和UDP流量

TUN 模式代理通过创建虚拟网卡,并通过配置操作系统的路由将网络请求重定向到这张虚拟网卡。代理程序从虚拟网卡中读取并处理这些网络请求。

  1. 流量拦截:能够拦截和处理所有流量,包括TCP和UDP。
  2. 无需额外配置:网络请求程序无需额外配置,所有流量都会被重定向到本地代理程序。
  3. 不依赖开发人员:该步骤发生在网络请求程序发出请求之后,因此不依赖开发人员的意愿。

使用 TUN 模式的场景

  • 在线游戏:许多在线游戏使用UDP协议来传输数据包,而系统代理通常只能处理TCP流量。TUN 模式能够代理包括UDP在内的所有流量,因此特别适合在线游戏。
  • 不支持系统代理的应用:一些应用程序不支持系统代理或没有配置选项,TUN 模式可以确保这些应用程序的流量也能通过代理服务器。

规则/ 全局 / 直连模式

路由模式决定了本地代理程序如何处理和转发捕获到的网络请求**(针对的是本地被捕获的要出去的网络请求)**,即决定了“出站”流量的处理方式。

这涉及到如何将代理程序捕获到的流量发送到目标服务器。常见的出站模式包括规则模式、全局模式和直连模式

规则模式

功能:根据配置文件中的规则集进行条件匹配,决定流量是通过哪个代理节点(这个在程序提供的规则集中已经有了,包含了中国大部分不需要代理以及需要特殊节点代理的配置,订阅链接自带的规则(OpenAI,telegram),其他需要代理的请求使用用户手动选择的代理节点)或直接从本地网络出去。

细节

  • 用户可以在配置文件中定义多种规则,例如根据域名、IP地址、端口等进行匹配。
  • 每个匹配规则可以指定一个特定的代理节点或者直接连接(直连)。

应用场景:适用于需要灵活管理流量的情况。例如,可以设置某些特定的网站或应用流量通过代理,而其他流量直连。(流量不够用的情况下,国内走直连,国外走代理,但是配置太麻烦,现在好像有自动识别哪一些需要代理,哪一些不需要代理。

全局模式

功能:所有流量均通过**手工选定的代理节点(已经设置了:在代理程序中设置使用哪一个地区的节点做代理)**或本地网络出去。

细节

  • 用户手动选择一个代理节点,所有流量都会通过这个节点转发。
  • 无需复杂的规则匹配,适用于需要简单统一的代理设置。

应用场景:适用于需要全面代理所有流量的情况,例如访问受限地区的网络资源或需要统一加密所有通信的场景。(还是自动识别比较好,本来很快非得绕一圈得不偿失。但是开启全局代理一定是要访问受限地区的网络资源)。

直连模式(相当于关掉代理了)

功能:所有流量均直接从本地网络出去,不经过任何代理节点。

细节

  • 适用于访问本地网络资源或不需要代理的服务。
  • 提高连接速度,减少延迟,因为流量不需要经过代理服务器。

应用场景适用于无需代理服务的情况,例如局域网内的设备通信或访问可信的本地服务。

服务模式详解(安装更保险一点)

目的

  • 服务模式允许用户在非管理员身份下启动 TUN 模式,这是通过让服务进程继承管理员权限来实现的。

工作原理

  • 以管理员身份安装并启动服务模式。
  • 服务模式启动后,由具有管理员权限的服务进程来“拉起”代理内核程序。
  • 代理内核程序作为服务进程的子进程,继承了管理员权限,从而能够执行需要管理员权限的操作,如创建虚拟网卡。

使用场景

  • 当用户没有管理员权限但需要启动 TUN 模式时,使用服务模式是必需的。
  • 当用户有管理员权限或处于管理员分组下,可以直接启动 TUN 模式,无需使用服务模式。

UN 模式堆栈

  • 默认堆栈是 Gvisor。
  • 如果需要切换到 System 或 Mixed 堆栈,则需要安装服务模式。

简单总结

  • 非管理员用户:需要安装并使用服务模式来启动 TUN 模式。
  • 管理员用户:可以直接启动 TUN 模式,无需使用服务模式。
  • 不同的 TUN 模式堆栈:切换到 System 或 Mixed 堆栈需要服务模式,即使是管理员用户。
  • 通过应用程序的网络请求代理效果来看是否代理成功,一般来讲是可以代理的,开启TUN模式加全局模式。如果没有代理成功,说明TUN模式没有成功开启(还是安装服务模式保险一点)

终端请求进行代理

Windows CMD(命令提示符)的网络请求没有被 TUN 模式和全局模式捕获并代理,但通过手动设置 HTTP 和 HTTPS 代理环境变量,并使用规则模式和系统代理,可以成功访问 Telegram 官网(从cmd中启动一个程序我觉得还是要用tun模式加全局模式。因为应用程序并不是在cmd中发出请求的,所以没法代理)。这说明对于终端(命令提示符)需要单独进行代理设置

原因分析

  1. TUN 模式:虽然 TUN 模式可以捕获大部分网络流量,但在某些情况下,特定应用(如命令提示符)的流量可能不会被正确捕获和代理。
  2. 系统代理:系统代理设置通过环境变量(如 http_proxyhttps_proxy)强制应用程序使用指定的代理服务器,这对于命令提示符和其他命令行工具非常有效。

解决方案

为了确保命令提示符中的网络请求能够通过代理,你可以继续使用系统代理和规则模式,并手动设置 HTTP 和 HTTPS 代理环境变量。

设置永久的环境变量

set命令只能对单个窗口生效,是临时环境变量。使用setx就能写入系统变量中,永久生效。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉夜十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值