clash
本站声明
本文仅作为知识记录分享,请勿违反法律法规,造成的一切后果由个人承担。
什么是 clash
clash 是一个客户端网络代理工具,它可以通过特殊的协议与代理服务器建立连接,然后可以将访问的流量通过代理服务器代理,再返回到客户端,从而实现绕过防火墙访问特定资源。
原理
网络代理,本质上是当客户端通过网络请求访问资源时,将请求转让给代理服务器由代理服务器去请求,并将请求的结果转发给客户端。
当网络请求访问的资源被防火墙阻止时(通常是黑名单,即指定域名或 ip 不可访问),此时通过另外一台在防火墙外的服务器(代理服务器)去请求这个资源。由于这个服务器不在防火墙黑名单中,客户端可以访问到这个服务器,即可获取到服务器请求的资源。
搭建Trojan节点代理服务器
Trojan是一种代理协议,设计的目标是为了提供一种更加隐蔽的翻墙方式,其主要原理是模拟HTTPS协议,使得墙不能通过简单的数据包分析来确定是否为代理流量。在Trojan的设计中,代理服务器会模仿一个正常的web服务器,所有的代理流量都会伪装成正常的HTTPS流量。
前置条件
- 一台可连接外网的远程服务器
- 一个可访问的域名
怎么判断服务器能不能连接外面?
可以用服务器去连接一个外网的域名或 ip ,例如使用 ping 命令
ping 1.1.1.1 # ping google.com
返回结果如下:
正在 Ping 1.1.1.1 具有 32 字节的数据:
来自 1.1.1.1 的回复: 字节=32 时间=634ms TTL=53
来自 1.1.1.1 的回复: 字节=32 时间=420ms TTL=53
来自 1.1.1.1 的回复: 字节=32 时间=314ms TTL=53
来自 1.1.1.1 的回复: 字节=32 时间=277ms TTL=53
1.1.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 277ms,最长 = 634ms,平均 = 411ms
此时说明服务器可以访问外网,如果丢包率为 100% 则说明不能连接外网。
获取 trojan 工具
连接到服务器的root用户 (通过服务器供应商控制台或者 ssh 连接),执行以下命令。
source <(curl -sL https://git.io/trojan-install)
安装完成后获得 trojan
命令
$ trojan
欢迎使用trojan管理程序
1.trojan管理 2.用户管理
3.安装管理 4.web管理
5.查看配置 6.生成json
请选择: 3
1.更新trojan
2.证书申请
3.安装mysql
服务端配置
安装 trojan : 按顺序执行安装管理的 1,2,3 ,(证书选择 1),证书申请时需要使用域名,域名的解析 ip 需要和服务器的公网 ip 一致。(使用 cloudflare DNS 解析时需要关闭默认的代理)
注册节点用户:注册一个用户,设置用户名,密码,端口需要使用 443 (伪装 https 流量)。
完成以上步骤后选择 5 查看配置 ,可以看到以下类似内容
1.
用户名: 🇺🇸美国
密码: zYMFWngc
上传流量: 1.90M
下载流量: 10.53M
流量限额: 无限制
到期日期: 无限制
分享链接: trojan://zYMFWngc@xxx.com:443#xxx.com%3A443
此时服务端配置完成。
客户端配置
安装 clash (此处以 windows 系统为例,clash 由多种版本支持windows,Android,iOS,macOS,Linux)
配置 yaml 文件,在如下位置进行修改,其他地方不变(注意内容需要严格缩进,不要有多余的换行和空格)
# Trojan
- name: trojan 节点用户名
type: trojan
server: 代理服务器的域名(可以使用二级域名,如 vpn.xxx.com)
port: 443
password: trojan 节点密码
udp: true
sni: 代理服务器的域名(可以使用二级域名,如 vpn.xxx.com)
alpn:
- h2
- http/1.1
在 clash 客户端界面,选择 “管理” ---> “导入” ,选择配置号的 yaml 文件,此时可以看到代理界面出现了 “节点的用户名”(显示延迟 xxx ms 表示节点连接成功,显示失败则表示连接失败或者无法访问外网)。