v2ray+caddy+cloudflare最强上网工具,WebSocket+TLS+Web+CDN

搞这个弄了一个星期,看了很多教程,都没成功,最后发现原来是cadyy没代理成功
总结一下配置方法,参考https://toutyrater.github.io/advanced/wss_and_web.html

前言

1.v2ray这个就不说了,你懂得。
2.Caddy就类似Nginx的东西,但是配置简单,自动申请SSL使用,本文就是利用Caddy的反向代理到v2ray后端使用,主要作用就是可以套CF,隐藏IP或使用被墙的VPS,当然也可以用nginx/apache
3.首先是关于最优抗封锁,抗qos干扰的v2ray组合,一定是websocket + TLS + nginx/caddy+CDN,没有之一。
v2ray白话文教程中关于http伪装的章节里提到了,不建议用http伪装。因为在没有TLS加密的前提下,这种伪装的流量很容易被识破,到时候被封了可就哭了。而使用websock+TLS+nginx/caddy+CDN伪装的好处:
3.1从外面看完全属于通过443端口访问正常的HTTPS网站
3.2.websocket的path(比如教程中的/ray)被TLS加密不能被探测到
3.3.TLS不是伪装,不是混淆,是真正的HTTPS,用途合理永远不能被封锁
3.4再套上CDN比如cloudflare更是完美,连IP都隐藏了,即使是被墙的VPS也能使用

搭建v2ray服务端

官网:https://www.v2ray.com
介绍:V2Ray 是一个模块化的代理软件包,它的目标是提供常用的代理软件模块,简化网络代理软件的开发。
1、手动安装

创建v2ray目录

mkdir /etc/v2ray

下载 v2ray

wget https://github.com/v2ray/v2ray-core/releases/download/v3.27/v2ray-linux-64.zip

解压,压缩包

unzip -o v2ray-linux-64.zip

进入解压目录

cd v2ray-v3.27-linux-64

复制v2ray v2ctl geoip.dat geosite.dat到/etc/v2ray目录

cp -f v2ray v2ctl geoip.dat geosite.dat /etc/v2ray

赋予执行权限

chmod +x /etc/v2ray/v2ray v2ctl

创建配置文件

touch /etc/v2ray/config.json

编辑配置文件

vi /etc/v2ray/config.json

复制下面配置,粘贴进去

{
  "inbound": {
    "port": 10000,
    "listen":"127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "a3461847-4c40-4915-82cb-2a312ae33665",
          "alterId": 64
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
      "path": "/ray"
      }
    }
  },
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  },
  "outboundDetour": [
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "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/16",
            "198.18.0.0/15",
            "198.51.100.0/24",
            "203.0.113.0/24",
            "::1/128",
            "fc00::/7",
            "fe80::/10"
          ],
          "outboundTag": "blocked"
        }
      ]
    }
  }
}

a3461847-4c40-4915-82cb-2a312ae33665为UUID,打开这个网站https://www.uuidgenerator.net/,会自动生成一个,然后替换配置参数里的

启动

/etc/v2ray/v2ray -config /etc/v2ray/config.json

2、v2ray服务端一键安装
推荐一个v2ray一键安装脚本,来源https://www.v2ray-install.ml/
好处是不用手动配置,而且会给tls绑定的域名自动配置一个静态站点,看起来就像是真的网站一样。
目前只支持debian, ubuntu,不支持CentOS

apt-get install -y curl && curl -O https://download.v2ray-install.ml/v2ray-go.sh && bash v2ray-go.sh

搭建caddy WEB服务器

官网:https://caddyserver.com
介绍:Caddy 提供了很多简单易用的功能而没有历史的包袱,其默认支持并且能帮你自动配置 HTTP/2、HTTPS,对于 IPV6、WebSockets 都有很好的支持。nginx就不介绍了,配置比caddy复杂。
1、手动安装
创建caddy目录

mkdir /etc/caddy

下载 caddy

wget https://github.com/mholt/caddy/releases/download/v0.11.0/caddy_v0.11.0_linux_amd64.tar.gz

解压caddy到/etc/caddy目录

tar zxvf caddy_v0.11.0_linux_amd64.tar.gz -C /etc/caddy caddy

赋予执行权限

chmod +x /etc/caddy/caddy

创建配置文件

touch /etc/caddy/caddy.conf

编辑配置文件

vi /etc/caddy/caddy.conf

复制下面内容,粘贴进去

v2ray.example.com
{
  log /var/log/caddy.log
  proxy /ray localhost:10000 {
    websocket
    header_upstream -Origin
  }
}

1.1 proxy /ray 的 /ray 和v2ray参数 "path": "/ray" 需要保持一致。
1.2 v2ray.example.com为你的域名,请替换自己的,并且域名要先A记录解析到你的VPS IP上,假如已经用CF,请关闭CDN让其恢复原IP,而不是CF的IP,否则自动申请SSL证书可能失败。待搭建完成可使用后,再去CF里开启CDN。
1.3 caddy SSL介绍 https://caddyserver.com/docs/automatic-https
1.4 假如你是root用户登录操作的,它会在你的根目录/.caddy/(隐藏文件夹)下保存当前所有使用的域名SSL证书相关文件,貌似用的就是这个acme.sh的更新脚本吧,会自动更新证书的。
1.5 如果要使用 caddy & cloudflare,请将 cloudflare 的 SSL 部分,將原本设定的 Flexible 改为 Full

2、自动安装

wget -N --no-check-certificate https://softs.loan/Bash/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install

如果上面这个脚本无法下载,尝试使用备用下载:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install

安装后复制内容进配置文件(没有就自己新建)并启动

v2ray.example.com
    {
      log /var/log/caddy.log
      proxy /ray localhost:10000 {
        websocket
        header_upstream -Origin
      }
    }

启动:/etc/init.d/caddy start
停止:/etc/init.d/caddy stop
重启:/etc/init.d/caddy restart
查看状态:/etc/init.d/caddy status
查看Caddy启动日志: tail -f /tmp/caddy.log
安装目录:/usr/local/caddy
Caddy配置文件位置:/usr/local/caddy/Caddyfile
Caddy自动申请SSL证书位置:/.caddy/acme/acme-v01.api.letsencrypt.org/sites/xxx.xxx(域名)/

卸载

wget -N --no-check-certificate https://softs.loan/Bash/caddy_install.sh && bash caddy_install.sh uninstall

如果上面这个脚本无法下载,尝试使用备用下载:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && bash caddy_install.sh uninstall

v2ray客户端配置

上面安装完成,并正常运行后,可以配置客户端了。使用前请确保以上v2ray服务端运行了,并且caddy也正常运行了(caddy运行时在浏览器打开对应的域名时会提示404 Not Found,如果打不开说明没运行,博主就在这折腾了好久)

v2ray的客户端和服务端都是同一个文件,即可以做服务端又可以做客户端,这里以win端为例
下载地址:https://github.com/v2ray/v2ray-core/releases/download/v3.29/v2ray-windows-64.zip
其他版本:https://github.com/v2ray/v2ray-core

下载解压文件如图
请输入图片描述
config.json为配置文件
v2ray.exe为win前台程序,双击即可在前台启动
wv2ray.exe为后台运行文件,双击后客户端即可在后台运行

复制以下配置进config.json

{
  "log": {
  "loglevel": "warning",
  "error": "./error.log"
  },
  "inbound": {
    "port": 1080,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "settings": {
      "auth": "noauth",
      "udp": false
    }
  },
  "outbound": {
    "protocol": "vmess",
    "settings": {
      "vnext": [
        {
          "address": "v2ray.example.com",
          "port": 443,
          "users": [
            {
              "id": "a3461847-4c40-4915-82cb-2a312ae33665",
              "alterId": 64
            }
          ]
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "security": "tls",
      "tlsSettings": {
        "serverName": "v2ray.example.com"
      },
      "wsSettings": {
        "path": "/ray"
      }
    }
  },
  "outboundDetour": [
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "domainStrategy": "IPIfNonMatch",
      "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/16",
            "198.18.0.0/15",
            "198.51.100.0/24",
            "203.0.113.0/24",
            "::1/128",
            "fc00::/7",
            "fe80::/10"
          ],
          "outboundTag": "direct"
        },
        {
          "type": "chinasites",
          "outboundTag": "direct"
        },
        {
          "type": "chinaip",
          "outboundTag": "direct"
        }
      ]
    }
  }
}

注意:客户端配置的参数值必须和服务端的一致。

"protocol":
"id":
"alterId":
"network":
"path":

v2ray.example.com为所配置在caddy配置文件里的正确域名

Windows/Android/iOS客户端推荐
Windows: V2rayN :配置支持手动填写和加载json文件,支持服务器批量测速
Android: BifrostV :感觉比v2rayNg好一点,能方便配置内置DNS
iOs: Shadowrocket :著名的小火箭,支持ss和vmess多种协议,iOS上最佳

客户端配置完成后需要确保服务端客户端时间同步,要求服务器和客户端时间差绝对值不能超过 2 分钟,时区可以不同。配置到这里实际上还不能科学上网,因为 V2Ray 将所有选择权交给用户,它不会自动帮你设置系统代理,因此还需要在浏览器里设置代理。以火狐(Firefox)为例,点菜单 -> 选项 -> 常规 -> 网络代理 -> 设置,在 SOCKS Host 填上 127.0.0.1,后面的 Port 填 1080,再勾上使用 SOCKS v5 时代理 DNS (这个勾选项在旧的版本里叫做远程 DNS)。操作图见下
请输入图片描述

到此,全部配置完毕,嗨起来吧

代理设置
1、全局代理:这里用V2rayN(虽然很多人推荐proxfixer,但是配合V2ray博主设置了好多次都不成功,最后用V2rayN成功了)
注意:用V2rayN请手动填写配置(即添加VMess服务器),不用添加自定义配置服务器,否则系统代理不成功

2、使用时将V2rayN放入V2ray客户端文件夹内,要放在同一个文件夹内,

3、然后添加VMess服务器,示例如下,其实就是填客户端配置的内容
请输入图片描述
然后百度:ip,试试是不是成功了

参考文章:
https://www.feiqy.com/v2ray-best-config/
http://www.hostloc.com/thread-435383-1-1.html
https://toutyrater.github.io/

Last modification:September 24th, 2018 at 07:48 pm
If you think my article is useful to you, please feel free to appreciate

18 comments

  1. 清雨

    哈哈有缘,昨天才让你帮忙买云主机,今天百度竟然搜到你的博客。话说这个方案可靠性如何,网络上有被 Ban 的先例不?我想用这个方案搜资料用。

    1. 呵呵哒萌萌哒
      @清雨

      不知道gfw现在策略怎么样的,不过这个和ban不ban没关系啊,只要没把cdn的ip都墙了都能用,服务器ip墙不墙无所谓

  2. paul

    能不能更进一步,主页套个wordpress或者nextcloud,更掩人耳目一些

    1. 呵呵哒萌萌哒
      @paul

      可以啊,仔细看文章,里面有个一键脚本,自动搭建一个网页比如我的v2.ocso.xyz,打开看看

  3. LoganMartin

    你好博主,刚接触vps不久,根据帖子当中的描述实践了一下,使用CF进行CDN之后,ping对应域名,显示的不是CF的IP,依旧是域名自己的IP。已经添加,并且小云彩已经点成橙色。请问哪里出错了吗?还是说使用caddy以后,ping的IP就是应该是原始域名IP

    1. 呵呵哒萌萌哒
      @LoganMartin

      这个要等几分钟,或者你cf设置有问题吧?和caddy完全没关系

      1. LoganMartin
        @呵呵哒萌萌哒

        好像是要等一会儿,昨天后来再ping的时候,IP自动指向到CF了,但是开全局和局部代理都上不了网了,CF把SSL改成了full,还有什么要调整的吗

        1. LoganMartin
          @LoganMartin

          难道是移动网和CF的锅。。。不套CDN可以用,而且很快,套了CDN之后就不行了

          1. 呵呵哒萌萌哒
            @LoganMartin

            估计就是移动锅,你可以用其他CDN啊,域名备案的话可以用国内的CDN

            1. LoganMartin
              @呵呵哒萌萌哒

              emmmm,大佬除了谷歌和CF的CDN之外还有什么CDN能推荐一下吗?不开CDN心里没底啊

              1. 呵呵哒萌萌哒
                @LoganMartin

                七牛,又拍?其他的不知道了

  4. anbapa

    博主 我配置完以后用IOS的小火箭无法连接 是为什么呢

    1. 呵呵哒萌萌哒
      @anbapa

      小火箭?先用win试试可不可以啊

  5. wlain

    websock+TLS+nginx/caddy+CDN中的nginx/caddy 的作用是什么

    1. 呵呵哒
      @wlain

      nginx/caddy 支持WebSockets 啊,然后变成http或https,再套上CDN

  6. dm2wq1

    好吧,你已经自由了。我还在墙内。
    墙内的人想出去,站在墙上的人不知道

    干嘛

    .

    1. 呵呵哒
      @dm2wq1

      哪里自由了,折腾而已,正在把被墙的VPS用起来,这个加CDN完美

    2. dm2wq1
      @dm2wq1

      不过得感谢你,提供的freenat,不然我的小博客都没有着落呢。

Leave a Comment