V2Ray(WebSocket+TLS+Web+CDN)安装配置教程含ipv6/MTProto
1. 背景知识
以下示例中的域名均为www.example.tk
,域名、证书、UUID以及MTProto的密钥请记得替换成自己的
1.1 代理原理
上图为 v2ray v4.0 之前的代理原理图。v2ray v4.1+ 合并了输入输出配置项:
inbounds = inbound + inboundDetour
outbounds = outbound + outboundDetour
- 为便于理解,你可以将上图
inbound
、inboundDetour
视为各种不同的代理方式,全部定义在新版配置文件的inbounds
配置项中,outbounds
亦同理。
1.2 VMess协议
V2Ray 使用 inbound(传入) 和 outbound(传出) 的结构,这样的结构非常清晰地体现了数据包的流动方向,同时也使得 V2Ray 功能强大复杂的同时而不混乱,清晰明了。形象地说,我们可以把 V2Ray 当作一个盒子,这个盒子有入口和出口(即 inbound 和 outbound),我们将数据包通过某个入口放进这个盒子里,然后这个盒子以某种机制(这个机制其实就是路由,后面会讲到)决定这个数据包从哪个出口吐出来。以这样的角度理解的话,V2Ray 做客户端,则 inbound 接收来自浏览器数据,由 outbound 发出去(通常是发到 V2Ray 服务器);V2Ray 做服务器,则 inbound 接收来自 V2Ray 客户端的数据,由 outbound 发出去(通常是如 Google 等想要访问的目标网站)。
无论是客户端还是服务器,配置文件都由两部分内容组成:
inbounds
和outbounds
。V2Ray 没有使用常规代理软件的 C/S(即客户端/服务器)结构,它既可以当做服务器也可以作为客户端。于是我们可以从另一个角度来理解,认为每一个 V2Ray 都是一个节点,inbound
是关于如何与上一个节点连接的配置,outbound
是关于如何与下一个节点连接的配置。对于第一个节点,inbound
与浏览器连接;对于最后一个节点,outbound
与目标网站连接。inbounds
和outbounds
是inbound
和outbound
的集合,意味着每一个 V2Ray 节点都可以有多个入口和出口。
1 | {浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站} |
2. 参考文档
V2Ray官方文档 V2Ray白话文教程 MTProxy官方文档
3. 安装部署WebSocket+TLS+Web+CDN
3.1 准备
3.1.1 端口规划
Port | Listen IP | Use |
---|---|---|
443 | 0.0.0.0 | Nginx Https |
10000 | 127.0.0.1 | V2Ray WebSocket |
8000 | 0.0.0.0 | V2Ray MTProto |
3.1.2 服务器准备
Plan:SPECIAL 20G KVM PROMO V5 - LOS ANGELES - CN2 GIA ECOMMERCE
OS:Centos-7-x86_64-bbr(自带bbr加速)
VPS Type: KiwiVM
3.1.3 申请免费域名
Freenom - A Name for Everyone .tk
.ml
不需要实名 免费一年
域名基本概念
首先说明一下域名的基本概念,你购买的域名是一个二级域名,形式类似于 xxx.后缀,比如 baidu.com、google.com 就是二级域名,com 是后缀。
你可以在你的二级域名基础上添加三级域名,比如 haha.baidu.com、heihei.google.com。甚至是四级或者更多级,比如 haha.heihei.baidu.com、hehe.hehe.hehe.google.com,因为二级域名已经是你的了,所以你想添加什么就添加什么。
光设置一个三级域名还不行,你得把你的域名和你的 IP 地址结合起来,这个 IP 就叫做域名的解析记录,解析记录有许多不同的类型,常用的有 A、AAAA、CNAME 等等。
- A 类型:解析到一个 IPv4 地址
- AAAA 类型:解析到一个 IPv6 地址
- CNAME 类型:解析到另一个域名,由该域名来提供 IP 地址
假设要将三级域名 haha.baidu.com 解析到 IP 地址 123.123.123.123 上,那么通常的做法是,选择添加解析记录,名称设置为 haha,类型设置为 A,解析记录填入 123.123.123.123,设置好之后 haha.baidu.com 就会解析到 123.123.123.123 了
3.1.4 使用免费CDN
127.0.0.1、localhost、0.0.0.0、本机IP地址区别
IP类型
在A类、B类、C类IP地址中,如果主机号是全1,那么这个地址为直接广播地址,它是用来使路由器将一个分组以广播形式发送给特定网络上的所有主机。32位全为1的IP地址“255.255.255.255”为受限广播地址("limited broadcast" destination address),用来将一个分组以广播方式发送给本网络中的所有主机,路由器则阻挡该分组通过,将其广播功能限制在本网内部。
localhost
首先,localhost 就是一个域名,域名指向 127.0.0.1,两者是一样的,如果是 mac,可以在
/etc/hosts
文件中看到这一行。
1
2 > 127.0.0.1 localhost
>
127.0.0.1
127.0.0.1 这个地址通常分配给 loopback 接口,用来测试本机的 TCP/IP 协议栈。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。只要使用这个地址发送数据,则数据包不会出现在网络传输过程中。
0.0.0.0
这个 IP 相当于 java 中的 this,代表当前设备的 IP,可以代表本机的所有 IP 地址。
比如你的一个 tomcat 配置文件中,如果监听的 IP 地址设置了 0.0.0.0,就表示你的这个 tomcat 服务器监听在你本机的所有 IP 地址上,通过任何一个 IP地址 都可以访问到。
如果你本地的 IP 地址有 192.168.1.10,172.16.2.10,那么访问你这个 tomcat 就可以。 http://192.168.1.10:8080/,http://172.16.2.10:8080/ 都可以访问。
如果你的监听地址设置了 192.168.1.10 ,那么将无法通过 http://172.16.2.10:8080/ 进行访问。
本机 IP
至于本机 IP,你可以理解为本机有三块网卡,一块网卡叫做 loopback(这是一块虚拟网卡),另外一块网卡叫做 ethernet (这是你的有线网卡),另外一块网卡叫做 wlan(这是你的无线网卡)。
你的本机 IP 是你真实网卡的 IP,具体来说有线无线各有一个,而 127.0.0.1 是那块叫做 loopback 的虚拟网卡的 IP。
3.1.5 开启SSL
SSL For Free - Free SSL Certificate in Minutes
生成www.example.tk_chain.crt
www.example.tk_key.key
3.1.6 免费获得IPv6访问byr北邮人bt站
工具
3.2 安装部署V2Ray
3.2.1 安装Nginx
sudo yum install nginx
使用 systemctl start|stop|restart|status nginx
控制 Nginx 的运行
3.2.2 配置Nginx
/etc/nginx/conf.d/example.tk.conf
1 | server { |
3.2.3 安装V2Ray
参考V2Ray官方文档:
1 | bash <(curl -L -s https://install.direct/go.sh) |
此脚本会配置自动运行脚本。自动运行脚本会在系统重启之后,自动运行 V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。
脚本运行完成后,你需要:
- 编辑
/etc/v2ray/config.json
文件来配置你需要的代理方式; - 运行
service v2ray start
来启动 V2Ray 进程; - 之后可以使用
service v2ray start|stop|status|reload|restart|force-reload
控制 V2Ray 的运行。
3.2.4 配置V2Ray
3.2.4.1 为V2Ray生成一个UUID
Linux 使用命令
cat /proc/sys/kernel/random/uuid
生成使用V2Ray自带的
v2ctl
工具生成一个新的uuid。1
2$ /usr/bin/v2ray/v2ctl uuid
27e0efcc-8e13-fef1-9e82-febebc469b2b
3.2.4.2 为MTProto生成一个密钥
使用此命令生成 MTProto 代理所需要的用户密钥:openssl rand -hex 16
3.2.4.3 服务器 V2Ray 配置
修改/etc/v2ray/config.json
可以使用 $ /usr/bin/v2ray/v2ray -test -config /etc/v2ray/config.json
检查配置文件
完整配置文件如下:
1 | { |
3.2.4.4 客户端配置文件(供参考)
1 | { |