V2ray安装配置

V2ray安装配置,使用Linux+Nginx+TLS+WS+CDN

V2ray安装配置很简单,跟着下面一步一步搭建安全快速的V2Ray服务端,Nginx+TLS+WS(WebSocket)+CDN简单又安全!在日常网络生活中,隐私泄露的危险无处不在,如何保护你的个人隐私提高你在互联网上的用户安全性?搭建V2ray帮你解决烦恼!
详细解读V2ray安装配置的步骤,菜鸟止步,首先阅读这篇文章需要有一定的网络基础,如果你没有域名,没有支持国际支付的信用卡,不懂什么是服务器,什么是云主机的请绕行。虽然下面讲的V2ray安装配置很详细,有可能会浪费你的宝贵时间。

首先你需要了解什么是V2Ray?

请注意V2Ray不是VPN,它和VPN有本质上的区别,V2Ray是目前比较流行的用来保护个人上网隐私的一款应用,属于一个流量转发的工具。 可以实现跟Shadowsocks一样的效果, 它的优势是采用VMess协议, 可单独设置传输载体,比如TCP、mKCP、WebSocket等。而且V2Ray的节点可以伪装成正常的网站(HTTPS), 将其流量与正常的网页流量混淆, 以避开第三方干扰。
下面说说怎么在服务器端安装搭建V2ray,首先你需要有一台服务器或者VPS。操作系统安装centos7.x或者centos8。安装配置差别不是很大。
第一步,先申请服务器,然后安装linux基础环境。2020申请谷歌云攻略,免费获得300美元或三个月时限赠送。也可以花钱购买阿里云的香港主机,支付宝付款很方便。阿里云的香港主机价格控制在200元之内,2核心cpu,4g内存,40g硬盘,5M带宽足够使用了。
当你搞定服务器后,需要在服务器上做一些简单的配置,安装一些应用和更新系统,可以参考:
阿里云安装wordpress,Centos8使用Dnf搭建LNMP环境
谷歌云配置攻略,详细介绍如何创建VM实例
接下来就是使用官方的一键安装脚本用来安装v2ray,脚本可以根据操作系统的芯片架构自动安装所对应的版本。
输入命令安装用于在支持systemd的Debian/CentOS/Fedora/openSUSE等操作系统中安装V2Ray的Bash脚本,此脚本更新于2021年1月。

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) 如果卸载的话,请在服务器里输入下面命令 bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --remove 安装成功后会提示v2ray配置文件存放目录

1
2
3
4
5
6
7
8
9
10
installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/v2ray@.service

v2ray常用命令:

1
2
3
4
5
service v2ray start #启动V2Ray服务
service v2ray stop #停止V2Ray服务
service v2ray status #查看V2Ray服务状态
service v2ray reload #重载V2Ray配置文件
service v2ray restart #重启V2Ray服务

安装好的v2ray是官方的纯净版,/usr/local/etc/v2ray/config.json配置文件需要手动添加修改。
放上一个实例可以参考修改,也可以复制添加到配置文件中。

1
vi /usr/local/etc/v2ray/config.json

进入vi编辑模式,把下面代码复制在里面,然后按:qw退出保存。

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
{
"inbounds": [{
"port": 10086,
"listen":"127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "7da5788d-6060-4cb0-83db-8237e37c2f9c",
"alterId": 1
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/gogobox"
}
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}

修改过后使用命令启动一下v2ray就可以了。

1
service v2ray start

如果没搞明白的话,vv2ray还有其它几种傻瓜安装方式,可以参考:2021年centos8免费搭建v2ray最全方案,4K高速不堵车
v2ray的服务端已经安装成功了,下面需要注册域名和配置Nginx。
什么是Nginx?

什么是Nginx?

Nginx是linux下的一个功能非常强大的WEB服务器。Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接。
高度的模块化和自由软件许可证使得第三方模块层出不穷。
Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX, OS等操作系统上。
这些优秀的设计带来的是极大的稳定性。
安装方法请参考:CentOS7安装Nginx1.17的详细步骤和网站配置
或者是查看:
centos8使用yum/dnf安装LNMP php+mysql+nginx环境配置详解
Nginx在centos下使用dnf/yum命令安装很简单。安装好nginx后,先去注册域名,域名需要申请支持https的ssl证书。

如何免费注册国外域名?

如果你有现成的域名,请将域名解析A记录到v2ray的服务器IP。如果你没有任何域名或者想注册一个新的域名用来使用v2ray的话,请先注册域名。
付费域名,国外网站可以使用Godaddy.com或者gandi.net
如果先选择免费而且匿名的域名,可以在DOT.TK或者Freenom.com上注册,这俩是一家的。
菜鸟小白练练手,先注册个免费域名。例如在DOT.TK中注册一个免费域名。
DOT.TK提供了.tk/.ml/.ga/.cf/.gq一共五种后缀的免费域名注册。输入你喜欢的域名全称查询注册,例如申请gogobox.tk,在检查可用性的栏里面要输入gogobox.tk,一定要带域名后缀。
在DOT.TK中注册一个免费域名
点击完成,进入购物车页面内,免费域名默认是三个月的免费期,在下拉菜单里面将3个月选择成12个月的免费期。
V2ray安装配置,Freenom.com上注册
然后点击USE DNS,使用DNS解析,将你的服务器IP地址输入到域名的后面,目前支持根域名和www两种解析。输入完毕后点击继续。进入到结算页面
V2ray安装配置,Freenom.com上注册
在结算页面需要注册账户,账户可以是email注册或者是google用户登录。如果你没有Google的话,最好申请一个,因为google的服务真实方便快捷而且免费!
V2ray安装配置,Freenom.com上注册域名
V2ray安装配置,Freenom.com上注册域名
V2ray安装配置,Freenom.com上注册域名
进入你的E-mail后找到发送的邮件,进入点击邮件激活链接后,会跳转到资料等级页面。这里就是注册的域名的个人资料页面。
由于个人隐私需要保护的问题。需要输入一个不真实的用户资料。请注意,在个人资料填写的下方,有你的本机IP地址。这个如果是国内IP的话,建议填写中国境内的地址,如果你使用vpn访问的话,可以随机输入美国人资料。
Google上随便搜索到的随机身份生成网站:https://www.fakenamegenerator.com/
随机刷新就会生成一个新的虚拟人物信息资料。保护隐私安全可靠!
填写域名的个人资料,从随机身份生成里面复制粘贴就可以了,不懂的可以使用翻译软件。
V2ray安装配置,Freenom.com上注册域名
输入完毕后点击继续,如果输入错误会有相应的提示,例如电话输入带了横杠,网站会提示你电话不要输入其它符号。去掉横杠再次点击继续!
V2ray安装配置,Freenom.com上注册域名
修改正确后,会跳转到网站首页!然后登录你的用户,进去可以查看相关的域名信息。登录成功后,点击服务,查看我的域名,就可以看到之前注册的域名已经生效了。
V2ray安装配置,Freenom.com上注册域名
点击管理网域,进入Manage Freenom DNS,可以管理域名解析,在这里也可以解析二级域名等等。解析域名时TTL设置最小值300。有时解析很快,有时候解析需要几十分钟甚至更久,这个就看运气了。
Freenom.com上注册域名
Freenom.com上注册域名
现在免费域名已经申请完了,解析也已经生效了,回到服务器上去设置TLS+WS(websocket)

了解一下什么是TSL/SSL?

SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的基础设施——比如“CSS 样式表”和“JS 脚本”)
为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明 SSL 协议,就是为了解决这些问题。
到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。
很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。
如何让域名支持TSL?简单点说就是申请域名的SSL/TSL证书!
如何申请SSL/TSL证书,请参考:Let’s Encrypt免费申请SSL证书,自动续订证书永久使用https
关于SSL/TSL证书:
证书有两种,一种是ECC 证书(内置公钥是 ECDSA 公钥),一种是RSA 证书(内置 RSA 公钥)。简单来说,同等长度 ECC 比 RSA 更安全,也就是说在具有同样安全性的情况下,ECC 的密钥长度比 RSA 短得多(加密解密会更快)。但问题是 ECC 的兼容性会差一些,Android 4.x 以下和 Windows XP 不支持。只要您的设备不是非常老的老古董,强烈建议使用 ECC 证书。
下面是在centos8上申请TSL/SSL域名证书的方法:

1
curl https://get.acme.sh | sh

V2ray安装配置,centos8上申请TSL/SSL证书
提示需要先安装SOCAT,安装socat后重新启动服务器再运行申请证书的脚本,Centos8下提示80端口被占用,卸载SOCAT后申请证书又提示需要安装SOCAT,死循环!reboot解决问题!

1
2
dnf -y install socat
reboot

centos8上申请TSL/SSL证书
下面生成证书,如果你的服务器上已经安装了nginx或者apache等web服务器的话,你需要暂时关闭。申请证书期间会占用80端口,请确保你服务器上的80端口没有被占用。
关于端口方面的几个小命令:

1
2
3
4
netstat -tln #查看服务器上端口使用情况。
netstat -tln | grep 80 #查看80端口是否被占用,输入命令如果命令行没反应,则是端口没有被占用,如果被占用会显示对应的端口
lsof -i :80 #查看端口属于哪个程序?端口被哪个进程占用
kill -9 进程数 #杀掉占用端口的进程

下面开始生成TSL/,如果出错的话,可以在后面增加--debug参数,查看详细错误。

1
sudo ~/.acme.sh/acme.sh --issue -d gogobox.tk --standalone -k ec-256

没有发生什么意外的话,TSL/SSL证书已经生成成功了!
V2ray安装配置,centos8上申请TSL/SSL证书
TSL/SSL免费证书的有效期是90天,90天之内需要更新证书。脚本会60天更新一次,理论上讲免费证书是可以无限更新使用的,当然你也可以通过下面命令手动更新。

1
sudo ~/.acme.sh/acme.sh --renew -d gogobox.tk --force --ecc

如果需要生成www开头的或者是二级域名,请在域名前面加-d参数,--force参数是强制更新证书!例如:

1
sudo ~/.acme.sh/acme.sh --issue -d gogobox.tk -d www.gogobox.tk -d m.gogobox.tk --standalone -k ec-256 --force

不建议将域名证书保存在root目录内,可以将证书迁移到www目录下。
这里还有另外一种证书的申请方式:
先安装socat

1
dnf install socat

安装 acme.sh

1
curl https://get.acme.sh | sh

脚本安装后reboot
在nginx里设置好域名后,再进行证书申请

1
acme.sh --issue -d gogobox.tk -d www.gogobox.tk --webroot /home/www/

也可以使用读取nginx配置的命令,前提是在nginx中已经设置好域名的指向路径。

1
acme.sh --issue -d gogobox.tk --nginx

证书申请成功后,需要把证书安装一下:

1
2
证书申请成功后,进行证书安装。
acme.sh --installcert -d gogobox.tk --key-file /home/ssl/gogobox.tk.key --fullchain-file /home/ssl/fullchain.cer --reloadcmd "service nginx force-reload"

TSL域名证书已经搞定了,下面开始配置WS(WebSocket),也就是配置Nginx服务器端。

什么是WS(WebSocket)协议?

在v2ray中所提到的WS,是websocket的简称。WebSocket协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。WebSocket的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。
HTTP有1.1和1.0之说,也就是所谓的 keep-alive ,把多个 HTTP 请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器,所以在握手阶段使用了HTTP 。
HTTP与WebSocket的主要区别是什么?
什么是WS(WebSocket)V2ray安装配置
WebSocket 的其他特点:
建立在 TCP 协议之上,服务器端的实现比较容易。
与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
数据格式比较轻量,性能开销小,通信高效。
可以发送文本,也可以发送二进制数据。
没有同源限制,客户端可以与任意服务器通信。
协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
WebSocket 是一个持久化的协议,相对于 HTTP 这种非持久的协议来说。简单的举个例子吧,用目前应用比较广泛的 PHP 生命周期来解释。
HTTP 的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次 HTTP 请求就结束了。
在 HTTP1.1 中进行了改进,使得有一个 keep-alive,也就是说,在一个 HTTP 连接中,可以发送多个 Request,接收多个 Response。但是请记住 Request = Response, 在 HTTP 中永远是这样,也就是说一个 Request 只能有一个 Response。而且这个 Response 也是被动的,不能主动发起。

Nginx配置TLS+WS

WS是一个通讯协议,通过nginx建立一个TSL的伪装网站,然后使用WS协议访问伪装网站产生TSL加密数据传输。再使用V2ray转发WS通过TSL的加密数据流量。通俗一点说就是挂羊头卖狗肉!
在/etc/nginx/.d目录, 创建v2ray.conf配置文件。通过yum/dnf安装的nginx默认的文件目录在/etc/nginx/。证书路径不要随便更改,证书续签的时候生成的位置保持不变。如果你更改了证书的位置,续签的时候需要手动操作,将续签的证书覆盖更新到之前的证书目录。
下面是一个例子,nginx里v2ray的配置文件v2ray.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
server {
listen 80;
server_name www.gogobox.tk gogobox.tk; #你的网站域名
return 301 https://$server_name:443$request_uri; #301重定向到 https
}
server {
listen 443 ssl;
server_name gogobox.tk www.gogobox.tk; #TSL/SSL证书绑定的域名
root /var/www/v2ray; #伪装网站存放路径
index index.html index.htm index.php; #index文件存放位置
ssl on;
ssl_certificate /var/www/gogobox.tk_ecc/gogobox.tk.cer; #TSL/SSL证书路径,记得把证书复制到/var/www/目录下。
ssl_certificate_key /var/www/gogobox.tk_ecc/gogobox.tk.key; #TSL/SSL证书路径,证书如果失效后,需要重新申请。
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000" always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
fastcgi_hide_header X-Powered-By;
#下面是ws的配置文件,设置ws的访问目录是gogobox,目录名称可以自定义。
location /gogobox { #与V2Ray配置中WS的path保持一致
proxy_redirect off;
proxy_pass http://127.0.0.1:10086; #端口与V2Ray服务器配置中的监听端口port保持一致
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;
include /etc/nginx/default.d/*.conf;
}
}

default.d下面的php.conf在安装好php后可以访问php文件的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;

location ~ \.(php|phar)(/.*)?$ {
fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;

fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-fpm;
}

现在已经配置好了Nginx的伪装网站,让上面设置的伪装网站可以访问。进入到/var/www目录,这个是存放网站的目录,可以自定义更改。新建v2ray目录,给目录授权。

1
2
3
4
cd /var/www
mkdir v2ray
chown www:www -R /var/www/v2ray
ls -l

你可以在/var/www/v2ray下面上传一个PHP的网站程序。使伪装网站看起来很真实的样子。达到伪装效果。好了Nginx的配置到这里就完毕了Nginx+TLS+WS就配置完毕了。

详细解读v2ray的config.json配置文件

v2ray的config.json配置文件,上面配置nginx时,ws的目录是gogobox,下面配置v2ray时,目录path要保持一致。
你可以在SSH下面通过VI命令打开配置

1
vi /usr/local/etc/v2ray/config.json

也可以通过FTP工具登录服务器修改文件配置。
下面是config.json文件的例子。将端口和UUID还有额外ID修改成你安装时的数值。

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
{
"inbounds": [{
"port": 10086, //自定义端口号,1000-65500之间,不要与其它端口冲突。如果使用TSL+WS方式,客户端的端口要修改成443,客户端连接需要用到
"listen": "127.0.0.1",
"protocol": "vmess", //使用vmess协议
"settings": {
"clients": [
{
"id": "7da5788d-6060-4cb0-83db-8237e37c2f9c", //UUID,随即生成的ID。客户端连接需要用到
"level": 1,
"alterId": 1 //额外ID,安装时默认生成。客户端连接需要用到
}
]
},
"streamSettings": {
"network": "ws", //采用WS(WebSocket)协议传输
"wsSettings": {
"path": "/gogobox" //自定义WS路径,与Nginx配置相同,客户端连接需要用到
}
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}

到这里v2ray下Nginx+TLS+WebSocket的搭建就完成了,选择你对应的客户端来连接就可以安全访问互联网了。
最后,如果你的防火墙和SELinux还开着,请关闭防火墙与SELinux。如果你觉得关闭防火墙不安全,也可以自行开放端口。
v2ray客户端下载地址:V2Ray客户端下载大全 Windows/Linux/Mac/Android/IOS

最后说一下鸡肋的CDN!

鸡肋鸡肋,弃之可惜食之无味!为什么说CDN是鸡肋?
如果你的服务器IP不幸遭遇无法访问,如果使用的Google服务器的话,很方便,重新申请一个IP绑定到服务器上,然后域名重新解析就可以了。如果换IP不是那么方便,而且还想继续使用服务器的话,那么就需要用到CDN服务了。
cloudflare的免费CDN服务
CDN可以将用户的客户端请求指向到距离最近的服务器节点上,每个节点都是不同运营商的IP,例如北方地区节点IP是联通的,南方地区节点IP是电信的,节点IP也取决于CDN服务器在各地的布点情况,CDN本来是用于解决运营商之间网站访问速度的,但是在V2Ray中,可以利用其内容分发的特点,将真实的服务器ip隐藏在CDN节点IP的后面。
CDN这么好为什么还要说CDN是鸡肋呢?这是因为用户通过v2ray访问的内容需要先经过CDN服务器,然后CDN服务器将内容再分发给节点服务器,节点服务器再返回到用户的客户端上。绕了一大圈,有时候可能会绕大半个地球。这样会增大访问延迟,使v2ray的访问速度变慢。
但是如果你使用收费的CDN服务的话,请忽略以上内容。上面说的是国外的免费CDN。国外的收费CDN是按照美元结算的。豪横的请略过!有人又问了,为什么不用国内的CDN呢?本身使用v2ray就是用来保护个人隐私的。你懂的!
WebSocket+Nginx+TLS的模式已经足够安全了。如果你一定要使用CDN的话,你可以将域名的dns解析到cloudflare.com
现在很多的境外网站都已经支持了中文,也方便了用户操作!这里说的免费CDN是利用cloudflare.com的免费CDN服务。
将域名的NS服务器更改成下面的内容

1
2
gina.ns.cloudflare.com
jerome.ns.cloudflare.com

cloudflare中重新解析你的域名,添加A记录到你的服务器IP。然后在后面后一个云朵的小开关,点击小开关变成彩色后,免费的CDN就开启成功了,如果想关闭CDN,再次点击云朵,云朵变成黑白的就是已经关闭了。
cloudflare的免费CDN服务
好了,就写到这里了,有什么不懂的可以在下面的评论区留言。按照上面介绍的搭建v2ray,一般不会遇到什么麻烦!遇到的坑已经填平了,完全是技术备份,请勿转载!

订阅
提醒
guest
0 评论
内联反馈
查看所有评论