MrSheep

V2Ray websocket(ws)+tls+Nginx分流+BBR(锐速)+cdn+网站(如typecho)
什麼是V2RayV2Ray官方地址:v2ray.comProject V 是一个工具集合,它可以帮助你打造专属的基...
扫描右侧二维码阅读全文
02
2018/09

V2Ray websocket(ws)+tls+Nginx分流+BBR(锐速)+cdn+网站(如typecho)

什麼是V2Ray

V2Ray官方地址:v2ray.com
Project V 是一个工具集合,它可以帮助你打造专属的基础通信网络。Project V 的核心工具称为V2Ray,其主要负责网络协议和功能的实现,与其它 Project V 通信。V2Ray 可以单独运行,也可以和其它工具配合,以提供简便的操作流程。

主要特性

摘自v2ray.com

  • 多入口多出口: 一个 V2Ray 进程可并发支持多个入站和出站协议,每个协议可独立工作。
  • 可定制化路由: 入站流量可按配置由不同的出口发出。轻松实现按区域或按域名分流,以达到最优的网络性能。
  • 多协议支持: V2Ray 可同时开启多个协议支持,包括 Socks、HTTP、Shadowsocks、VMess
    等。每个协议可单独设置传输载体,比如 TCP、mKCP、WebSocket 等。
  • 隐蔽性: V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰。
  • 反向代理: 通用的反向代理支持,可实现内网穿透功能。
  • 多平台支持: 原生支持所有常见平台,如 Windows、Mac OS、Linux,并已有第三方支持移动平台。

注意事项

公关必说:本博客只提供教程,不对任何违法行为负责,谢谢

  • 有一台vps
  • 熟悉相关法律
  • 有一个解析到你vps的域名
  • 熟悉linux基本命令

可爱的分割线

更新日誌

12-22-2018
添加WebSocket報Bad Request的解決方法

01-08-2019
添加multi-v2ray腳本的相關部分
移除一些老舊的指令

食用教程

注意:我使用的是CentOS 7.5,不同系统的包管理器不相同

更新

yum update -y

安装宝塔面板以及LNMP环境

宝塔安装

其实你要是想安装其他的面板也行,但是选到免费的还做的不错的也就宝塔了
访问宝塔官网根据你的系统选择安装版本
Centos安装命令:
5.x

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

6.x安装

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

Ubuntu/Deepin安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh

Debian安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh

Fedora安装命令:

wget -O install.sh http://download.bt.cn/install/install.sh && bash install.sh

LNMP

为了简单,安装完宝塔面板之后直接登录面板后台,根据提示,一键安装Nginx、MySQL、PHP、PhpAdmin
说实话:单核的u安装真的久,而且某些商家限制长时间cpu使用

安装v2ray

官方安裝

如果你想要使用管理腳本等,請直接跳過本節
使用官方安裝腳本:www.v2ray.com/chapter_00/install.html#linuxscript
請使用root用戶運行一下腳本
运行下面的指令下载并安装 V2Ray。当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon

bash <(curl -L -s https://install.direct/go.sh)
此脚本会自动安装以下文件:

/usr/bin/v2ray/v2ray:V2Ray 程序;
/usr/bin/v2ray/v2ctl:V2Ray 工具;
/etc/v2ray/config.json:配置文件;
/usr/bin/v2ray/geoip.dat:IP 数据文件
/usr/bin/v2ray/geosite.dat:域名数据文件
配置/etc/v2ray/config.json即可

使用v2ray.FUN的一键腳本,命令如下

wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/v2ray.fun/master/install.sh && bash install.sh

選擇你需要的主端口,例如:12345
選擇你的web端用戶名,例如:GfwF**K
選擇你的web端密碼,例如:GfwF**K

要是你的服務莫名的無法後臺運行,請參考下面方法

cd /usr/local/V2ray.Fun
nohop ./start.sh &
登錄面板

默認登錄地址:你的ip:5000,或者是你自定義的端口,請注意開放防火牆
選擇加密方式,可以選auto
更改传输方式为websocket流量,輸入你已經解析好的域名

這裏不需要開啓tls

因爲Nginx分流实则服务端不需要写入,所以采用下文手动申请ssl

Multi-V2Ray

項目地址:https://github.com/Jrohy/multi-v2ray
運行命令安裝,

source <(curl -sL https://git.io/fNgqx)

部分VPS安裝完成之後提示找不到v2ray命令,請運行/usr/local/multi-v2ray/v2ray

命令行參數:
   v2ray -h                   查看帮助
   v2ray -v                   查看版本信息
   v2ray start                启动 V2Ray
   v2ray stop                 停止 V2Ray
   v2ray restart              重启 V2Ray
   v2ray status               查看 V2Ray 运行状态
   v2ray log                  查看 V2Ray 运行日志
   v2ray update               更新 V2Ray 到最新Release版本
   v2ray update [version]     更新 V2Ray 到特定版本
   v2ray update.sh            更新 multi-v2ray 脚本
   v2ray update.sh [version]  更新 multi-v2ray 到特定版本
   v2ray add                  新增mkcp + 随机一种 (srtp | wechat-video | utp) header伪装的端口(Group)
   v2ray add [wechat|utp|srtp|dtls|wireguard|socks|mtproto|ss]     新增一种协议的组,端口随机,如 v2ray add utp 为新增utp协议
   v2ray del                  删除端口组
   v2ray info                 查看配置
   v2ray port                 修改端口
   v2ray tls                  修改tls
   v2ray tfo                  修改tcpFastOpen
   v2ray stream               修改传输协议
   v2ray stats                iptables流量统计
   v2ray clean                清理日志

更多請參考https://github.com/Jrohy/multi-v2ray/wiki

关于DNS服务商

推荐的DNS服务商(免费):GeoscalingCloudflare(仅使用DNS)
不建议使用国内解析服务,VPS提供的DNS服务(例如Conoha的DNS解析)
免费的对于建站和代理来说其实都是够用的,所以不推荐使用付费服务

添加網站

登錄寶塔後臺,添加網站,源碼部署選擇typecho或者是其他
如果你只是單純的想使用域名,可以直接添加新網站

SSL

使用寶塔申請SSL

無需停止你的Nginx運行,申請證書後在Nginx里最后一个 }前面填入

location /ws {   #/ws为v2ray路径,随便填写比如/v2ray/
             proxy_redirect off;
             proxy_pass http://127.0.0.1:9000; #你的v2ray端口
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header Host $http_host;            
          }

注意:有部分老版本需要寫成/ws/

最後的配置文件大概是這個樣子的

server
{
    listen 80;
    listen 443 ssl http2;
    server_name 你的域名 *.你的域名;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/你的域名;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    /etc/letsencrypt/live/你的域名/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/你的域名/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;

    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    error_page 404 /404.html;
    error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-72.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/你的域名.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log off; 
    }
    access_log  /www/wwwlogs/你的域名.log;
    error_log  /www/wwwlogs/你的域名.error.log;
             location /ws/ {   
             proxy_redirect off;
             proxy_pass http://127.0.0.1:你的端口; 
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header Host $http_host;            
          }
}

我直接複製了整個配置文件,懶

使用acme.sh

我真的很不喜歡這個東西
安装 acme.sh

curl  https://get.acme.sh | sh
source ~/.bashrc
   

利用BT面板,停止Nginx运行

生成证书



~/.acme.sh/acme.sh --issue -d x.com --standalone -k ec-256 

安装证书和密钥

~/.acme.sh/acme.sh --installcert -d x.com --fullchainpath /etc/v2ray/v2ray.crt --keypath /etc/v2ray/v2ray.key

注意修改上述x.com为自己域名

在配置文件最后一行添加如下:

  server {
    listen  443 ssl; #若要透过其他转发https给v2ray服务端口9000,请自行修改443为其他监听端口
    ssl on;
    ssl_certificate       /etc/v2ray/v2ray.crt; #证书路径
    ssl_certificate_key   /etc/v2ray/v2ray.key; #证书路径
    ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers           HIGH:!aNULL:!MD5;
    server_name           x.com; #修改自己域名
    location /ws {   #/ws为v2ray路径
    proxy_redirect off;
    proxy_pass http://127.0.0.1:9000; #你的v2ray端口
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    }
  }

添加v2ray的ws_path路径

編輯/etc/v2ray/config.json
找到

"wsSettings": {
   "headers": {
   "host": "x.com"
          }, 
   "path": "/ws/", # 在单引号 ""里添加/ws/或是你的path

重啓

重啓Nginx,V2ray
Nginx可以通過面板重啓,V2ray可以使用一下命令,當然web端也是可以的

service v2ray restart

记得在BT面板的安全选项开放上述端口,教程里是443和9000

BBR

更換內核

如果你不需要,請直接跳過,建議使用方法1

方法1
//导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
//安装 elrepo 的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
//安装内核
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
//查看系统启动项:
cat /boot/grub2/grub.cfg |grep menuentry
//设置最新版本内核为默认启动:
grub2-set-default 'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'

此时,查看默认启动的系统版本

grub2-editenv list

显示为'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)',重启之后再次查看 uname -r

方法2

其實類似
首先,我们为系统增加elrepo源:

cat > /etc/yum.repos.d/elrepo.repo << EOF
[elrepo-kernel]
name=ELRepo.org Community Enterprise Linux Kernel Repository - el7
baseurl=http://elrepo.org/linux/kernel/el7/\$basearch/
http://mirrors.coreix.net/elrepo/kernel/el7/\$basearch/
http://jur-linux.org/download/elrepo/kernel/el7/\$basearch/
http://repos.lax-noc.com/elrepo/kernel/el7/\$basearch/
http://mirror.ventraip.net.au/elrepo/kernel/el7/\$basearch/
enabled=1
gpgcheck=0
EOF

然后,安装elrepo替换最新内核及grub2

yum -y install kernel-ml grub2

查看最新内核是否安装成功

ls -l /boot/vmlinuz*

在運行完之後,編輯/etc/default/grub文件,變更爲GRUB_DEFAULT=0

mkdir /boot/grub
grub2-mkconfig -o /boot/grub/grub.cfg

之後還是重啓

uname -r

開啓BBR

cat >>/etc/sysctl.conf << EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

再继续内核参数:

sysctl -p

返回類似結果

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

最后保险起见,复核一下BBR是否生效:

sysctl net.ipv4.tcp_available_congestion_control

lsmod | grep bbr

返回

net.ipv4.tcp_available_congestion_control = reno cubic bbr

tcp_bbr                20480  41 

使用CDN

免費的推薦cloudflare,但是肯定會影響速度,所以不赞成先cdn,因为可能会影响申请ssl,所以建议以上都完毕后再更换为cdn服务;
若是CloudFlare,那么crypto选项里,SSL,选择Full(strict),然后可全部勾选当页选项。

WebSocket解決Bad Request

轉自从零开始安装爱国工具指南(十四)V2Ray补充、WebSockets模式补完

1.修改nginx.conf,或者是寶塔的Nginx配置

文件位于/usr/local/nginx/conf/

在代码http{}段里添加一句

proxy_intercept_errors on;

保存退出即可

2.修改vhost文件,寶塔面板中域名配置文件

文件位于/usr/local/nginx/conf/vhost/

在443端口的配置里加一句,比如說我跳轉回到mrsheep.win

error_page 400 = https://www.mrsheep.win;

保存退出重启nginx

service nginx restart

或者面板重啓

客户端设置

端口:443(非9000)
address:你的域名(非ip)
websocket(ws)path(路径):/ws
勾选tls

示例

服務端

{
  "inbound": {
    "streamSettings": {
      "network": "ws", 
      "wsSettings": { 
        "headers": {
          "host": "你的域名"
        },
      "path": "/ws/"
      }
    }, 
    "protocol": "vmess", 
    "port": 你的端口, 
    "settings": {
      "clients": [
        {
          "alterId": 64, 
          "security": "auto", 
          "id": "你的uuid", 
          "level": 1
        }
      ]
    }
  }, 
  "outboundDetour": [
    {
      "tag": "blocked", 
      "protocol": "blackhole", 
      "settings": {}
    }
  ], 
  "outbound": {
    "protocol": "freedom", 
    "settings": {}
  }, 
  "log": {
    "access": "/var/log/v2ray/access.log", 
    "loglevel": "info", 
    "error": "/var/log/v2ray/error.log"
  }, 
  "routing": {
    "settings": {
      "rules": [
        {
          "ip": [
            "0.0.0.0/8", 
            "10.0.0.0/8", 
            "100.64.0.0/10", 
            "127.0.0.0/8", 
            "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"
          ], 
          "type": "field", 
          "outboundTag": "blocked"
        }
      ]
    }, 
    "strategy": "rules"
  }
}

客戶端

{
  "policy" : {
    "levels" : {
      "0" : {
        "uplinkOnly" : 0
      }
    }
  },
  "dns" : {
    "servers" : [
      "localhost",
      "8.8.8.8"
    ]
  },
  "outboundDetour" : [
    {
      "protocol" : "freedom",
      "tag" : "direct",
      "settings" : {

      }
    }
  ],
  "inbound" : {
    "listen" : "0.0.0.0",
    "port" : 1081,
    "protocol" : "socks",
    "settings" : {
      "auth" : "noauth",
      "udp" : false,
      "ip" : "127.0.0.1"
    }
  },
  "inboundDetour" : [
    {
      "listen" : "0.0.0.0",
      "allocate" : {
        "strategy" : "always",
        "refresh" : 5,
        "concurrency" : 3
      },
      "port" : 8001,
      "protocol" : "http",
      "tag" : "httpDetour",
      "domainOverride" : [
        "http",
        "tls"
      ],
      "streamSettings" : {

      },
      "settings" : {
        "timeout" : 0
      }
    }
  ],
  "log" : {
    "error" : "\/var\/folders\/jt\/dc88j3317917cz1n8mxqj8jc0000gn\/T\/cenmrev.v2rayx.log.C2EAD579-EFCE-4BEC-91A2-61E4760E1219\/error.log",
    "loglevel" : "debug",
    "access" : "\/var\/folders\/jt\/dc88j3317917cz1n8mxqj8jc0000gn\/T\/cenmrev.v2rayx.log.C2EAD579-EFCE-4BEC-91A2-61E4760E1219\/access.log"
  },
  "routing" : {
    "strategy" : "rules",
    "settings" : {
      "domainStrategy" : "IPIfNonMatch",
      "rules" : [
        {
          "domain" : [
            "localhost"
          ],
          "type" : "field",
          "outboundTag" : "direct"
        },
        {
          "type" : "field",
          "outboundTag" : "direct",
          "ip" : [
            "geoip:private"
          ]
        }
      ]
    }
  },
  "outbound" : {
    "sendThrough" : "0.0.0.0",
    "mux" : {
      "enabled" : false,
      "concurrency" : 8
    },
    "protocol" : "vmess",
    "settings" : {
      "vnext" : [
        {
          "address" : "你的域名",
          "port" : 443,
          "users" : [
            {
              "id" : "你的UUID",
              "alterId" : 64,
              "security" : "auto",
              "level" : 0
            }
          ],
          "remark" : "這個"
        }
      ]
    },
    "streamSettings" : {
      "wsSettings" : {
        "path" : "\/ws\/",你的path
        "headers" : {
          "Host" : "你的域名"
        }
      },
      "tlsSettings" : {
        "serverName" : "你的域名",
        "allowInsecure" : false
      },
      "httpSettings" : {
        "path" : "",
        "host" : [
          ""
        ]
      },
      "tcpSettings" : {
        "header" : {
          "type" : "none"
        }
      },
      "kcpSettings" : {
        "header" : {
          "type" : "none"
        },
        "mtu" : 1350,
        "congestion" : false,
        "tti" : 20,
        "uplinkCapacity" : 5,
        "writeBufferSize" : 1,
        "readBufferSize" : 1,
        "downlinkCapacity" : 20
      },
      "network" : "ws",
      "security" : "tls"
    }
  }
}

相關地址

https://www.bt.cn/bbs/thread-1186-1-1.html
https://github.com/FunctionClub/v2ray.fun
v2ray項目

客官们支持一下啦,建站维护开销不少

搬瓦工,建站、代理稳如狗,最低19.99刀一年,更有CN2线路等着你>>[传送门]

DigitalOcean大法好,Xeon Gold豪上天,最低5刀一个月,注册充值得10刀,还不快去???[传送门]

Vultr,最低5刀一个月,全球15节点,注册充值得10刀,全SSD Kvm机器[传送门]

Cloudcone价格低,直连线路大法好,随时随地放优惠[传送门]

Last modification:March 1st, 2019 at 09:46 pm

3 comments

  1. Sheep

    這是洋蔥留言
    你好啊

  2. 710cc097-24b0-465e-963f-c5b5b1f6aba0

    ...原来是我json的大括号括错位置了

    1. MrSheep
      @710cc097-24b0-465e-963f-c5b5b1f6aba0

      括号的位置是有一点不好找
      但是顺序是没有关系的

Leave a Comment

召唤看板娘