前置基础
- 已经购买或者拥有一台国外的服务器
- 服务器配置好ssh,可以通过本地终端连接
- 已经拥有一个域名并且已经解析到服务器IP(收费or免费域名都行)
- 本教程基于CentOS 7系统
其他系统类似
服务端配置
服务器更新
在通过ssh首次连接到购买的VPS后,首先要做的就是刷新软件源和更新系统,执行如下代码:1
2yum update
yum upgrade
对于新购买的VPS,在执行yum upgrade
之后可能需要耗费一段时间进行系统更新,具体花费的时间根据服务器配置的不同而有所差异。
申请TLS证书
在注册好域名之后务必添加一个A 记录指向你的服务器IP。
在确认域名已经解析到我们购买的VPS的IP地址之后,我们先申请对应域名的TLS证书。
首先通过ssh连接到服务器,输入如下命令安装TLS证书申请工具:1
curl https://get.acme.sh | sh
如果报错,可能是由于服务器没有安装curl
工具,执行yum install curl
安装完成后重新执行上述命令即可。
安装完acme
证书申请工具后即可进行域名证书的申请:1
~/.acme.sh/acme.sh --issue -d 改成对应的域名 --standalone -k ec-256
注意: 该命令会临时监听80
端口,请确保执行该命令前80
端口没有使用。
证书申请完毕后会存放在/root/.acme.sh/域名_ecc
文件夹内,这个路径要记住,后面配置nginx要用到。
Nginx的安装与配置
Nginx安装
由于nginx软件并不在默认的软件列表中,因此我们在安装nginx之前要现将包含nginx的软件源添加到软件源列表,执行如下命令:1
yum install epel-release
然后进行nginx的安装:1
yum install nginx
在终端执行一下指令生成dhparam
1
2mkdir -p /etc/nginx/ssl
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
至此Nginx安装完毕,下一步要进行配置。
Nginx配置
通过yum install nginx
方式安装Nginx之后,对应的配置文件在/etc/nginx/
文件夹中。
首先要修改的是nginx的默认配置文件,我们使用vi /etc/nginx/nginx.conf
打开默认配置文件,将里面的内容修改成如下:
1 | # * Official English Documentation: http://nginx.org/en/docs/ |
接下来进入nginx的站点配置文件夹,并新建我们对应域名的配置文件:1
2cd /etc/nginx/conf.d
touch 域名.conf
接着编辑域名的配置文件,我们使用vi 域名.conf
指令打开文件进行编辑,输入如下内容: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
49server
{
listen 80;
server_name 你的域名;
#将http重定向到https
return 301 https://你的域名$request_uri;
}
server
{
listen 443 ssl http2;
server_name 你的域名;
ssl on;
ssl_certificate /root/.acme.sh/你的域名_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/你的域名_ecc/你的域名.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
access_log off;
location / {
#向后端传递访客IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#设定需要反代的域名,可以加端口号
proxy_pass https://www.iqiyi.com/;
#替换网站内容
sub_filter 'www.iqiyi.com' '你的域名';
# websocket设定,V2ray使用,这里的设置要和v2ray的设置一致。
location /自定义/ {
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_intercept_errors on;
if ($http_upgrade = "websocket" ){
proxy_pass http://127.0.0.1:自定义v2ray端口;
}
}
}
}
配置文件中的指定内容记得修改成自己的域名、SSL证书路径填写我们上一步申请证书时记录的路径、自定义部分可以自己修改。
这个配置文件主要实现两个功能:
- 域名反代,实现人们在访问你的域名的时候得到的页面是其他网页的页面。
这省去了自己搭建站点来提高混淆的麻烦,这部分设置在配置文件中的
location / {}
部分,请对应修改成需要的内容。 - 实现v2ray特征流量的转发
在配置文件中的
location /自定义/ {}
部分,可以将/自定义/
修改成任何信息,甚至是乱码,比如/haha
。
它的作用是告诉nginx,路径为/haha
的流量全部转发到指定端口proxy_pass http://127.0.0.1:自定义v2ray端口
部分请自己随机设置端口,比如12345
端口,nginx就是将v2ray流量通过这个端口转发给服务端v2ray的。
至此,nginx的安装和配置已经完毕,最后可以在终端输入nginx -t
进行nginx配置文件的语法检查,如果显示success则表示配置无误,如果报错,则相应的检查报错文件的报错行数,通常是遗漏符号的问题导致报错。
安装和配置V2ray
做了那么多前期准备,现在终于到了核心的部分。其实在做了那么多准备工作之后,v2ray的安装和配置就显得格外的简单。
V2ray的安装
输入如下指令进行v2ray的下载安装:1
2wget https://install.direct/go.sh
bash go.sh
如果报错,可能是没有安装wget
,输入指令yum install wget
安装完之后重新执行上述命令即可。
V2ray配置
完成安装之后,就差配置文件了。
都说V2ray的配置复杂,这是限制很多人不愿意使用V2ray的原因之一。
但是,Don’t Worry About It! v2ray的配置看似复杂,其实只要根据模版修改需要的内容即可,非常简单。
我们进入V2ray的配置文件夹,并新建一个配置文件:1
2cd /etc/v2ray
touch config.json
我们通过vi config.json
命令打开配置文件,将如下内容粘贴进去即可(注意修改对应内容为自己服务器的信息):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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118{
"dns": null,
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "info"
},
"outbound": {
"protocol": "freedom",
"streamSettings": null,
"tag": null,
"settings": null,
"mux": null
},
"stats": {},
"api": {
"services": [
"StatsService"
],
"tag": "api"
},
"routing": {
"strategy": "rules",
"settings": {
"domainStrategy": null,
"rules": [
{
"port": null,
"domain": null,
"type": "field",
"outboundTag": "blocked",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"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"
]
},
{
"inboundTag": [
"api"
],
"type": "field",
"outboundTag": "api"
}]
}
},
"inbound": {
"port": nginx中设置的自定义端口,
"streamSettings": {
"wsSettings": {
"connectionReuse": true,
"headers": {
"host": "随便填写一个网址"
},
"path": "/nginx中配置的自定义内容/"
},
"tlsSettings": {},
"kcpSettings": null,
"network": "ws",
"security": "",
"httpSettings": null,
"tcpSettings": null
},
"tag": "A",
"settings": {
"clients": [
{
"id": "12345432-85eb-4385-b760-22222c061109",
"alterId": 64
}]
},
"protocol": "vmess"
},
"policy": {
"levels": {
"0": {
"statsUserDownlink": true,
"statsUserUplink": true
}
},
"system": {
"statsInboundUplink": true,
"statsInboundDownlink": true
}
},
"inboundDetour": [
{
"protocol": "dokodemo-door",
"settings": {
"address": "127.0.0.1"
},
"tag": "api",
"port": 23243,
"listen": "127.0.0.1"
}
],
"outboundDetour": [
{
"protocol": "blackhole",
"settings": null,
"tag": "blocked"
}]
}
需要修改的信息:
inbound
中的Port
修改为nginx配置中我们设定的自定义端口inbound
中的path
修改为nginx配置中设置的/自定义/
部分,注意/
也要一致!inbound
中header
部分的Host
修改为任意网址,可以高混淆clients
中的id
修改为任意的uuid码,可以通过网页生成
其他部分不需要修改,最后ESC -> :wq
进行保存退出,至此,v2ray的配置就宣告结束。
防火墙配置
由于有的服务商对CentOS 7 系统默认安装了防火墙,因此在上述配置后,还需要设置防火墙打开对应端口才可以使用。
可以输入如下指令查看已经开放的端口:1
firewall-cmd --zone=public --list-ports
如果显示错误,提示没有找到firewall-cmd指令,那么说明系统没有安装防火墙,此时可以跳过防火墙配置,运行nginx和v2ray。
接着通过如下指令开放我们nginx中配置的v2ray转发端口:1
firewall-cmd --permanent --zone=public --add-port=端口号/tcp
推荐开放的端口号:443
,80
,22
,nginx转发端口
端口开启完毕之后,执行如下命令并显示新的端口开放信息:1
2firewall-cmd --reload
firewall-cmd --zone=public --list-ports
确认端口都开放无误后,防火墙的配置就结束。
开启服务并配置开机自启动
完成以上配置之后,即可开启nginx和v2ray服务:1
2systemctl start nginx
systemctl start v2ray
如果没有报错,说明一切配置正确。
最后设置一下nginx和v2ray开机自启动:1
2systemctl enable nginx
systemctl enable v2ray
至此,V2ray + WS + Nginx反代 + TLS 的服务端配置完毕,下面配置客户端即可开始使用。
客户端配置
在完成服务端配置后,客户端的配置信息如下,根据不同的客户端填入相应信息即可使用:
- Address:
你的域名
- 端口:
443
- id:
v2ray配置文件中自己创建的uuid码
- 传输方式:
ws
- 路径:
/自定义/
#即nginx配置和v2ray配置文件中的/自定义/
部分,/
号别遗漏! - 域名(Host):
v2ray配置中header部分的自定义Host网址
- alterId:
64
#和v2ray配置文件中的相同即可
- 路径:
- TLS:
开启,允许不安全的连接
至此,便可以开心的使用代理啦,不同的v2ray客户端软件可能还有全局或者PAC模式,可以自己探索一下。