对主流代理工具的介绍, 以及代理服务器搭建的教学.
序
科学上网其实很简单, 你无法正常访问外面的网页, 那就让一个proxy server帮你访问, 然后再把访问到的内容回传给你.
因此你仅需要:
- 代理服务器: 想办法搞到或制作proxy servers;
- 代理工具: 管理、配置你的proxy servers.
proxy-server
如果你有一个代理服务器, 可称其为节点
, 如果你有一组代理服务器, 可称其为订阅
或订阅列表
.
获取节点/订阅的方法有很多, 下面3类方法由易到难:
- ⭐直接找节点贩子或老牌飞机场购买;
- ⭐⭐从GitHub或YouTube上一些大佬的分享里免费获取;
- ⭐⭐⭐自己动手搭建, 一般前提是需拥有一台
海外VPS
.
※购买节点
节点/订阅提供商合集, 来自V2rayN项目的主页介绍.
我买过的便宜供应商:
※※免费节点项目-edgetunnel及其fork
该项目利用CloudFlare的Workers/Pages
实现白嫖的代理服务器. 评价褒贬不一, 可以作为备用机场.
来自cmliu的免费节点
( 项目主页; 视频教程 )
作者在项目中已内置了优选IP
, 我们只需要在cloud flare中部署作者的项目脚本, 把CF自动生成的域名修改为自定义域, 最后获取到订阅链接
, 即可前往代理工具使用其免费节点服务.
部署教程
我这里选用了cloudflare
的Pages
的方法来部署, 步骤见这里的1-2. 此时我的节点服务的域名是ray2ray.pages.dev
, 订阅链接是https://<hash-value>.ray2ray.pages.dev/<UUID>
.
教程进阶1-改用自定义域
该部分为可选操作, 但强烈建议. 目的是把订阅链接中自动生成的域名改为自定义域名. 流程如下:
- 获取免费域名: 进入网站→ 点击创建Zone→
Name
自定义, 作为三级域;ipv4 address
光标放进去, 网站会自动补全一个ip地址;ipv6 address
可以空着. 最后我将得到一个三级域名raymond0713.dynv6.net
. - 给域名创建一条解析记录record: 进入
Records
→Add Records
→ 选择CNAME
→Name
部分自定义一个四级域;Data
部分填写我的cloudflare pages域名ray2ray.pages.dev.
(根域名的.
不要忘了)→ 保存. 此时我得到了一个四级域名ladder.raymond0713.dynv6.net
. - 在CF的
Pages
添加自定义域: 进入相应Pages
→ 进入自定义域→ 填入你的四级域名→ 开始CNAME设置→ 直接检查DNS记录
→ 完成. 此时这个四级域名就可以访问ray2ray.pages.dev
了. - 在代理工具中使用新的订阅链接:
https://ladder.raymond0713.dynv6.net/<UUID>
教程进阶2-一些变量的修改
作者cmliu的js脚本中, 有一些变量是可以通过CF-Pages的配置环境变量
来修改的, 这样方便CF-Pages的快速部署. 下述环境变量名中, 除了UUID
都可缺省.
注: 修改过变量后要重新部署才生效.
UUID
更换UUID, 也许会对降低节点的延迟有帮助.PROXYIP
代理IP/反代IP
由于我们部署的应用程序无法访问托管在CloudFlare的CDN站点, 因此需要设置其代理节点. 该变量支持多ProxyIP, 用逗号作间隔.可用的代理IP有: 23.162.136.169
47.254.66.75
2a01:4f8:c2c:123f:64:5:ac40:6c0a # 用ipv6时要加`[]`
2a00:1098:2c::5:ac40:6d0a
proxyip.fxxk.dedyn.io
cdn.xn--b6gac.eu.org
cdn-all.xn--b6gac.eu.org
edgetunnel.anycast.eu.org
workers.cloudflare.cyouSOCKS5
永久免费HeroKu部署
proxy-tool
资料: 仓库-社区
server-tool
这里介绍一个代理服务器的UI工具:X-ui
v2ray
clash
clash-for-windows
所有订阅url
的配置文件都放在C:\Users\ray\.config\clash\profiles
.
clash-for-linux
不知道什么原因, clash原作者的仓库被爆破了, 归档网站存下了其2023/10月的仓库快照(≤ v1.18.0).
clash本身不是代理服务器, 而是管理我们的代理服务器(节点
)的, 并兼具规则路由
、流量分流
等功能.
使用clash进行代理的前提是, 你已经自建了一些节点
, 或者购买了订阅列表
.
默认情况下, 它在本机端口127.0.0.1:7890
处理所有HTTP/HTPS
请求, 然后根据规则转发到节点
.
是否需要安装
要知道, 你的机器正常访问外网的本质是, 你有一台代理服务器
, 它可以在本机安装, 也可以在你能访问到的其他机器上安装. 因此你可根据实际情况考虑是否需要安装clash.
安装: 一般情况下, 你需要在
本机
安装运行clash, 来实现用127.0.0.1:7890
转发请求.不必安装: 如果你
局域网内某主机A
已经安装运行了clash, 且打开了ALLOW LAN
设置, 你只需在本机设置环境变量http_proxy=$A_ip:7890
即可.- 在wsl2中, 由于与 Windows 主机共享网络, A_ip是
127.0.0.1
; - 在docker容器中, A_ip是Docker网络桥接的默认网关, 即
172.17.0.1
; - 在普通的局域网中, 可在主机A里面用
ipconfig
或ifconfig
查看A_ip.
⚠️ 端口只暴露在内网, 可不必关注安全问题.
- 在wsl2中, 由于与 Windows 主机共享网络, A_ip是
不必安装: 如果你有一台
有公网IP的主机B
已经安装运行了clash, 你只需在本机设置环境变量http_proxy=$B_ip:7890
即可.⚠️ 端口暴露在公网, 一定要关注安全和滥用问题.
这里给出两种安全使用的方案:
- clash配置用户和密码:
在$HOME/.config/clash/config.yaml
中设置授权用户和密码:authentication:
- "user1:pass1"
- ...
```
这样, 你本地的环境变量需改为`http_proxy=http://user1:pass1@$B_ip:7890`, `https_proxy`同理.
2. *ssh本地转发隧道*:
如果你还不放心本机和主机B之间的网络通信的安全性, 那就用ssh的本地转发功能, 把`本机的自定义端口映射到主机B的7890端口`. 仅需在你当前机器上执行两步:
- `ssh -qCNf -L 7890:127.0.0.1:7890 $公网user@$公网ip -i $path_pri_key`
- `export http_proxy=http://127.0.0.1:7890`, `export https_proxy=http://127.0.0.1:7890`
> ⚠️ 注意: 命令中的`127.0.0.1`是公网ip机器里的`127.0.0.1`, 不是本机的`127.0.0.1`. 也正是如此, 你**没必要**去公网ip机器的防火墙上特地放开7890端口.
> 如果你想让这功能开机自启, 也可将上述命令补充后写进`.zshrc`或`~/.bashrc`.
下面介绍需要安装与配置时的操作步骤.
##### 下载与安装
```bash
wget http://assets.taddream.site/downloads/clash-archived/clash-linux-amd64-v1.18.0.gz
gzip -dc clash-linux-amd64-v1.18.0.gz > clash
sudo mv clash /usr/local/bin/
sudo chmod +x /usr/local/bin/clash
- clash配置用户和密码:
若上述的url无法访问, 请使用源归档url(需科学上网).
配置-1-下载ip数据库
|
⚠️
config.yaml
是默认配置文件路径, 这样在使用clash
命令时就可以不必使用-f
手动指定配置文件路径.
⚠️ 这里的ip数据库
url (Country.mmdb)来自我的七牛镜像, 其原下载地址在这儿.
配置-2-1-手动创建配置文件
缺点: 当
订阅url
更新, 你得手动更新配置文件.
clash的配置文件有什么?
有clash基础设置, 有代理节点列表, 有规则列表…
手动制作clash配置文件的方法是:
- 在你心仪的机场购买代理服务, 获取
订阅url
; - 在你其他机器上的
clash-GUI版
解析你购买的订阅url
(下图step1-3), 然后在step4处右键edit
复制完整配置内容: - 把内容粘贴到本机的配置文件(
$HOME/.config/clash/config.yaml
)中.
配置文件格式形如:
|
配置-2-2-脚本生成配置文件
我们的预期是, 给脚本输入订阅url
, 就能自动得到config.yaml
.
优点: 可设计自动化脚本, 让
config.yaml
随着订阅url
同步更新.
参考资料: cndaqiang
详细步骤请跳转这里的安装
和使用-方法2
.
启动和系统配置
进入~/.bashrc
文件,添加以下内容:
|
重启终端, 最后启动clash
:
|
测试并愉快使用
执行curl -LI https://www.google.com
, 终端返回含200
的header信息, 说明代理生效.
实用工具
subconverter
subconverter是在各种订阅格式
之间进行转换的实用程序.
安装
下述安装包url为我自建镜像, 这里是官方源站.
给subconverter命令添加软链接, 即可全局使用该命令.
|
使用
订阅之间的转换, 详细教程请参考. 这里只介绍
订阅url → clash配置文件
的场景.
方法1-利用subconverter的http服务
适合搭建转换服务器,供所有的机器使用.
|
其中最后一条命令中关于%URL%
的制作, 示例如下:
|
也可以使用urlencode的在线工具来生成上述
suburl_encode
变量.
最终效果: 得到的配置文件中有 Proxy, Proxy Group, Rule三个部分. 而根据这里展示的配置文件格式, 我们还缺少了mixed-port, allow-lan, mode, external-controller, dns等配置, 看来还需手动补充. 不知道是不是我操作问题.
方法2-利用subconverter的命令行工具
适合在本地制作自动化脚本.
|
上述脚本的执行逻辑是:
subconverter/generate.ini
是用于格式转换命令
前的配置, 在其中追加一个自定义的配置类型[ssy2clash]
:path
是生成转换后的文件的路径, 与当前文件同目录.target
是目标格式, 如: “clash”(必须)url
是订阅url(必须, 这里就不必经过 URLEncode 处理), 也可以是自己的文件.
- 执行格式转换命令,
- 把结果复制到clash的配置路径下(事前备份).
在此之后, 定期执行以下命令即可实现订阅的更新: