v2ray-v5.1.0参考这个
v2ray的原理,这个我感觉是可以理解的 。看这里
简单来说,v2ray没有服务端、客户端之分,或者说v2ray的客户端、服务端在一起;服务器端(比如我在vps上部署的v2ray)的v2ray的inbounds做服务端,接受客户端(我的手机端v2rayNG / shadowlink app)的请求,与客户端的outbounds相对应;outbounds做客户端,向服务端发起请求,与服务端的inbounds相对应。
同一个v2ray的inbounds与outbounds之间用routing来连接,routing就用来定义当我的一个inbounds接收到了流量,该把它发送到outbounds中的哪一个。所以v2ray可以做这种事:inbounds接收流量,然后查routing,根据routing的设置转发到指定的outbounds中。
V2Ray 使用 inbound(传入) 和 outbound(传出) 的结构,这样的结构非常清晰地体现了数据包的流动方向,同时也使得 V2Ray 功能强大复杂的同时而不混乱,清晰明了。形象地说,我们可以把 V2Ray 当作一个盒子,这个盒子有入口和出口(即 inbound 和 outbound),我们将数据包通过某个入口放进这个盒子里,然后这个盒子以某种机制(这个机制其实就是路由,后面会讲到)决定这个数据包从哪个出口吐出来。以这样的角度理解的话,V2Ray 做客户端,则 inbound 接收来自浏览器数据,由 outbound 发出去(通常是发到 V2Ray 服务器);V2Ray 做服务器,则 inbound 接收来自 V2Ray 客户端的数据,由 outbound 发出去(通常是如 Google 等想要访问的目标网站)。
V2Ray 使用 inbound(传入) 和 outbound(传出) 的结构,这样的结构非常清晰地体现了数据包的流动方向,同时也使得 V2Ray 功能强大复杂的同时而不混乱,清晰明了。形象地说,我们可以把 V2Ray 当作一个盒子,这个盒子有入口和出口(即 inbound 和 outbound),我们将数据包通过某个入口放进这个盒子里,然后这个盒子以某种机制(这个机制其实就是路由,后面会讲到)决定这个数据包从哪个出口吐出来。以这样的角度理解的话,V2Ray 做客户端,则 inbound 接收来自浏览器数据,由 outbound 发出去(通常是发到 V2Ray 服务器);V2Ray 做服务器,则 inbound 接收来自 V2Ray 客户端的数据,由 outbound 发出去(通常是如 Google 等想要访问的目标网站)。
1)、下载v2ray
我下载的是latest版的,并没有下载pre-release版的,目前的latest版是v2ray-linux-64.zip,还有一个校验文件v2ray-linux-64.zip.dgst,可用于校验下载的v2ray-linux-64.zip是否被修改过。
我的校验方式是:
$ cat v2ray-linux-64.zip.dgst
MD5= 0d56bc8c112d2c8a98c3741a3fbc204c
SHA1= d319450afd51e1c11387c583e07214eed2bd5628
SHA256= 5530c1ce251f1f668db8e315afb18dc204c768231780a4b1e5fbfbc3fe20a749
SHA512= 817453bf0b33a50eef32ea5b808a21983eb67fb2a1cbe24fe3d1aab645f6e6c71b7cc7b7b6a481605c1d030061e82cc79b9501cb40e224df829bc3f3d5d613f5
然后对刚刚下载的v2ray-linux-64.zip执行sha256sum(或者md5sum/sha512sum均可以)
$ sha256sum v2ray-linux-64.zip
5530c1ce251f1f668db8e315afb18dc204c768231780a4b1e5fbfbc3fe20a749 v2ray-linux-64.zip
可以看到执行结果和.dgst文件内的sha256后面的内容一致,证明 v2ray-linux-64.zip并没有被篡改过。
2)、解压缩v2ray并生成uuid,
可以使用v2ctl生成或者在这个网站生成。
使用v2ctl 生成uuid
$ v2ctl uuid
7445c875-efaf-3292-1a80-66a818ebf17d
3)、上结论吧
在服务器端配置server.json,然后执行./v2ray -config server.json 即可。
还有一个很重要的地方!!!!!!需要在~/.bashrc或/etc/profile里增加一个环境变量:
export V2RAY_VMESS_AEAD_FORCED=false
以下配置文件server.json可以直接接收socks请求(tg)或者通过v2ray客户端侧接收pc浏览器switchyomega的请求。
使用v2ray创建socks代理,参考这里
server.json内容如下:
{
"log": {
"access": "/var/log/vray/access.log",
"error": "/var/log/vray/error.log",
"loglevel": "info"
},
"inbounds": [
{
"port": 22222,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "xxxxxxxx-xxxx-x-9xxx-x55e-xxxxxxxxxxxx",
"level": 1,
"alterId": 3824
},
{
"id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"level": 1,
"alterId": 2824
}
]
}
},
{
"protocol": "socks",
"port": 11111,
"settings": {
"auth": "password",
"accounts": [
{
"user": "myuser",
"pass": "mypassword"
}
],
"udp": false,
"ip": "127.0.0.1",
"userLevel": 0
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"inboundDetour": [],
"outboundDetour": [],
"routing": {
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"ip": [
"geoip:private"
],
"outboundTag": "blocked"
}
]
}
}
}
4)、以PC为例,同样需要执行./v2ray -config client.json. 然后浏览器内的switchyomega内的proxy代理端口设置为10080.
client.json内容如下:
{
"log": {
"loglevel": "info"
},
"inbound": {
"listen": "127.0.0.1",
"port": 10080,
"protocol": "socks",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"settings": {
"auth": "noauth",
"udp": true,
"ip": "127.0.0.1"
}
},
"outbound": {
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "your_vps_ip",
"port": 22222,
"users": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"level": 1,
"alterId": 3824
}
]
}
]
},
"mux": {
"enabled": true,
"concurrency": 8
}
},
"outboundDetour": [
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
}
],
"routing": {
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "direct"
},
{
"type": "field",
"outboundTag": "direct",
"domain": ["geosite:cn"] // 中国大陆主流网站的域名
},
{
"type": "field",
"outboundTag": "direct",
"ip": [
"geoip:cn", // 中国大陆的 IP
"geoip:private" // 私有地址 IP,如路由器等
]
}
]
}
}
}
5)、然后就可以了啊!!!
手机端shadowlink app配置v2ray,加密方法:aes-128-gcm