v2ray 是一个模块化的代理工具,支持 VMess,Socks,HTTP,Shadowsocks 等等协议,并且附带很多高级功能,HTTP,TLS 等等。

关键词限制,全文 v2ray 中的 y 为全角字符,运行相关命令时请自行替换为半角的 y

前提条件

  • 境外 VPS 一台,并已编译安装 Nginx
  • 域名一个,解析至该 VPS
  • 基本的 Linux 技巧

测试环境

Domain Name

www.test.org

CentOS

LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.3.1611 (Core)
Release:    7.3.1611
Codename:   Core

安装

V2Ray

安装 V2Ray

以下指令假设已在 su 环境下,如果不是,请先运行 sudo su

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:域名数据文件 此脚本会配置自动运行脚本。自动运行脚本会在系统重启之后,自动运行 V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。

设置开机启动

systemctl enable v2ray

SSL

安装 EPEL

yum -y install epel-release

EPEL 的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL 之后,就相当于添加了一个第三方源。

安装 certbot

yum -y install certbot

certbot 是一款让你的网站自动部署 Let's Encrypt 颁发的免费数字证书

申请 SSL 证书

certbot certonly --standalone -d www.test.org

如果申请成功,证书和私钥路径如下:

/etc/letsencrypt/live/www.test.org/fullchain.pem
/etc/letsencrypt/live/www.test.org/privkey.pem

配置

Nginx

打开域名的配置文件

server {
  listen 80;
  listen 443 ssl http2;
  ssl_certificate /etc/letsencrypt/live/www.test.org/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/www.test.org/privkey.pem;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name www.test.org;
  access_log /data/wwwlogs/www.test.org_nginx.log combined;
  index index.html index.htm index.php;
  root /data/wwwroot/www.test.org;
  if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

  include /usr/local/nginx/conf/rewrite/other.conf;
  #error_page 404 /404.html;
  #error_page 502 /502.html;

  location /ray {
    proxy_pass       http://127.0.0.1:23333;
    proxy_redirect             off;
    proxy_http_version         1.1;
    proxy_set_header Upgrade   $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host      $http_host;
  }
}

V2Ray

备份配置文件

cp /etc/v2ray/config.json /etc/v2ray/config.json_bak

编辑配置文件

vi /etc/v2ray/config.json
{
  "inbounds": [
    {
      "port": 23333,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
            "alterId": 4
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

id 为 UUID 可以用这个网站生成:https://www.uuidgenerator.net/
服务端配置来说,主要关心 inbound 中配置,包括端口,协议,和 id 以及 alterId。这些配置需要和客户端一致。
当需要多人使用时,clients 中可以配置多个。

v2ray 支持以下协议,默认的协议为 VMess

  • Blackhole
  • Dokodemo-door
  • Freedom
  • HTTP
  • Shadowsocks
  • Socks
  • VMess

Linux 安全设置

防火墙 firewalld

关闭防火墙或者开放端口

关闭防火墙

systemctl stop firewalld.service

开放端口

添加

firewall-cmd --zone=public --add-port=443/tcp --permanent

--permanent 永久生效,没有此参数重启后失效。

重新载入

firewall-cmd --reload

SELinux

关闭 SELinux

vi /etc/selinux/config
SELINUX=disabled
setenforce 0

SELinux 是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。

启动

systemctl start v2ray
systemctl start nginx

查看状态

systemctl status v2ray
systemctl status nginx

客户端

Windows客户端:

  • V2RayW
  • V2RayN
  • V2RayS
  • Clash

Android客户端:

  • V2RayNG
  • BifrostV

MacOS客户端

  • V2RayX
  • V2RayU
  • ClashX

iOS(iPhone/iPad)客户端:

  • Shadowrocket
  • i2Ray
  • Kitsunebi
  • pepi
  • Quantumult

国区 App Store 搜索不到,可使用美区账户,用户名 tangyuan9102@gmail.com ,密码 QWER1234poiu 登录app store再尝试。

关于客户端的配置,这里以 V2RayX 举例:

  • Address: 你的服务器IP/地址,后边的是端口,对应服务器配置文件内 inbound 部分的 port
  • User ID: 服务器配置文件内 inbound 部分的 ID
  • alterId: 服务器配置文件内 inbound 部分的 alterId

备注

  • V2Ray 的客户端 Core 和服务端 Core 版本需要一致。
  • V2Ray 要求客户端与服务器的时间差不超过1分钟(与时区无关)。
  • 本教程仅供学习交流,请勿违反国家法律法规,否则后果自负!

V2Ray+WebSocket+TLS+Nginx 配置及使用的更多相关文章

  1. vps被封逃逸_v2+cloudflare+websocket+tls+nginx

    每逢重大节日,总有那么一大部分vps凉凉,以下为能正经正常使用vps,无奈之举,此法由于多层代理,夜间速度会有影响,白天感受不明显. 由于博客园内容审查,v2_ray 中间的 下划线为分隔符,相关链接 ...

  2. [nginx][tls] nginx配置https与ssl/tls的sni的方法

    一 https的sni配置方法 http {       }       server {               listen 443 ssl;               server_nam ...

  3. nginx服务器配置/websocket nginx 配置笔记

    server { listen 80; server_name xxx.com; # add_header '*' ; location /u/ { # 反向代理透传客户端ip proxy_set_h ...

  4. nginx配置websocket

    有时候我们需要给websocket服务端做一下nginx的配置,比如需要给websocket服务端做负载均衡,或者,有些系统要求访问websocket的时候不能带端口,这时候我们就需要用nginx来进 ...

  5. 从配置websocket理解nginx

    原文地址:http://www.niu12.com/article/2 今天由于写了一个简单的基于h5 websoceket的聊天室,再本地都是好好了.     但是上到服务器后就发现无法行的通, 查 ...

  6. 在vue中如何使用WebSocket 以及nginx代理如何配置WebSocket

    WebSocket WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信.浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输. 浏览器支持情况 现 ...

  7. Nginx配置websocket的安全协议wss

    //nginx配置wss访问方式 map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream webso ...

  8. WebSocket 结合 Nginx 实现域名及 WSS 协议访问

    简单了解一下 WebSocket 现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器 ...

  9. Nginx配置各种响应头防止XSS,点击劫持,frame恶意攻击

    为什么要配置HTTP响应头? 不知道各位有没有被各类XSS攻击.点击劫持 (ClickJacking. frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面.为此一直都在搜寻相关防 ...

随机推荐

  1. CRF 详细推导、验证实例

    逐帧softmax CRF主要用于序列标注问题,可以简单理解为是给序列中的每一帧都进行分类,既然是分类,很自然想到将这个序列用CNN或者RNN进行编码后,接一个全连接层用softmax激活,如下图所示 ...

  2. Http Header的Transfer-Encoding

    Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」.实际上,HTTP 协议中还有另外一个头部与编码有关:Content-Encoding(内容编码).Content ...

  3. C# shell32.dll 的用法

    1 首先要使用shell32  请在项目引用中添加shell32.dll 的引用  (备注:该引用是系统dll文件 在C:\Windows\System32  目录下 可以自行拷贝到项目中) priv ...

  4. sql server pivot

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[YearSalary]( [year] [int] NULL, ...

  5. ASP.NET MVC IOC依赖注入之Autofac系列开篇

    Autofac为IOC组件,实现控制反转,主要结合面向接口编程,完成较大程度的解耦工作. 使用IOC,必须面向接口编程,所谓的面向接口编程,即程序中依赖于抽象,而不依赖于具体实现. 需要所有的业务逻辑 ...

  6. linux下grep命令的使用实例

    #多文件查询grep leo logs.log logs_back.log #查找即包含leo又包含li的行grep leo logs.log | grep li #查找匹配leo或者匹配li的行gr ...

  7. Python、PyCharm、django环境搭建

    本文又名—— 响应式页面——从无到有(一) 事情是这样的,期末小组作业,需要我把大佬们写的页面搞成响应式的,但是我连py都没用过,只好现学…… 文章目录 一.前言 1.1 环境介绍 1.2 前期尝试 ...

  8. MySQL通过SHOW TABLE STATUS查看库中所有表的具体信息

    有时候我们想看下指定库下所有表的使用情况,比如,查询表的Table大小,什么时候创建的,数据最近被更新的时间(即最近一笔insert/update/delete的时间).这些信息对我们进行库表维护很有 ...

  9. emacs 缩进

    emacs提供一些编码风格,可以使用M-x c-set-style来选择你喜欢的编码风格. Possible completions are: awk bsd cc-mode ellemtel gnu ...

  10. 5-2可视化库Seaborn-调色板

    In [1]: import numpy as np import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline ...