Vless搭建以及X-UI
Vless搭建以及X-UI
Miyako介绍
本文介绍Vless以及XTLS的原理,XTLS被探测原因以及Vless+ws+tls+web+cdn通过X-UI进行搭建。
Vless和xtls
相对Vmess,无需额外加密以及校对时间。在进行传输时,Vmess在对数据包加上头部的同时会对后续进行加密,但是Vless只添加了头部而不进行加密。因此数据包经过Vless时的组成为:
- Vless头部
- google.com
- 搜索内容(首先和google通过代理进行了tls连接,内容通过tls进行了加密)
由于直接发送会暴露访问的网址(google),除了通过tls进行全部加密之外,也可以用xtls进行加密,他只会对搜索内容之前的小部分内容进行加密,因此效率更高,随后数据包加上VPS的域名进行传输。
不过xtls加密方式为tls1.3,而搜索内容一般时用tls1.2进行加密,这个则是其可以被精准探测的原因。
当数据包传到服务器时,首先确定Vless协议和id正确后,即可帮我们去访问google。
若我们发送的是trojan数据包,服务器端会将数据包回落到trojan客户端的监听的端口上。
Vless+xtls+回落搭建(trojan)
安装Xray:
1 | bash -c "$(curl -L github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u root |
启动v2ray:systemctl start xray.service
重启v2ray:systemctl restart xray.service
v2ray状态:systemctl status xray.service
申请证书:
安装acme:curl https://get.acme.sh| sh
安装socat:apt install socat
添加软链接:ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
切换CA机构:acme.sh --set-default-ca --server letsencrypt
申请证书: acme.sh --issue -d 你的域名 --standalone -k ec-256
安装证书: acme.sh --installcert -d 你的域名 --ecc --key-file /usr/local/etc/xray/server.key --fullchain-file /usr/local/etc/xray/server.crt
xray配置文件:
1 | { |
通过X-UI面板实现Vless+ws+tls+web+cdn
X-UI安装脚本:
1 | bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) |
输入y后设置用户名,密码以及访问的端口(关闭防火墙或者开启端口)。
随后访问面板,创建vless节点,端口选择80(选择http时才能套CDN)选择ws,创建完成后,即可复制到本地的v2rayN当中。
需要套CDN,只需要把域名解析到这个服务器的ip地址上,并且在CF上开启代理即可。
CDN中转
本地首先向CDN服务器发送已经绑定好的域名,如果有,它会检查该域名绑定的ip地址,确认ip后,它会帮我们把数据转交给服务器。但是它只能转发特定端口(80)或特定协议的数据(http)。
切换CDN服务器
cloudflare-cdn-ip段点击后可以查看IPv4
文本列表的形式提供。
通过搜索cidr计算器即可得到起始ip和范围。可以通过ping.pe观察ip是否工作还是国内墙了。选择一个可以ping通的ip,在v2rayN上可以进行切换。把地址换成CDN的ip地址,下方的伪装域名写上自己的域名。
优选ip即是在ip段中挑选ip进行ping,按延迟进行排列,排序完成后连接CDN服务器,下载文件观察下载速度,返回最快的ip地址。项目地址为CF优选ip。
但是如果直接Vless+ws+CDN的话数据是明文的,有很大被发现的风险,因此需要套tls。只需要在本地v2rayN上把端口改成443(默认走https,自动配置了tls),并且把传输安全加上tls即可,而服务器端则不需要准备证书。此时本地到CDN的数据是套了tls的,而CDN到服务器是走明文的,但CDN到服务器是没有防火墙的,因此不需要配tls和申请证书了。
但是传输协议想使用gRPC或者http2的话,CDN到服务器需要tls加密,因为二者都默认需要tls。关于gRPC,如果传输协议为grpc,那么在CF上,网络那边需要把gRPC勾选。
实现Vless+ws+tls+web+cdn流程
- 在服务器上安装X-UI面板,X-UI面板内设置路径加载
- 安装Ngnix修改配置文件(/ray路径时转交给8388端口,/xui时为访问界面,默认为伪装页面),无需证书
- 创建vless节点,监听127.0.0.1:8388,传输为ws,路径为/ray,关闭sniffing
- 复制到v2rayN里,把地址修改为域名或者优选ip(填写伪装域名),端口为80或者443(加tls)
下载Nginx:
1 | 安装nginx: |
随后修改Nginx配置:
1 | vim /etc/nginx/nginx.conf |
Ngnix配置文件:
1 | user www-data; |
由于不同的拥塞控制算法会导致不同的带宽利用率,相对来说BBR算法带宽利用率较高。
查询当前使用的TCP拥塞控制算法:
1 | sysctl net.ipv4.tcp_congestion_control |
启用BBR TCP拥塞控制算法:
1 | echo "net.core.default_qdisc=fq">> /etc/sysctl.conf |
linux系统内核低于4.9则没有内置BBR,查看linux系统版本:
1 | uname -r |