V2Ray+Nginx+CloudFlare带你走近科学
#
# 适用人群
- 需要科学上网的网民
- 需要自建科学上网渠道
- IP被封了,还想继续科学上网
# 起源
早些时间,大家科学上网基本上都会使用OpenVpn或者Shadowsocks这两种常规方法。随着祖国的崛起,为了让西方的毒药尽量少的荼毒广大抵抗力较低的网民,所以 加强了防护。
西方思想虽然有一些糟粕,但在技术方面不得不承认还是有些精华的。不能因为这样我们就不像他们学习好的东西,这样的做法是不对的。所以希望读了本文之后的一些青年, 在使用了本文所阐述的术之后,能够抵抗住西方文化的毒瘤,对工具善于利用。
早些科学上网的方式,一旦IP被封锁后就面临着要么更换IP,要么就用别人的渠道。总之很不方便。所以本人愿尽我个人绵薄之力,提出另外一种费力些的方式,供大家参考、学习。
# 架构
解决方案 如图所示,架构方案采用V2Ray + WS + Tls + 伪装的解决方式
- 客户端使用web socker + tls 的方式去尝试使用vmess协议连接服务端
- 域名解析需要放到cloudflare上去。不使用国内的域名解析服务是因为此时,不出意外的话你的IP已经被墙了
- cloudflare不仅是DNS解析服务商,同时,它是一个CDN服务商。因此,他可以通过代理模式,隐藏我们服务端的真是IP地址。所以我们可以看到解析出来的IP地址也将不是我们服务器的真实地址。如:
traceroute www.xxxxxxxxx.com traceroute: Warning: www.xxxxxxxx.com has multiple addresses; using xxx.xx.xx.xxx traceroute to www.xxxxxxxx.com (xxx.xx.xx.xxxx), 64 hops max, 52 byte packets
1
2
3- 最后由CDN边缘节点连接真实服务端,进行通信 通过以上方式,能达到一定的IP隐藏作用。妈妈再也不用担心IP被封锁的情况。
该解决方案有利也必然有其弊端
- 你需要一个域名
- 你需要一个在国外VPS
- 整个链接的链路比较长,所以速度将有所减慢
- websocket的稳定性不高,会出现闪断~
综上所术,要实施改方案的同学请三思。
# 实施
网上也有一键安装的脚本,不过用的是Caddy作为web server, Caddy是由Go语言编写的web server, 不想要折腾的小伙伴请直接传送到: 一键部署v2ray (opens new window)
- 服务器部署详情 如图所示,服务器内部部署方案
# 服务端配置
- Nginx配置参考 建议使用Docker进行安装。 有ssl证书的开启ssl,没有也没有关系
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name 你的域名;
#ssl on; 看着改
#ssl_certificate /etc/nginx/conf.d/ssl/xxxx.pem;
#ssl_certificate_key /etc/nginx/conf.d/ssl/xxxxx.key;
#ssl_session_timeout 5m;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#ssl_prefer_server_ciphers on;
#access_log /var/log/nginx/host.access.log main;
root /var/www/ray;
location /ray { #这个路径在客户端处要用到
proxy_redirect off;
proxy_pass http://localhost:v2ryPort; #改!
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server{
listen 80;
listen [::]:80;
server_name 更换为你的域名;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
- V2Ray Core
V2Ray Core (opens new window) 传送门在此,怎么安装就不在这里赘述了。
V2Ray 配置参考
{ "log":{ "loglevel":"info", "access":"/var/log/v2ray/access.log", "error":"/var/log/v2ray/error.log" }, "routing":{ "domainStrategy":"Asls", "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/15", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "::1/128", "fc00::/7", "fe80::/10" ], "outboundTag":"block" } ] }, "inbounds":[ { "listen":"服务器地址/localhost", "port":端口, "protocol":"vmess", "settings":{ "clients":[ { "id":"填入ID,一般使用uuid生成", "level":1, "alterId":64 } ] }, "streamSettings":{ "network":"ws", "security":"none", "wsSettings":{ "path":"你设置的path", "headers":{ "Host": "域名" } }, "tlsSettings":{ "allowInsecure":true } } } ], "outbounds":[ { "protocol":"freedom", "tag":"direct" }, { "protocol":"blackhole", "tag":"block" } ], "transport":{ "sockopt":{ "tcpFastOpen":true } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
- V2Ray Configuration Examples
V2Ray 配置官方参考 (opens new window)
- CloudFlare 配置参考
- 加A记录以及设置为代理模式。
- 设置全SSL代理 。
# 客户端配置
- V2Ray Client 配置
{
"outbounds" : [
{
"sendThrough" : "0.0.0.0",
"mux" : {
"enabled" : false,
"concurrency" : 8
},
"protocol" : "vmess",
"settings" : {
"vnext" : [
{
"address" : "填入域名",
"users" : [
{
"id" : "填入ID",
"alterId" : 64,
"security" : "auto",
"level" : 1
}
],
"port" : 443
}
]
},
"tag" : "tagName",
"streamSettings" : {
"network" : "ws",
"tlsSettings" : {
"allowInsecure" : true
},
"security" : "tls",
"wsSettings" : {
"path" : "\/ray" //这个PTAH比较关键
}
}
},
{
"tag" : "directly",
"protocol" : "freedom"
}
],
"routings" : [
{
"name" : "all_to_main",
"domainStrategy" : "AsIs",
"rules" : [
{
"type" : "field",
"outboundTag" : "main",
"port" : "0-65535"
}
]
},
{
"domainStrategy" : "AsIs",
"rules" : [
{
"type" : "field",
"ip" : [
"geoip:private"
],
"outboundTag" : "direct"
},
{
"type" : "field",
"outboundTag" : "main",
"port" : "0-65535"
}
],
"name" : "some rule set"
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
编辑 (opens new window)