知识碎片集合
代理模式篇
解决节点和游戏使用、代理模式、DNS分流、UDP穿透等问题的教程。解释网络协议栈和代理行为。
Detailed Summary for 【进阶•代理模式篇】看懂就能解决99%的代理问题,详解系统代理、TUN/TAP代理、真VPN代理,clash/v2ray/singbox 虚拟网卡怎么接管系统全局流量?什么是真正的VPN?看完就知道了 by Merlin
00:04 了解家庭网络拓扑中的代理模式
- Proxy模式使用虚拟网卡接管系统全局流量
- Tun模式是目前常见家庭网络环境中使用最多的模式
02:03 一个简单的网络通信过程就是通过对数据包逐层封装和解封装完成的。
- 数据包通过操作系统的网络协议栈逐层封装。
- 发送数据的过程是封装,接收数据的过程是解封装。
03:55 使用 v2rayN 或 Clash for Windows 允许自动系统代理或系统代理配置以进行网络访问。
- v2rayN用户可以配置系统代理自动配置网络访问请求由v2ray处理。
- Clash for Windows用户可以启用系统代理,将网络访问请求交给Clash,Clash会根据分发规则判断是否使用代理,并将数据加密打包后发送给节点服务器。
05:48 代理使用的不同模式
- 系统代理模式很方便,但可能不适用于所有软件
- tun 或 tap 模式创建一个虚拟网卡来拦截所有流量
07:44 Clash 允许通过虚拟网卡进行透明代理
- 数据发送到 Clash 启用的虚拟网卡
- system proxy模式和tun模式的封装和加密过程是一样的
09:36 代理软件的 tun 模式软路由
- 常用的支持tun模式的软件有clash、sstap、netch、singbox等。
- 启用 tun 模式需要管理员权限,可以在 Github 上为 v2rayN6.0 及更高版本手动完成,或者通过以管理员权限运行 Clash for window 来完成。
11:31 Clash 的 tun 模式可实现更好的性能,但会增加数据复制
- Clash支持用户态和gvisor直接在用户空间进行数据分析
- auto-route 添加路由条目,默认启用 dns-hijack
13:26 VPN是一种用于远程联网和内网穿透的技术。
- 在网络层封装数据包是远程联网所必需的。
- VPN有很多技术可以实现,但不适合科学上网。
clash rules
代理配置部分
Clash 是一款开源的代理软件,可以实现网络代理、流量控制等功能。其配置文件采用 YAML 格式,下面是一个简单的示例:
# 定义一个名为 Proxy 的代理节点
- name: Proxy
type: http
server: proxy.example.com
port: 8080
username: user
password: pass
# 定义节点的代理规则
proxy-groups:
- name: Global
type: select
proxies:
- Proxy
- name: Direct
type: select
proxies: []
# 定义需要直连的地址列表
direct:
- '*.example.com'
- name: Proxy
type: select
proxies:
- Proxy
# 定义需要通过代理访问的地址列表
proxy:
- '*'
上述示例定义了一个名为 Proxy 的代理节点,使用 HTTP 代理方式,连接到地址为 proxy.example.com 的服务器,使用用户名 user 和密码 pass 进行认证。同时,定义了三个代理规则:Global、Direct 和 Proxy。其中,Global 规则表示全局代理,将所有流量都转发到名为 Proxy 的节点;Direct 规则表示直连规则,将 *.example.com 的地址直接连接,不通过代理;Proxy 规则表示代理规则,将除了 *.example.com 之外的所有地址都通过名为 Proxy 的节点进行代理访问。
基本规则部分
Clash是一个基于规则的代理软件,使用YAML格式的配置文件进行配置。以下是一些关于Clash配置文件的信息:
-
Clash配置文件的文件名为config.yaml。
-
Clash配置文件包含以下几个部分:Proxy、Rule、DNS、Diagnostics、Experimental、Proxy Group、Proxy Provider、Mixin、Log。
-
Proxy部分定义了代理服务器的配置,包括协议、地址、端口、用户名、密码等。
-
Rule部分定义了规则,可以根据域名、IP地址、URL等进行匹配和过滤,以实现代理的选择和过滤。
-
DNS部分定义了DNS服务器的配置。
-
Diagnostics部分定义了Clash的诊断功能及其配置。
-
Experimental部分定义了一些实验性功能及其配置。
-
Proxy Group部分定义了代理服务器组的配置,可以根据规则选择代理服务器。
-
Proxy Provider部分定义了代理服务器提供者的配置。
-
Mixin部分定义了一些混合代理的配置。
-
Log部分定义了日志的配置。
以下是一个Clash配置文件的示例:
# Clash配置文件示例
# Proxy部分
Proxy:
- name: "MyProxy"
type: ss
server: "myproxy.com"
port: 8888
cipher: "aes-256-gcm"
password: "mypassword"
# Rule部分
Rule:
- DOMAIN-SUFFIX,google.com,MyProxy
- IP-CIDR,192.168.0.0/16,DIRECT
# DNS部分
DNS:
enable: true
listen: 0.0.0.0:53
nameserver:
- "8.8.8.8"
- "8.8.4.4"
# Diagnostics部分
Diagnostics:
enable: true
listen: 0.0.0.0:9090
# Experimental部分
Experimental:
ignore-resolve-fail: true
# Proxy Group部分
Proxy Group:
- name: "MyProxyGroup"
type: select
proxies:
- "MyProxy"
url: "http://myproxygroup.com/proxies"
# Proxy Provider部分
Proxy Provider:
- name: "MyProxyProvider"
type: http
url: "http://myproxyprovider.com/proxies"
# Mixin部分
Mixin:
- name: "MyMixin"
type: ss
server: "mymixin.com"
port: 8888
cipher: "aes-256-gcm"
password: "mymixinpassword"
# Log部分
Log:
level: info
file: "clash.log"
关于Clash配置文件的更多信息,请参考以下链接:
- Clash官方文档:https://github.com/Dreamacro/clash/wiki
- Clash配置文件示例:https://github.com/Dreamacro/clash/blob/master/README.md#configyaml
- YAML格式介绍:https://yaml.org/spec/1.2/spec.html
在 Clash 中,配置文件中的节点和规则可以根据自己的需求进行定义和修改。(更多的配置选项和示例可以参考 Clash 的官方文档。)