技术老油条的博客 技术老油条的博客
首页
  • 页面

    • HTML
    • CSS
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • 《TypeScript》笔记
  • Nodejs
  • 博客搭建
  • GitHub技巧
  • 学习
  • 技术文档
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

技术老油条

做个合格的技术人
首页
  • 页面

    • HTML
    • CSS
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • 《TypeScript》笔记
  • Nodejs
  • 博客搭建
  • GitHub技巧
  • 学习
  • 技术文档
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • V2Ray+Nginx+CloudFlare带你走近科学
    • 适用人群
    • 起源
    • 架构
    • 实施
    • 服务端配置
    • 客户端配置
  • 博客搭建

  • 架构
技术老油条
2021-07-02

V2Ray+Nginx+CloudFlare带你走近科学

#

# 适用人群

  1. 需要科学上网的网民
  2. 需要自建科学上网渠道
  3. IP被封了,还想继续科学上网

# 起源

早些时间,大家科学上网基本上都会使用OpenVpn或者Shadowsocks这两种常规方法。随着祖国的崛起,为了让西方的毒药尽量少的荼毒广大抵抗力较低的网民,所以 加强了防护。

西方思想虽然有一些糟粕,但在技术方面不得不承认还是有些精华的。不能因为这样我们就不像他们学习好的东西,这样的做法是不对的。所以希望读了本文之后的一些青年, 在使用了本文所阐述的术之后,能够抵抗住西方文化的毒瘤,对工具善于利用。

早些科学上网的方式,一旦IP被封锁后就面临着要么更换IP,要么就用别人的渠道。总之很不方便。所以本人愿尽我个人绵薄之力,提出另外一种费力些的方式,供大家参考、学习。

# 架构

  • 解决方案 如图所示,架构方案采用V2Ray + WS + Tls + 伪装的解决方式 网络部署图

    • 客户端使用web socker + tls 的方式去尝试使用vmess协议连接服务端
    • 域名解析需要放到cloudflare上去。不使用国内的域名解析服务是因为此时,不出意外的话你的IP已经被墙了
    • cloudflare不仅是DNS解析服务商,同时,它是一个CDN服务商。因此,他可以通过代理模式,隐藏我们服务端的真是IP地址。所以我们可以看到解析出来的IP地址也将不是我们服务器的真实地址。如:
    traceroute www.xxxxxxxxx.com
    traceroute: Warning: www.xxxxxxxx.com has multiple addresses; using xxx.xx.xx.xxx
    traceroute to www.xxxxxxxx.com (xxx.xx.xx.xxxx), 64 hops max, 52 byte packets
    
    1
    2
    3
    • 最后由CDN边缘节点连接真实服务端,进行通信 通过以上方式,能达到一定的IP隐藏作用。妈妈再也不用担心IP被封锁的情况。
  • 该解决方案有利也必然有其弊端

    • 你需要一个域名
    • 你需要一个在国外VPS
    • 整个链接的链路比较长,所以速度将有所减慢
    • websocket的稳定性不高,会出现闪断~

综上所术,要实施改方案的同学请三思。

# 实施

网上也有一键安装的脚本,不过用的是Caddy作为web server, Caddy是由Go语言编写的web server, 不想要折腾的小伙伴请直接传送到: 一键部署v2ray (opens new window)

  • 服务器部署详情 如图所示,服务器内部部署方案 服务器部署

# 服务端配置

  • Nginx配置参考 建议使用Docker进行安装。 有ssl证书的开启ssl,没有也没有关系
server {
    listen       443 ssl;
    listen  [::]:443 ssl;
    server_name  你的域名;

    #ssl on; 看着改
    #ssl_certificate /etc/nginx/conf.d/ssl/xxxx.pem;
    #ssl_certificate_key /etc/nginx/conf.d/ssl/xxxxx.key;
    #ssl_session_timeout 5m;
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    #ssl_prefer_server_ciphers on;
    #access_log  /var/log/nginx/host.access.log  main;	
    root /var/www/ray;
    location /ray { #这个路径在客户端处要用到
	    proxy_redirect off;
	    proxy_pass http://localhost:v2ryPort; #改!
	    proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection "upgrade";
	    proxy_set_header Host $host;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

server{
    listen 80;
    listen  [::]:80;
    server_name 更换为你的域名;
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  • V2Ray Core

V2Ray Core (opens new window) 传送门在此,怎么安装就不在这里赘述了。

  • V2Ray 配置参考

    {
      "log":{
        "loglevel":"info",
        "access":"/var/log/v2ray/access.log",
        "error":"/var/log/v2ray/error.log"
      },
      "routing":{
        "domainStrategy":"Asls",
        "rules":[
          {
            "type":"field",
            "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/15",
              "198.18.0.0/15",
              "198.51.100.0/24",
              "203.0.113.0/24",
              "::1/128",
              "fc00::/7",
              "fe80::/10"
            ],
            "outboundTag":"block"
          }
        ]
      },
      "inbounds":[
        {
          "listen":"服务器地址/localhost",
          "port":端口,
          "protocol":"vmess",
          "settings":{
            "clients":[
              {
                "id":"填入ID,一般使用uuid生成",
                "level":1,
                "alterId":64
              }
            ]
          },
          "streamSettings":{
            "network":"ws",
            "security":"none",
            "wsSettings":{
              "path":"你设置的path", 
              "headers":{
                "Host": "域名"
              }
            },
            "tlsSettings":{
              "allowInsecure":true
            }
          }
        }
      ],
      "outbounds":[
        {
          "protocol":"freedom",
          "tag":"direct"
        },
        {
          "protocol":"blackhole",
          "tag":"block"
        }
      ],
      "transport":{
        "sockopt":{
          "tcpFastOpen":true
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
  • V2Ray Configuration Examples

V2Ray 配置官方参考 (opens new window)

  • CloudFlare 配置参考
  1. 加A记录以及设置为代理模式。
  2. 设置全SSL代理 如图所示。

# 客户端配置

  • V2Ray Client 配置
{
  "outbounds" : [
    {
      "sendThrough" : "0.0.0.0",
      "mux" : {
        "enabled" : false,
        "concurrency" : 8
      },
      "protocol" : "vmess",
      "settings" : {
        "vnext" : [
          {
            "address" : "填入域名",
            "users" : [
              {
                "id" : "填入ID",
                "alterId" : 64,
                "security" : "auto",
                "level" : 1
              }
            ],
            "port" : 443
          }
        ]
      },
      "tag" : "tagName",
      "streamSettings" : {
        "network" : "ws",
        "tlsSettings" : {
          "allowInsecure" : true
        },
        "security" : "tls",
        "wsSettings" : {
          "path" : "\/ray" //这个PTAH比较关键
        }
      }
    },
    {
      "tag" : "directly",
      "protocol" : "freedom"
    }
  ],
  "routings" : [
    {
      "name" : "all_to_main",
      "domainStrategy" : "AsIs",
      "rules" : [
        {
          "type" : "field",
          "outboundTag" : "main",
          "port" : "0-65535"
        }
      ]
    },
    {
      "domainStrategy" : "AsIs",
      "rules" : [
        {
          "type" : "field",
          "ip" : [
            "geoip:private"
          ],
          "outboundTag" : "direct"
        },
        {
          "type" : "field",
          "outboundTag" : "main",
          "port" : "0-65535"
        }
      ],
      "name" : "some rule set"
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
编辑 (opens new window)
#nginx#v2ray#cloudflare#vpn#shadowsocks
解决百度无法收录搭建在GitHub上的个人博客的问题

解决百度无法收录搭建在GitHub上的个人博客的问题→

最近更新
01
四级文件
12-11
02
Git命令思维导图
11-18
03
常用Git命令清单
11-18
更多文章>
Theme by Vdoing | Copyright © 2021-2021 WangXiaoYuan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式