V2Ray高级技巧:流量伪装

| 2019年9月18日

前文 “V2Ray教程” 介绍了V2Ray的基本用法,本文介绍V2Ray高级使用技巧:流量伪装。客户端下载请访问:V2ray客户端下载,拯救被墙的服务器请参考:拯救被墙的服务器

为何需要流量伪装

自设立墙以来,我国的网络封锁技术一直是全球领先的。有方校长等人持续做贡献,封锁和干扰技术也在不断演化和进步。传统的VPN、ssh隧道等科学上网方式渐渐被墙识别和干扰,访问境外网站越来越难,倒逼网民不断推动穿墙技术的发展。

科学上网这些年来,见证了诸多技术的兴起和消沉,自架服务器被绊者更是数不胜数。经历过谈笑风生的岁月,才知闷声发大财是人生真理。翻墙技术同样如此,一是不要高调和张扬,否则大概率被打击和屏蔽;其次流量尽量与常见流量接近,不要特立独行,例如使用非常用端口、自定义奇怪的协议。本文介绍的伪装是将穿墙流量用常见的https/tls方式包装,大大降低vps被block的几率,在敏感时期保持稳如狗的外网访问通道。

前提条件

本文假设读者已经具备以下条件:

  1. 一台境外的vps,购买可参考:一些VPS商家整理;
  2. 一个域名,无备案要求(备案了流量来往更顺畅,但意味着万一有事,被喝茶更容易了)。域名购买可参考:Namesilo购买域名详细教程
  3. 为域名申请一个证书,可以用免费的Let’s Encrypt证书,参考:使用Let’s Encrypt的免费证书
  4. 有基本linux技巧,能使用vim/nano等编辑器。

新手建议使用一键脚本:  v2ray带伪装一键脚本

理论上来说,证书不是必须的。但没有tls加持或不做加密,墙直接能看出真实意图从而进行干扰,这也是为什么不建议伪装http流量的原因。本文给出的方法采用合法机构签发的证书对流量进行加密,不是做特征混淆得到的tls流量,从而更难被检测和干扰。

关于伪装技术的选择,websocket+tls+webhttp2+tls+web常用来做对比。理论上http2省去了upgrade的请求,性能更好。但实际使用中两者没有明显区别,加之某些web服务器(例如nginx)不支持后端服务器为http2,所以websocket的方式更流行。如果你要上http2,记得web服务器不能用nginx,要用后端支持http2的caddy等软件。

下文介绍流量伪装的配置步骤,演示域名为tlanyan.me,服务器为linux(centos),web服务器软件用nginx,websocket+tls+web组合,最终效果为:http/https方式打开域名,显示正常的网页;V2Ray客户端请求特定的路径,例如https://tlanyan.me/awesomepath,能科学上网;浏览器直接请求https://tlanyan.me/awesomepath,返回”400 bad request”。即外部看起来完全是一个人畜无害的正规网站,特定手段请求特定网址才是科学上网的通道。

注意:如果使用伪装后网速慢,可以更换客户端试试,或者用使用更轻量级的trojan,请参考:trojan教程

操作步骤

服务端涉及到了nginx和v2ray,分别介绍其配置。

1. 配置dns

先设置dns将域名解析到vps的ip,例如www.tlanyan.me解析到xxx.xxx.xx.xx。

如果你上了cdn,则dns要解析到cdn给的ip或者别名网址(cname)。使用cdn能隐藏真实vps的ip,避免vps被墙或能拯救被封锁ip的vps。上cdn有好处,但国内cdn要求域名备案,国外cdn基本上会降低网速,而且配置起来稍显麻烦。建议新手先摸透https流量伪装,有特殊需求再考虑上cdn。

注意:如果你要用Let’s Encrypt签发的证书,并且希望上cdn,那么应该先解析到vps的ip,获取到证书后再解析到cdn。

更新:上cdn可参考:v2ray使用cloudflare中转流量,拯救被墙ip,请务必记得先让伪装正常工作再上cdn!

2. 配置nginx

如果你的域名并正确配置了ssl证书,可忽略这一步。

nginx是市面上占有率最高的网站服务器软件,centos 7系统安装nginx命令:yum install -y epel-release && yum install -y nginx

linux系统上nginx默认站点配置文件是/etc/nginx/conf.d/目录下的default.conf,我们对伪装网站进行全站https配置,示例内容如下:

server {
    listen 80;
    server_name xxxxx;  # 改成你的域名
    rewrite ^(.*) https://$server_name$1 permanent;
}

server {
    listen       443 ssl http2;
    server_name xxxxx;
    charset utf-8;

    # ssl配置
    ssl_protocols TLSv1.2 TLSv1.3; # tls 1.3要求nginx 1.13.0及以上版本
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;
    ssl_certificate xxxxx; # 改成你的证书地址
    ssl_certificate_key xxxx; # 改成证书密钥文件地址

    access_log  /var/log/nginx/xxxx.access.log;
    error_log /var/log/nginx/xxx.error.log;

    root /usr/share/nginx/html;
    location / {
        index  index.html;
    }
}

如果用了伪装后感觉速度明显变慢,一个可能的原因是上面的配置为了安全性用了很强的加密算法。可以把“ssl配置”下面的两行改成:
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

配置好用nginx -t命令查看有无错误,没问题的话systemctl restart nginx启动nginx。打开浏览器在地址栏输入域名,应该能看到https访问的nginx欢迎页。
新域名如何快速做一个像模像样的网站?最简单的办法是从网上下载网站模板,上传到web服务器的根目录(默认是/usr/share/nginx/html)。对于伪装站来说,静态站足够。如果你的境外流量比较大,建议用爬虫或者其他手段做一个看起来受欢迎、流量大的站点,例如美食博客,图片站等。

3. 安装配置V2Ray

详细过程可参考上篇:V2Ray教程

到此为止,nginx和V2ray应该都能各自独立正常工作。如果有一个出现问题,应该先解决再继续下面的操作。

4. 服务端配置websocket

接下来我们让nginx和v2ray结合,完成服务端的配置。

首先我们选择一个路径,建议为二级或者较长的一级路径,例如/abc/def/awesomepath

配置nginx将这个路径的访问都转发到v2ray。编辑/etc/nginx/conf.d/default.conf的第二个server段,增加以下转发配置:

location /awesomepath { # 与 V2Ray 配置中的 path 保持一致
      proxy_redirect off;
      proxy_pass http://127.0.0.1:12345; # 假设v2ray的监听地址是12345
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      # Show real IP in v2ray access.log
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

配置好后重启nginx:systemctl restart nginx

配置v2ray接受nginx传来的数据。编辑 /etc/v2ray/config.json 文件,在“inbounds”中新增“streamSetting”配置,设置传输协议为“websocket”。配置好后config.json文件看起来是:

{
  "log": {
    "loglevel": "warning",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
   },
  "inbounds": [{
    "port": 12345,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "xxxxx", # 可以使用v2ctl uuid生成
          "level": 1,
          "alterId": 64
        }
      ]
    },
    "streamSettings": {     # 载体配置段,设置为websocket
        "network": "ws",
        "wsSettings": {
          "path": "/awesomepath"  # 与nginx中的路径保持一致
        }
      },
    "listen": "127.0.0.1" # 出于安全考虑,建议只接受本地链接
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      }
    ]
  }
}

注意:json文件不支持注释,上述配置中”#”号及后续内容都要删掉。

配置无误后,重启v2ray服务:systemctl restart v2ray

如何测试nginx与v2ray结合没有问题?打开浏览器,输入域名及其他路径,应该显示正常网页或者页面不存在,说明nginx正常工作;输入域名加v2ray路径,例如https://tlanyan.me/awesomepath,应该出现”Bad Request”,说明nginx将流量转发给了v2ray,并且v2ray收到了请求。

客户端设置

最后是配置客户端,本文以Windows平台的V2RayW软件为例说明使用方法。

打开V2RayW,右键托盘图标,点击“配置”。在弹框中新建或修改已有的服务器,输入服务器ip,端口写443,把用户id、额外id信息填上,网络类型选择”ws”。接着点“传输设置”,找到“websocket”,路径一栏输入nginx和v2ray中的路径,例如“/awesomepath”;http头部输入:

{
"Host":"你的域名,例如www.tlanyan.me"
}

截图如下:

v2ray客户端配置websocket

接着点击“tls”,勾选“启用传输层加密tls”(同时建议勾选“允许不安全的加密方式”和“允许不安全连接”),在“服务器域名”的输入框中输入域名,截图如下:

v2ray客户端配置tls

信息填写正确后,点击“保存”。打开浏览器访问google.com,youtube.com等网站,配置无误的话应该都能正常打开。

如果对nginx/v2ray以及客户端的配置不熟悉,建议使用这个v2ray配置生成工具:v2ray配置生成

总结

https/tls会加密路径信息,仅靠中间环节捕捉到的流量包极难区分是正常请求还是夹带私货的流量。这也显示了v2ray的强大之处:通过配置不同的协议和载体,就能对进出的流量做定制。从流量伪装、反向代理的功能上看,v2ray毫无疑问的是一个强大的网络框架/工具,科学上网功能只是其一个成功应用。

比较让人遗憾的是v2ray的ios客户端均收费,客户端下载请访问:V2ray客户端下载

参考

  1. 新 V2Ray 白话文指南
  2. Use HTTP/2.0 between nginx reverse-proxy and backend webserver

本文最后修改日期:2020年3月9日

V2Ray高级技巧:流量伪装” 有 196 条评论

  1. 头像charlie

    我在客户端的端口填443或80,是不通的,填12345就没问题。
    反过来查文件配置发现 “inbounds”:和”listen”内容的差异,网上的教程都是在“inbounds”里有配置协议,
    纯v2ray下载,客户端的端口用443或80可以使用。
    而安装v2-ui后,相同的配置协议在“listen”,就要用12345端口

    回复
    1. tlanyantlanyan Post author

      没用过v2-ui,不过要想伪装能用,v2ray和nginx都要设置好,至于listen在哪里,只要符合要求就可以

      回复
  2. 头像charlie

    文章对v2+ws+tsl+nginx的伪装原理梳理的非常清晰,谢谢作者。
    按教程使用没有问题,v2ray配置文件config基本如下:
    {
    “log”: {
    “loglevel”: “warning”,
    “access”: “/var/log/v2ray/access.log”,
    “error”: “/var/log/v2ray/error.log”
    },
    “inbounds”: [{
    “port”: 12345,
    “protocol”: “vmess”,
    “settings”: {
    “clients”: [
    {
    “id”: “xxxxx”,
    “level”: 1,
    “alterId”: 64
    }
    ]
    },
    “streamSettings”: {
    “network”: “ws”,
    “wsSettings”: {
    “path”: “/awesomepath”
    }
    },
    “listen”: “127.0.0.1”
    }],

    不过我安装了带图形面板的V2-UI,它在v2ray前端套一个web面板,好处是图形化管理,支持多用户、流量汇总等。
    但安装v2-UI后,v2ray的config配置文件内容有所变化:
    { “api”: { “services”: [

    “HandlerService”, “LoggerService”, “StatsService” ],

    “tag”: “api” }, “inbounds”: [
    { “listen”: “127.0.0.1”, “port”: 62987,

    “protocol”: “dokodemo-door”, “settings”: { “address”: “127.0.0.1” },

    “tag”: “api” },
    { “listen”: “0.0.0.0”, “port”: 12345,
    “protocol”: “vmess”,
    “settings”: {
    “clients”: [
    {
    “id”: “xxxxx”,
    “level”: 1,
    “alterId”: 64
    }
    ]
    },
    “streamSettings”: {
    “network”: “ws”,
    “wsSettings”: {
    “path”: “/awesomepath”
    }
    },

    主要区别就是 “inbounds”:下内容移到了”listen”,并配置了其他内容,这样的话就只能使用12345端口,无法伪装到nginx的443或80端口输出。
    请问是否有解决的方法,谢谢

    回复
  3. 头像王王一航

    昨天配置好的,手机能用,电脑也能用,但是放到另外一台电脑就不行,天呐,这是咋回事啊。

    启动服务(2020/3/25 星期三 20:45:49)……
    V2Ray 4.22.1 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.13.5 windows/386)
    A unified platform for anti-censorship.
    2020/03/25 20:45:50 [Warning] v2ray.com/core: V2Ray 4.22.1 started
    2020/03/25 20:45:55 tcp:127.0.0.1:60397 accepted tcp:www.google.com:443 [proxy]
    2020/03/25 20:45:56 tcp:127.0.0.1:60403 accepted tcp:apis.google.com:443 [proxy]
    2020/03/25 20:45:56 tcp:127.0.0.1:60404 accepted tcp:www.gstatic.com:443 [proxy]
    2020/03/25 20:45:56 tcp:127.0.0.1:60405 accepted tcp:id.google.com:443 [proxy]
    2020/03/25 20:45:56 tcp:127.0.0.1:60406 accepted tcp:www.google.com:443 [proxy]
    2020/03/25 20:45:56 [Warning] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: connection ends > v2ray.com/core/proxy/vmess/outbound: failed to read header > v2ray.com/core/proxy/vmess/encoding: failed to read response header > websocket: close 1000 (normal)
    2020/03/25 20:46:07 tcp:127.0.0.1:60413 accepted tcp:id.google.com:443 [proxy]
    2020/03/25 20:46:07 tcp:127.0.0.1:60415 accepted tcp:www.google.com:443 [proxy]
    2020/03/25 20:46:07 tcp:127.0.0.1:60414 accepted tcp:www.gstatic.com:443 [proxy]
    2020/03/25 20:46:07 tcp:127.0.0.1:60416 accepted tcp:apis.google.com:443 [proxy]
    2020/03/25 20:46:07 [Warning] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: connection ends > v2ray.com/core/proxy/vmess/outbound: failed to read header > v2ray.com/core/proxy/vmess/encoding: failed to read response header > websocket: close 1000 (normal)
    2020/03/25 20:47:08 tcp:127.0.0.1:60426 accepted tcp:id.google.com:443 [proxy]
    2020/03/25 20:47:08 tcp:127.0.0.1:60427 accepted tcp:www.gstatic.com:443 [proxy]
    2020/03/25 20:47:08 tcp:127.0.0.1:60428 accepted tcp:www.google.com:443 [proxy]
    2020/03/25 20:47:08 tcp:127.0.0.1:60429 accepted tcp:apis.google.com:443 [proxy]
    2020/03/25 20:47:09 [Warning] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: connection ends > v2ray.com/core/proxy/vmess/outbound: failed to read header > v2ray.com/core/proxy/vmess/encoding: failed to read response header > websocket: close 1000 (normal)

    回复
  4. 头像zhanghui

    配置成功,能正常使用,用的gcp,响应在50-80ms之间,但是访问网站很慢,不知道什么鬼

    回复
  5. 头像迷弟

    大佬,为什么我装完了之后,Google自己的ip,还是vps的地址呢?我已经用cf中转了,但是我发现域名提示521啥的,然后访问路径一样提示,不知道为啥,而且翻墙的速度超快。
    还是想一劳永逸的,所以想办法隐藏真实ip

    回复
      1. 头像迷弟

        就是全局模式的,主要是访问域名会报错,这个不正常的吧,不会显示那小说网站或者那个页面了。

  6. 头像金先生

    站长,v2ray+websocket+tls 手动配置比较复杂,买域名搞证书搭网站弄转发,配置文件复杂的一比。搭简化的trojan要简单的多,搭个80网站就行了,https它自己搞定,配置文件也简单的一笔,可以一试。

    回复
      1. tlanyantlanyan Post author

        caddy是简单,但是trojan也要域名和证书才可以的,caddy只是配置简单帮你申请证书罢了

      2. tlanyantlanyan Post author

        trojan理论上不需要搭建80网站,支持转发到其他网站和端口

  7. 头像王木木

    2020/03/04 17:38:36 tcp:127.0.0.1:54102 accepted tcp:ssh.cloud.google.com:443 [proxy]
    2020/03/04 17:38:41 [Warning] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://xx.xx.xx.xx/xyoutpath): 400 Bad Request: malformed Host header > websocket: bad handshake] > v2ray.com/core/common/retry: all retry attempts failed
    访问域名路径,也显示”Bad Request”了,配置好客户端以后,还是翻不了,帮忙看一下是怎么回事,谢谢!

    回复
  8. 头像Nian Wen

    你好。我按照教程做完以后,访问路径显示502 Bad Gateway,然后执行 setenforce 0 之后好了。但就是连不上,然后查了一下发现服务器时间比电脑时间早了十分钟。但这个时间就是怎么也改不过来。在网上搜的 ntpdate 命令,执行之后显示“No server suitable for synchronization found”,按照网上的教程都做过了,都没用。
    /(ㄒoㄒ)/~~

    回复
      1. tlanyantlanyan Post author

        用date命令设置时间,或者查一下CentOS 8同步时间命令(CentOS 7中的ntpdate已经不能用了)

  9. 头像Jason Huang

    博主,我mac发现个神奇的事,之前老是翻不过去,还有个原因是客户端的问题,同样的配置在v2rayU上翻不过去,在V2rayX上没问题.博主有碰到过类似问题吗,我是真服了.

    还有个问题,就是能否配置局域网下其他设备也能翻墙,比如游戏机,连电脑网络,怎么走v2ray

    回复
    1. tlanyantlanyan Post author

      这个我还真没遇到过,不过我一直用的是v2rayX。

      最简单的办法是在路由器上配置v2ray,不过这个过程也不简单:要买能安装插件的路由器(华硕),然后安装插件和配置,弄好后局域网内所有的设备自动能上外网了

      回复
  10. 头像Jason

    哎,这个玩意每隔一天左右,就失效了翻不过去,.大概是经过了一天,服务器时间和本机时间相差过大,
    然后用百度上的方法,yum install ntp ntpdate,用这两个源更新时间,
    这个根本下不下来,不知道为什么,百度搜不到任何有关答案

    永远是这样,见鬼了
    yum -y install ntp ntpdate

    Last metadata expiration check: 0:11:19 ago on Fri 28 Feb 2020 10:40:13 AM UTC.
    No match for argument: ntp
    No match for argument: ntpdate
    Error: Unable to find a match: ntp ntpdate

    回复
    1. 头像Nian Wen

      我是CentOS 7, ntpdate 任何服务器都是“No server suitable for sync found”
      我的两个Vultr都可以
      就是那一个不行(那个服务器比较便宜,不知道是不是因为贪小便宜的原因?)

      回复
  11. 头像X XRay

    你好作者,请问这样的方式搭建v2,是否可以通过在config中添加多个配置(或在监听的端口那里填上多个端口),来实现多用户/多端口?谢谢

    回复
  12. 头像Jason

    nginx可以了,访问域名下的awesomepath,页面502 bad gateway.路径和监听端口我看了都是统一的,没有转发成功是什么问题

    回复
      1. 头像Jason

        好像我setenforce 0之后,再访问域名下的awesomepath是Bad Request,这证明是设置成功了吗,然后本地开代理,翻不过去啊

      2. 头像Jason

        我看了日志,好像客户端有ip记录,应该是连上了吧,这是日志

        2020/02/26 11:16:02 [Info] [611342686] v2ray.com/core/proxy/socks: TCP Connect request to tcp:www.google.com:443
        2020/02/26 11:16:02 [Info] [611342686] v2ray.com/core/app/dispatcher: sniffed domain: http://www.google.com
        2020/02/26 11:16:02 [Info] [611342686] v2ray.com/core/app/dispatcher: default route for tcp:www.google.com:443
        2020/02/26 11:16:02 [Info] [611342686] v2ray.com/core/transport/internet/websocket: creating connection to tcp:140.82.8.23:36531
        2020/02/26 11:16:02 tcp:127.0.0.1:56312 accepted tcp:www.google.com:443 [proxy]
        2020/02/26 11:16:02 [Info] [611342686] v2ray.com/core/transport/internet/websocket: creating connection to tcp:140.82.8.23:36531
        2020/02/26 11:16:02 [Info] [611342686] v2ray.com/core/transport/internet/websocket: creating connection to tcp:140.82.8.23:36531
        2020/02/26 11:16:03 [Info] [611342686] v2ray.com/core/transport/internet/websocket: creating connection to tcp:140.82.8.23:36531
        2020/02/26 11:16:04 [Info] [611342686] v2ray.com/core/transport/internet/websocket: creating connection to tcp:140.82.8.23:36531
        2020/02/26 11:16:05 [Warning] [611342686] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://140.82.8.23:36531/awesomepath): > dial tcp 140.82.8.23:36531: connect: connection refused] > v2ray.com/core/common/retry: all retry attempts failed
        2020/02/26 11:16:05 [Info] [611342686] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/socks: connection ends > v2ray.com/core/proxy/socks: failed to transport all TCP response > io: read/write on closed pipe

        看你下面的评论,有可能是系统时间导致的是吧,这个是什么原因怎么解决呢

      3. 头像Jason

        我好了,文章还是没读仔细,是我客户端那个端口写错了,应该是443,我写成了配置文件里的端口了我晕

    1. 头像Jason

      我算是明白了,当在/etc/v2ray/config.json文件里添加”streamSettings”配置之前,在我本机电脑telnet ip 端口号,这个是能连通的,然后加了以上配置,重启了v2ray后,telnet不通了,这是什么原因,就因为加了这个配置,v2ray在该端口下的服务没跑起来吧

      回复
    2. 头像Jason

      不对哦,tcp网络的可以正常翻过去,加上了streamSettigns配置后,客户端改成ws,翻不过去了,nginx,v2ray都是正常的呀

      回复
      1. 头像Jason

        我看了下服务端时间Wed Feb 26 03:20:43 UTC 2020
        我现在的时间是11.20,相差了7个多小时吧,感觉应该是这个问题
        这个如何修改呀博主,还有,时区要改吗,要考虑时差吗这些

  13. 头像Ethon

    还有就是输入伪装的路径之后网页提示502或者404,而不是bad requst,不处理这个问题有没有什么影响?

    回复
      1. 头像Ethon

        我想起来了,我在伪装路径下面配置了这个
        if ($http_upgrade != “websocket”) {
        return 404;
        }

  14. 头像Ethon

    博主你好,我使用oneindex搭了一个onedrive盘,ssl加密,并使用这个oneindex站点做v2ray的web伪装,会比普通的静态web好点吗?

    回复
  15. 头像tony

    大佬你好,v2ray没配置streamSettings块前,可以正常使用;nginx也可以正常用。但是两者一结合,就不行啦
    有可能是哪里出问题呢?我用的mac客户端,参照您windows的配置也感觉没啥问题了

    谢谢

    回复
  16. 头像qiu

    为什么我打不开cd/etc/nginx/conf.d/default.conf 只能进入到nginx目录 下一级目录说找不到该目录和文件

    回复
    1. tlanyantlanyan Post author

      cd /etc/nginx/conf.d
      然后再编辑文件
      目录不存在创建一个,或者直接编辑/etc/nginx/nginx.conf文件

      回复
      1. 头像qiu

        直接编辑nginx.conf和编辑conf.d/default.conf是一样的吗?

      2. tlanyantlanyan Post author

        建议你直接用一键脚本吧,省心
        如果想研究,可以看看一键脚本怎么写的

  17. 头像xprince

    求问一下,本身服务器是支持IPV6的,如果想要使用IPV6访问部分网站,需要如何设置?

    回复
    1. tlanyantlanyan Post author

      运行哪个脚本?如果是看id,可以用这个命令:cat /etc/v2ray/config.json | grep id,看alterid用这个命令:cat /etc/v2ray/config.json | grep -i alterid

      回复
  18. 头像CUP

    我的AWS启动虚拟机后,不停的转圈,转了10分钟了,请问有这么慢吗?

    回复
  19. 头像Rakk

    感谢作者,我按照您的教程已经成功配置好了,用v2rayW可以科学上网。
    但自己尝试配置v2rayN却失败了。
    请问v2rayN如何配置流量伪装?

    回复
      1. 头像Rakk

        谢谢回复,我尝试开启PAC和全局模式了,但v2rayN还是不能用。
        我怀疑是我添加Vmess服务器的时候,「伪装域名」和「路径」这两项填写有误,
        请问可以提供一个填写示例吗?

      2. 头像Rakk

        谢谢,最后我解决了。
        「伪装域名」那一栏是缺省的不用填写,v2rayN就正常可用了。
        我之前填写了我自己的域名。

  20. 头像Hidden

    按你上一篇教程来搭建了v2ray,并且在这之前已经用nginx搭建了wordpress,也搭建了v2ray,都可以使用
    按你教程来之后v2ray就用不了了,访问路径得到的不是bad request而是502
    wordpress仍然可以访问
    然后用service v2ray status看到状态是active,日志也没有看到有问题出现
    没开selinux
    求解

    回复
    1. tlanyantlanyan Post author

      估计是selinux的问题,检查selinux状态:getenforce,如果显示”enforcing”,那么用这个命令关闭:setenforce 0

      回复
    2. 头像陈先生

      配置nginx后, 打开浏览器在地址栏输入域名,应该能看到https访问的nginx欢迎页。server_name, ssl_certificate, ssl_certificate_key都改了, 我看到的只是centos欢迎界面, 导致后面的所有都配置好,也不能上网…

      回复
  21. 头像微风为

    nginx: [warn] server name “https://$server_name$1” has suspicious symbols in /etc/nginx/conf.d/default.conf:4
    nginx: [emerg] invalid server name or wildcard “^(.*)” on 0.0.0.0:80
    nginx: configuration file /etc/nginx/nginx.conf test failed
    命令nginx -t返回上面,请问问题在哪,不胜感激

    回复
  22. 头像卤肉饭

    我按照配置一步一步来的 当前已把502 bad gateway问题变为bad request , 80 443页面显示正常
    可是用小火箭显示超时 还是无法打开谷歌 服务器端v2ray无生成日志
    v2ray端口及nginx的80 443 都已开启 且防火墙关闭
    telnet v2ray端口连接失败 但80 443可以telnet

    请教大神,我改如何排查呢 nginx日志 只体现了测试502 404的信息 其他无
    已关闭selinux

    回复
      1. 头像卤肉饭

        和服务端的一样 34722
        我发觉其他人的v2ray端口 是可以telnet的 但我的不可以
        也不像是被墙了 我用了国外测试端口的 也显示关闭
        但netstat -ntlp 能显示出端口:

        [root@li219-249 ~]# netstat -ntlp
        Active Internet connections (only servers)
        Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
        tcp 0 0 127.0.0.1:34722 0.0.0.0:* LISTEN 1013/v2ray
        tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1428/nginx: master
        tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1011/sshd
        tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1428/nginx: master
        tcp6 0 0 :::80 :::* LISTEN 1428/nginx: master
        tcp6 0 0 :::22 :::* LISTEN 1011/sshd

      2. tlanyantlanyan Post author

        你要用443,不能用v2ray 的端口,而且v2ray 监听的本地,外面是telnet不过去的

    1. 头像卤肉饭

      非常感谢! 坛主解释的也很明白. 已经可以了 :p

      问下与cloudflare衔接 需要做什么配置吗 比如 api啥的
      有没有相关链接 分享下?

      回复
      1. tlanyantlanyan Post author

        全站https的要用严格(strict)模式,其他不需要任何配置
        建议你谨慎上cloudflare,因为在国内速度不快,号称减速云

      2. 头像卤肉饭

        感谢分享 简单几句话提供了几个关键部分 太感谢啦 已赞
        正在看客户端配置免流 发现配置文件中的 “streamSettings”: {)段落的host等配置已被占用
        期待坛主有空研究下 并分享出来哈 感谢!

      3. 头像卤肉饭

        收到
        cloudflare果然是慢的不得了 且dospod据悉是被腾讯收购了 不放心用
        问下有推荐的cdn吗 国外身份的

      4. tlanyantlanyan Post author

        国内的cdn都要求备案的,国外免费的巨慢,收费的你还不如自己买个服务器中转一下

  23. 头像wanaiqing

    请问博主,我用的是VULTR的服务器,创建服务器后不管是用SS还是V2R(包括流量伪装),在一段时间后就无法连接了。重启SS或V2R又能连接,这要如何解决?

    回复
      1. 头像wanaiqing

        不对,SS重启也连不了,V2R重启就能连,(我说的都是客户端),SS是之前复活了一次…感觉是被墙检测到…

      2. tlanyantlanyan Post author

        被墙检测到就老老实实用伪装吧,可能有点扰动,用起来稳如狗

  24. 头像Ethon

    伪装成功,浏览器输入域名或ip直接显示我放的静态页面,PC端的V2rayNG的地址设置为域名或IP都ok,但安卓端的v2rayN不认域名只认ip,是不是安卓客户端需要其他设置?

    回复
      1. 头像Ethon

        就是写的二级域名,直接扫的pc端的二维码,不过很奇怪,昨天不能连,今天就能连了

  25. 头像耗子356

    我遇到了报accepted tcp:www.google.com:443 [proxy] 的错误。检查了下端口都开了,时间也一样。
    然后我使用了4g网络就可以了,有线不可以。请问这是运营商把我墙了么?

    回复
  26. 头像glowmonster

    我补充一点可能遇到的问题,如果有人看到希望能帮到你!
    当你做完以上所有步骤之后,可能得到的是502 bad gateway而不是bad request,这是因为系统httpd配置不可以连接到网络,查看错误日志是权限拒绝,这个写的如何解决 https://blog.csdn.net/jiangshanwe/article/details/85772335 ,如果还是bad gateway改nginx的权限就好了.

    回复
  27. 头像root

    ws+tls+web,这里伪装域名是随便写,还是必须是自有的这个域名。

    回复
      1. 头像root

        意思是说,我用域名abc.tk来搭建,伪装域名可以是amazon.com吗,还是必须是abc.tk。

      2. 头像奇妙世界

        在设置/etc/nginx/conf.d/default.conf的时候,ip加80端口会跳转到域名,可是还是无法访问,连欢迎页都没出现

        server {
        listen 80;
        server_name http://www.casolopidia.live;
        rewrite ^(.*) https://$server_name$1 permanent;
        }

        server {
        listen 443 ssl http2;
        server_name http://www.casolopidia.live;
        charset utf-8;

        ssl_ecdh_curve secp384r1;
        ssl_certificate 正确填写;
        ssl_certificate_key 正确填写;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 5m;
        keepalive_timeout 70;
        include /etc/nginx/default.d/*.conf;
        access_log /var/log/nginx/www.casolopidia.live.access.log;
        error_log /var/log/nginx/www.casolopidia.live.error.log;
        root /usr/share/nginx/html;
        location / {
        index index.html;
        }
        }

  28. 头像kkk

    502
    日志
    connect() failed (111: Connection refused) while connecting to upstream,

    回复
  29. 头像风起

    老哥可以帮我看一下我这个配置吗
    {
    “stats”: {},
    “log”: {
    “loglevel”: “warning”
    },
    “policy”: {
    “levels”: {
    “8”: {
    “handshake”: 4,
    “connIdle”: 300,
    “uplinkOnly”: 1,
    “downlinkOnly”: 1
    }
    },
    “system”: {
    “statsInboundUplink”: true,
    “statsInboundDownlink”: true
    }
    },
    “inbounds”: [
    {
    “tag”: “socks”,
    “port”: 10808,
    “protocol”: “socks”,
    “settings”: {
    “auth”: “noauth”,
    “udp”: true,
    “userLevel”: 8
    },
    “sniffing”: {
    “enabled”: true,
    “destOverride”: [
    “http”,
    “tls”
    ]
    }
    },
    {
    “tag”: “http”,
    “port”: 10809,
    “protocol”: “http”,
    “settings”: {
    “userLevel”: 8
    }
    }
    ],
    “outbounds”: [
    {
    “tag”: “proxy”,
    “protocol”: “vmess”,
    “settings”: {
    “vnext”: [
    {
    “address”: ” “,
    “port”: 10086,
    “users”: [
    {
    “id”: “a3482e88-686a-4a58-8126-99c9xxxxxxbf”,
    “alterId”: 64,
    “security”: “auto”,
    “level”: 8
    }
    ]
    }
    ],
    “servers”: [
    {
    “address”: “”,
    “method”: “chacha20”,
    “ota”: false,
    “password”: “123456”,
    “port”: 10086,
    “level”: 8
    }
    ]
    },
    “streamSettings”: {
    “network”: “tcp”
    },
    “mux”: {
    “enabled”: false
    }
    },
    {
    “protocol”: “freedom”,
    “settings”: {},
    “tag”: “direct”
    },
    {
    “protocol”: “blackhole”,
    “tag”: “block”,
    “settings”: {
    “response”: {
    “type”: “http”
    }
    }
    }
    ],
    “routing”: {
    “domainStrategy”: “IPIfNonMatch”,
    “rules”: []
    },
    “dns”: {
    “hosts”: {},
    “servers”: []
    }
    }

    回复
      1. 头像风起

        客户端配置不对,不知如何配置,就拿v2ray为例吧,谢谢了

  30. 头像Jack

    请问博主,windows已经配置好了,并且可以使用,但是我用安卓的v2rayNG的时候配置好了,但是无法访问谷歌,能不能请教一下,安卓怎么配置

    回复
    1. tlanyantlanyan Post author

      如果确定自己域名证书没有问题,清空浏览器缓存,然后重新打开浏览器试试。或者直接换个浏览器试试

      回复
  31. 头像chancat

    博主,备案的域名流量来往更顺畅,这句话不明白,难道备案的域名还有加成?

    回复
  32. 头像hyx

    博主你好,请问这个可以和宝塔面板共存吗?可以的话要怎么做?

    回复
    1. tlanyantlanyan Post author

      可以的。安装教程安装和配置好v2ray,接着在宝塔控制面板里安装nginx。然后复制教程中的配置,粘贴到宝塔里的nginx配置,修改端口号和id,重启nginx,配置没问题的话应该就能用了

      回复
  33. 头像

    大佬能讲讲如果是用caddy的话要怎么配置么,感觉这个比nginx略方便些

    回复
  34. 头像无名氏

    谢谢作者,成功了。一直用的是ssr,发现总是间歇性的断线,这个断线与网上别人反馈的都不一样,这个是ping 不通,SSH掉线,更不用说访问了。大概是在用的时候,每隔几分钟断线一次,但是如果突然打开一个视频,流量突然增加,那么马上断线,所以我猜想的是我的IP其实已经被盯上了,但是没有封。我自己尝试更改过端口,没有用,马上也能够被识别,结果与上面一样。

    现在按照博客主的教程搭好,确实可以了。不过也没有长时间测试,仅仅只有3,4个小时。我只想用google查询资料而已,百度一点也不能用,再说国家这么好,我也没有任何反对的言论,确实感觉这个屏蔽对于学习真的有很大的伤害。

    还有其实说的轻松,但是如果自己搭建的话,确实特别难,因为需要知道Linux的相关知识。很多小问题并不是别人都有反馈的,你需要懂相关才行。总之感谢作者。

    回复
  35. 头像rain

    大神,nginx和v2ray都能单独工作,但是请求v2ray路径,出现的502 bad gateway,这是什么原因?

    回复
  36. 头像楚风

    用了ws之后无法上网,客户端日志提示:failed to find an available destination: all retry attempts failed,以及failed to dial websocket。这应该和ws设置有关吧?

    回复
      1. 头像楚风

        看了一下,里面都是invalid user,这是连上来了?

      2. tlanyantlanyan Post author

        有你的ip记录就说明连过来了,v2ray出现invalid user可能是这些原因:
        1. uuid不对
        2. alter id不对
        3. 服务端和客户端时间相差太大
        逐个检查一下吧

      3. 头像楚风

        晕,最后发现竟然是时间相差了7分钟,调整一下时间就好了

  37. 头像Leon

    感谢楼主分享,请教一下2个问题,
    1、不用域名能伪装吗(没有域名)?
    2、v2ray 或者Shadowsocks 有没有自己限制自己速度的办法,网速太快 是不是特征很明显就容易被封 经常看视频,,,被封了好几次了

    回复
    1. tlanyantlanyan Post author

      不用域名可以伪装成其它流量,这个我没有研究。
      v2ray和shadowsocks我不清楚有没有限制速度的办法,但nginx和iptables是能做到的

      回复
  38. 头像王先生

    完全按照步骤来,可是配置好之后,访问那个awesome路径返回的是502 Bad Gateway 而不是400 Bad request。。。
    求问博主怎么解决。。

    回复
    1. tlanyantlanyan Post author

      也不一定全是v2ray的问题,502表示nginx转发请求给v2ray过程中出现了问题,可能的原因包括:nginx配置中的端口是否与v2ray一致?v2ray服务有没有正常开启?v2ray能解析nginx转发过来的请求吗?

      回复
      1. 头像王先生

        V2ray直连没问题。应该还是nginx配置问题。
        后来用你给的配置自动生成的那个工具,把所有配置重新覆盖一遍,就好了

      2. tlanyantlanyan Post author

        nginx可以用nginx -t命令检查配置有没有问题。对于新手,用自动生成工具是最方便的

      3. 头像小白

        同遇到502的问题,配置生成工具生成的是v2ray配置吧,能够找到当时是哪一个配置出了问题吗

  39. 头像complexray

    我用一台VPS,给一个二级域名,比如叫kankan.1.com。然后kankan起nginx,对此二级域名,进行转发,交给qiaoqiao.2.com处理,同样的,qiaoqiao又通过nginx,转给soso.3.com处理,而soso上有个代理,也许是squid,这里是用的v2ray。然后v2ray说,我其实就是个代理,当我是个squid就行了,我去帮你找页面,然后,soso就在外部,直接就能访问到,然后soso又能原路返回数据,所以用浏览器返回要访问的。
    那么,我访问kankan,qiaoqiao做的转发,soso做了代理。这其中,转发的过程,可以很多。
    就这技术,有什么好专利的?这不就是把路由通讯协议用在了WEB访问上?默默地使用不好吗?再说,这里面就会存在多跳延时的问题,路由协议中已经给出解决方案,动态调整。是不是以后类似的v2rayplus要考虑多点转发,将代理云化,或者说虚拟发布统一接口。
    如果想做好,真没必要专利,我看还收费,为什么要收费呢?有人气不比有钱要好很多?太不虚荣了!

    回复
    1. tlanyantlanyan Post author

      哥们,我觉得你说的和我们说的不是一回事。北理的专利用来识别v2ray流量

      回复
    1. tlanyantlanyan Post author

      v2rayng上传输协议选**ws**,伪装类型填”http”,伪装域名和路径填你的域名和路径

      回复
      1. tlanyantlanyan Post author

        国内的cdn都要求域名备案,http流量有免费,https流量基本都要收费

  40. 头像iManw

    我靠!终于弄好了!给的配置文件有错!
    “log”: {
    “loglevel”: “warning”,
    “access”: “/var/log/v2ray/access.log”,
    “error”: “/var/log/v2ray/error.log”
    },

    回复
    1. tlanyantlanyan Post author

      linux性能和稳定性更好,维护也更容易。windows除了界面好用一点,不占其他优势

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注