干啥的
制作 V2Ray 的目的是什么
对于已公开的合法信息,人民有自由获取的权利。同时,人民也有言论自由的权利。
是否反对管制
不反对管制。事实上任何事物都需要管制,以减少大众的生活成本,比如奶粉。但监管需要有法可依、有据可循。民众都认可的监管方式也是合理的,可接受的。
Project V 由谁主导开发
我们是一群爱好自由的人们。由于政策压力,我们倾向于保持匿名,尽可能地不透露任何身份信息。
怎么用
服务端
# 创建路径
$ mkdir v2ray && cd v2ray
# 下载最新发布包
$ wget https://github.com/v2fly/v2ray-core/releases/latest/download/v2ray-linux-64.zip
# 解压
$ unzip v2ray-linux-64.zip
# 备份原始配置
$ mv config.json config.json.origin
# 添加配置,可参考 https://github.com/v2fly/v2fly-github-io/blob/master/docs/guide/start.md
# port 为服务器监听端口
# id 为唯一标识,可借助 uuidgen 命令进行生成
# 服务器的配置中需要确保 id 和端口与客户端一致,就可以正常连接了
$ cat > config.json << EOF
{
"inbounds": [
{
"port": 34260,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "$(uuidgen)"
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
EOF
# 通过 v2ray --config=config.json 启动服务
# 通过 screen 命令使服务保持后台运行
# 注意修改下面命令中的路径,配置文件需使用绝对路径
# 执行命令后,可通过 ps -ef|grep v2ray 查看服务是否已启动
$ screen -dmS s1080 /path/to/v2ray/v2ray --config=/path/to/v2ray/config.json
客户端
从 https://github.com/v2fly/v2ray-core/releases/latest 下载对应客户端版本,即客户端也需要启动 v2ray 服务,根据配置文件区分服务端或客户端。
# 生成客户端配置文件 client.json
# 需调整如下内容:
# address 为服务端 ip 或域名
# port 为服务端配置的端口
# id 为服务端生成的 id
$ cat > client.json << EOF
{
"inbounds": [
{
"port": 1080,
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"udp": true
}
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "server-ip",
"port": 34260,
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811"
}
]
}
]
}
},
{
"protocol": "freedom",
"tag": "direct"
}
],
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"ip": [
"geoip:private"
],
"outboundTag": "direct"
}
]
}
}
EOF
之后可采用与服务端类似方式,启动客户端服务。
至此,我们就获得了一个监听本地 1080 端口的 socks 协议,可通过多种方式进行利用,例如浏览器插件等。
浏览器插件
Chrome 或 Firefox 可通过 SwitchyOmega 插件配置代理。
以 Chrome 为例,在 release 页面下载 crx 文件至本地,修改扩展名为 .zip
,unzip
解压到本地文件夹中,在 Chrome 扩展程序
中 加载已解压的扩展程序
,选择解压路径,即可完成插件安装。
在插件的配置页面,新建一个 代理服务器
类型 情景模式
,代理协议选择 SOCKS5
,代理服务器设为 127.0.0.1
,代理端口为 1080
,保存应用即可。
在需要使用此代理进行访问时,在浏览器插件图标处选择创建的情景模式即可。
iOS
iOS 上免费的 v2ray 客户端有 Leaf 和 OneClick,需要从美区 App Store 下载,注册及切换账号可见 用好 App Store。
Leaf
Leaf
源码可见 这里,配置较麻烦,但支持没有设置 alterId
参数的服务端(如本文上面的配置)。关于 alterId
参数的配置和使用,可见 VMess 协议 中相关内容。
App 中需添加一个配置,示例如下,注意修改其中的 SERVER_IP
、SERVER_PORT
和 SERVER_ID
为服务端对应配置:
[General]
loglevel = info
dns-server = 114.114.114.114, 223.5.5.5
always-real-ip = tracker, apple.com
# Local HTTP CONNECT proxy
interface = 127.0.0.1
port = 1087
# Local SOCKS5 proxy with UDP Associate support
socks-interface = 127.0.0.1
socks-port = 1086
[Proxy]
Direct = direct
Reject = reject
# VMess
VMess = vmess, SERVER_IP, SERVER_PORT, username=SERVER_ID
[Proxy Group]
# fallback 等效于 failover
Fallback = fallback, VMess, interval=6000, timeout=5
# url-test 等效于 failover=false 的 failover
UrlTest = url-test, VMess, interval=6000, timeout=5
Failover = failover, VMess, health-check=true, check-interval=6000, fail-timeout=5, failover=true
Tryall = tryall, VMess, delay-base=0
Random = random, VMess
[Rule]
# 执行文件目录当中必需有 `site.dat` 文件
EXTERNAL, site:category-ads-all, Reject
# 也可以指定 `dat` 文件所在绝对路径,不支持相对路径
EXTERNAL, site:/tmp/geosite.dat:category-ads-all, Reject
IP-CIDR, 8.8.8.8/32, Fallback
DOMAIN, www.google.com, Fallback
DOMAIN-SUFFIX, google.com, Fallback
DOMAIN-KEYWORD, google, Fallback
# 等效于 EXTERNAL, mmdb:us, Fallback
GEOIP, us, Fallback
EXTERNAL, site:geolocation-!cn, Fallback
# 执行文件目录当中必需有 `geo.mmdb` 文件
EXTERNAL, mmdb:us, Fallback
FINAL, Direct
[Host]
# 对指定域名返回一个或多个静态 IP
example.com = 192.168.0.1, 192.168.0.2
如果确保配置全部正确后仍无法通过 VPN 访问目标地址,可尝试更换 端口。
OneClick
OneClick 使用较为简单,只需添加服务器配置,选择 VMESS
类型,填入对应信息即可,GitHub 上有一个 OneClick 的 文档仓库 也有详细的使用教程,但 OneClick 中添加的 VMESS 服务器必须包含 Alert ID。