本教程不一定要用于被墙 IP, 你可以使用此教程来防止 IP 被封, 也可以去掉 CDN 转发仅使用 WebSocket + TLS + Nginx 的方式来达到更快速度, 有些服务器可能还会因为使用了 CDN 而更快, 看个人实际情况可做调整.
-
准备一个域名, 可以去 freenom 申请一个免费域名.
-
将申请到的域名交由 CLOUDFLARE 解析, 且将 Status 的状态改为 DNS only(把云朵点灰).
PS: 如果想使用子域名, 则添加一条 A 记录.
建议 Debian 9.x 以上以及 Ubuntu 16.04 以上的系统.
- 使用官方脚本安装.
$ bash <(curl -L -s https://install.direct/go.sh)
配置文件路径: /etc/v2ray/config.json
- 修改配置文件
{
"inbounds": [
{
"port": 10000, //V2Ray 监听端口
"listen":"127.0.0.1", //只监听 127.0.0.1,避免除本机外的机器探测到开放了 10000 端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811", //一个 UUID 组成的密钥
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/ray" //一个路径, 请自定
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
启动 V2Ray(如果多次修改配置则用 service v2ray restart 重启)
$ service v2ray start
查看 V2Ray 状态
$ service v2ray status
- 安装 Nginx 并简单设置一下
$ apt install nginx
配置文件路径: /etc/nginx/sites-available/default
server {
charset utf-8;
listen 80;
server_name mydomain.com;
location / {
proxy_set_header Host www.google.com;
proxy_pass https://www.google.com;
}
}
启动 Nginx
$ nginx
- 安装 acme.sh(用来生成证书)
$ curl https://get.acme.sh | sh
# 此命令会在 ~ 目录生成 .acme.sh 文件夹
$ cd .acme.sh/
- 为网站生成证书
$ acme.sh --issue -d mydomain.com --nginx --force
# .acme.sh 文件夹下有一个 acme.sh 文件 注意不要弄混淆了
- copy/install 证书
$ mkdir /etc/nginx/ssl
# 创建文件夹用于保存证书, 不同的域名创建不同的文件夹避免被覆盖
$ acme.sh --installcert -d <domain>.com \
--key-file /etc/nginx/ssl/<domain>.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "nginx -s reload"
- Nginx 配置(覆盖之前简单设置的配置)
server {
listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/<domain>.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name mydomain.com;
location /ray { # 与 V2Ray 配置中的 path 保持一致
proxy_redirect off;
proxy_pass http://127.0.0.1:10000;#假设WebSocket监听在环回地址的10000端口上
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
重启一次 Nginx
$ nginx -s reload
*不执行这一步则不会使用 "CDN中转", 如 IP 可用则不建议开启, 开启通常会导致减速.
- 在 CLOUNDFLARE 的 Crypto 选项 SSL 设置为 Full.
- 在 CLOUNDFLARE 的 DNS 选项 Status 设置为 DNS and HTTP proxy(CDN)(把云朵点亮).
{
"inbounds": [
{
"port": 1080,
"listen": "127.0.0.1",
"protocol": "socks",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"settings": {
"auth": "noauth",
"udp": false
}
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "mydomain.com",
"port": 443,
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"wsSettings": {
"path": "/ray"
}
}
}
]
}