欢迎加入tg群交流:@tlanyantg
前文 “V2Ray教程” 介绍了V2Ray
基本用法,本文介绍V2Ray
高级使用技巧:流量伪装。客户端下载请访问:V2ray客户端,拯救被墙的服务器请参考:拯救被墙的服务器。
为何需要流量伪装
自设立墙以来,我国的网络封锁技术一直是全球领先的。有方校长等人持续做贡献,封锁和干扰技术也在不断演化和进步。传统的VPN、ssh隧道等科学上网方式渐渐被墙识别和干扰,访问境外网站越来越难,倒逼网民不断推动穿墙技术的发展。
科学上网这些年来,见证了诸多技术的兴起和消沉,自架服务器被绊者更是数不胜数。经历过谈笑风生的岁月,才知闷声发大财是人生真理。翻墙技术同样如此,一是不要高调和张扬,否则大概率被打击和屏蔽;其次流量尽量与常见流量接近,不要特立独行,例如使用非常用端口、自定义奇怪的协议。本文介绍的V2ray伪装便是将穿墙流量以常见的HTTPS/TLS包装,大大降低vps被墙或被干扰的可能性,在敏感时期提供稳如狗的上外网体验。
V2ray发布了新版的VLESS协议,强烈推荐使用,详情请参考 V2ray的VLESS协议介绍和使用教程
推荐使用XTLS+Splice技术的Xray,详情参考:Xray教程
V2ray流量伪装前提条件
本文假设读者已经具备以下条件:
- 一台境外的vps,购买可参考:一些VPS商家整理;
- 一个域名,无备案要求(备案可使用国内CDN加速,但意味着万一有事,被喝茶更容易)。域名购买可参考:Namesilo域名注册和使用教程 或从 适合国人的域名注册商推荐 选购;
- 为域名申请一个证书,请参考:使用acme.sh签发证书 或 从阿里云获取免费SSL证书(伪装域名用来做站推荐使用);
- 有基本linux技巧,能使用vim/nano等编辑器。
理论上来说,证书不是必须的。但没有tls加持或不做加密,防火墙直接能看出来流量真实意图从而进行干扰,这也是为什么不建议伪装http流量的原因。本文给出的方法采用合法机构签发的证书对流量进行加密,不是做特征混淆得到的TLS流量,从而更难被检测和干扰。
关于伪装技术的选择,V2ray web+websocket+tls 和 V2ray web+http2+tls 常用来做对比。理论上http2省去了upgrade的请求,性能更好。但实际使用中两者没有明显区别,加之某些web服务器(例如Nginx)不支持后端服务器为http2,所以websocket的方式更流行。如果你要上http2,记得web服务器不能用Nginx,要用支持反代http2的Caddy等软件。
下文介绍流量伪装的配置步骤,演示域名为tlanyan.pp.ua
,服务器为Linux(CentOS),web服务器软件用Nginx,web+websocket+tls组合,最终效果为:http/https方式打开域名,显示正常的网页;V2Ray
客户端请求特定的路径,例如https://itlanyan.com/awesomepath
,能科学上网;浏览器直接请求https://itlanyan.com/awesomepath
,返回”400 bad request”。即外部看起来完全是一个人畜无害的正规网站,特定手段请求特定网址才是科学上网的通道。
注意:如果使用伪装后网速慢,可尝试更轻量级的trojan,请参考:trojan教程。
V2ray流量伪装教程
服务端涉及到了Nginx和v2ray,分别介绍其配置。
1. 配置dns
先设置dns将域名解析到vps的ip,例如tlanyan.pp.ua
解析到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
(debian/Ubuntu系统路径是 /etc/nginx/site-enabled/default.conf
),我们对伪装网站进行全站https配置,示例内容如下:
server {
listen 80;
server_name xxxxx; # 改成你的域名
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl http2; # 不再推荐使用443端口,可以使用8000-9000之间的端口
server_name xxxxx;
charset utf-8;
# ssl配置
ssl_protocols TLSv1.2 TLSv1.3; # tls 1.3要求nginx 1.13.0及以上版本
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
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;
}
}
鉴于目前443端口容易被墙,推荐使用8000-9000之间的端口号,例如8080、8443、8090等
配置好用nginx -t
命令查看有无错误,没问题的话systemctl restart nginx
启动Nginx。打开浏览器在地址栏输入域名,应该能看到https访问的Nginx欢迎页。
新域名如何快速做一个像模像样的网站?最简单的办法是从网上下载网站模板,上传到web服务器的根目录(默认是/usr/share/nginx/html
)。对于伪装站来说,静态站足够。如果你的境外流量比较大,建议用爬虫或者其他手段做一个看起来受欢迎、流量大的站点,例如美食博客,图片站等。
3. 安装配置V2Ray
详细过程可参考上篇:V2Ray教程。为了让V2ray能正常运行,请确认防火墙已放行对应端口,并且关闭了selinux:setenforce 0
。
到此为止,Nginx和V2ray应该都能各自独立正常工作。如果有一个出现问题,应该先解决再继续下面的操作。
4. Nginx配置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;
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传来的数据。编辑 /usr/local/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", # 可以使用/usr/bin/v2ray/v2ctl uuid生成
"level": 1
}
]
},
"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"
}
]
}
}
注意:
1. json文件不支持注释,上述配置中”#”号及后续内容都要删掉;
2. 可以使用命令检查配置是否存在错误:
/usr/bin/v2ray/v2ray test -config /usr/local/etc/v2ray/config.json
配置无误后,重启v2ray服务:systemctl restart v2ray
。
如何测试nginx与v2ray结合没有问题?打开浏览器,输入域名及其他路径,应该显示正常网页或者页面不存在,说明Nginx正常工作;输入域名加v2ray路径,例如https://itlanyan.com/awesomepath
,应该出现”Bad Request”,说明Nginx将流量转发给了v2ray,并且v2ray收到了请求。
客户端设置
最后是配置客户端,本文以Windows平台的V2RayW
软件为例说明使用方法。
打开V2RayW
,右键托盘图标,点击“配置”。在弹框中新建或修改已有的服务器,输入服务器ip,端口写443,把用户id、额外id信息填上,网络类型选择”ws”。接着点“传输设置”,找到“websocket”,路径一栏输入nginx和v2ray中的路径,例如“/awesomepath”;http头部输入:
{
"Host":"你的域名,例如tlanyan.pp.ua"
}
截图如下:
接着点击“tls”,勾选“启用传输层加密tls”(同时建议勾选“允许不安全的加密方式”和“允许不安全连接”),在“服务器域名”的输入框中输入域名,截图如下:
信息填写正确后,点击“保存”。打开浏览器访问google.com,youtube.com等网站,配置无误的话应该都能正常打开。
因为启用了TLS,因此VMESS配置界面的加密方式(security)建议配置为none,以节省cpu,提高设备续航能力
如果对nginx/v2ray以及客户端的配置不熟悉,建议使用这个v2ray配置生成工具:v2ray配置生成。
V2ray流量伪装总结
https/tls会加密路径信息,仅靠中间环节捕捉到的流量包极难区分是正常请求还是夹带私货的流量。这也显示了v2ray的强大之处:通过配置不同的协议和载体,就能对进出的流量做定制。从流量伪装、反向代理的功能上看,v2ray毫无疑问的是一个强大的网络框架/工具,科学上网功能只是其一个成功应用。
比较让人遗憾的是v2ray的ios客户端均收费,客户端下载请访问:V2ray客户端下载。
老哥,一键安装正常运行,伪装网站正常访问,无法翻墙,已在论坛发帖,求助.
让那边的人给你解决吧
感谢大佬!
有一点疑问:伪装后,对于出口路由来说,好像你是在访问某个国外网站,可是大数据会不会发现,其实这网站全国只有你在访问,所以其实并不能伪装?
ps:email乱填的
有这种可能性,但是即使只有你在访问又怎么样呢?世界上绝大部分网站访问人数本来就很少,这不能说明是异常流量
感谢大佬回复!
请问下,v2ray和nginx都正常运行了,可是还是无法正常代理访问网站。nginx的日志为116.8.59.231 – – [05/Nov/2020:10:32:54 +0000] “GET /hope HTTP/1.1” 404 0 “-” “Go-http-client/1.1″。v2ray没有日志,是哪里出问题了呢
伪装路径填错了
感谢大佬,已经正常运行了
老师,我上是这个月21-23号左右就不能科学上网了;我用macbook,今年5月份的时候按照您教的,下载了v2ray苹果版,在vultr购买了日本的服务器,按你教的方法搭建,用了小半年,一直都很稳,但就这阵子上不了油管和脸书了,有什么好的补救措施么?还是改用伪装?谢谢
换个ip或者换个端口
大佬,手机可以用伪装上网吗?
当然可以
博主尝试用下aws的cloudfont 加速,出个教程,我这配置不上去,惨
等有空吧,那个我还没玩过
你可以用cf的啊,还免费
我想问一下,域名解析服务器用国内商家没问题吧
没有问题
谢谢
我原来用的IPsec,没多久就会挂一次,这种方式靠谱
请问下 如果伪装域名被强了是不是不能用了?需要重新买域名解析VPS的IP还是有什么其他方法?
只要服务器没被墙,客户端那里填ip就能用,域名被墙没关系
再请教下 这个流量伪装和上面提到的一键脚本有什么区别?
基本一样
有劳解答
大神,你好,您这个软件是 V2RayW , 那么 V2RayN 也一样可以用?
可以的,只是界面不同
谢谢大神 , 还有疑问,ssl_prefer_server_ciphers off; 为什么设置成 off 呀 ? 还有 我怎么验证tls 是否已生效 ?
这是nginx的安全设置,如果tls小于1.3,建议为on;域名打开是https就说明生效了
我用的大佬的一键伪装,域名在Namesilo买的,想问下添加二级域名是怎么添加的,还有一键伪装完后,建静态网站编辑 /etc/nginx/conf.d/你的域名.conf 文件 是怎么编辑的,反向代理网站,编辑28行 怎么编辑? 用Bitvise命令编辑吗? 新手求教
域名解析看教程操作,用vim编辑
使用伪装之后 mac有websocket的代理工具吗,列表给出的v2ray mac客户端没有websocket连接,请问怎么配置
几乎所有的客户端都支持ws
怎么判断自己的v2ray是不是被墙了呢, 现在突然上不了谷歌了,端口是443,直接ip+443 是400 https+ip 请求不到。我这是被ban了吗
你的症状看起来不是被墙了,重启vps试试
重启也不行 难顶, 我怎么判断是哪个环节出了问题呢
首先确保伪装网站能打开,再看看配置和电脑时间对不对
伪站可以打开,配置最近没动过。电脑时间应该没问题,我手机也上不去QwQ
看看vps的时间对不对
卸载重新安装了一下解决了。麻烦你了
用哪种域名后缀比较好呢,xyz可以吗
域名后缀不影响,还要用来做站的话建议买一个稍微好点的
楼主,请问V2Ray安装后qq登陆超时但网页能打开怎么解决?
客户端配置错了,或者电脑时间不对
大佬,客户端要怎么配置?谢谢!
教程里不是说的很清楚吗?
我是按教程里步骤来的,还是出现了这样的问题,登陆电脑上的其他软件也都是登陆超时。。。
是按教程来的,还是出现这样的问题,在PC端登陆其他软件也有登陆超时。。。。
原则上代理软件只影响浏览器,不影响qq等其他应用。你的问题看起来是dns解析问题,建议重启电脑,或者把其他网络软件关了看看行不行
楼主:nginx 域名,证书,以及 V2Ray的服务器端都安装好了,没有啥问题, 不伪装的话,能正常使用;输入网址也能正常显示centos的页面, 但nginx与v2ray结合来进行伪装这里一直弄不好 🙁 个人判断,可能是我对伪装路径的概念理解出问题了,以您的示例为例,伪装路径是/awesomepath 的话,是需要在 nginx 的html路径之下 再建起/awesomepath 目录,还是在服务器的根目录直接来建这个目录? 亟待大佬的指点
不需要创建这个目录,只需要在nginx的配置文件里定义这个路径,然后转发给v2ray就可以了
大佬,最近用了流量伪装脚本+bbr plus,感觉速度不如今年3月份那个版本,ssl配置那里能再优化吗?
ssl配置那里基本上是最优了,建议你重启vps试试
请问大佬,这种方式配置成功后,与上面新手建议的带伪装一键脚本,在上传下载速度上有区别吗?哪一种更快呢
没有区别,应该都是一样的
好的谢谢
想问一下这种情况下,nginx做了反代,还可以做301重定向吗?例如https://example.com/path这个路径的流量转发给V2,其他所有的路径如https://example.com/abc都做重定向。可以的话应该怎么写配置呢?希望不吝赐教
可以的,写法大概如下:
server {
location /path {
# v2ray转发设置
}
location /abc {
return 301 重定向网址;
}
}
嗯,非常感谢,但我想的是除/path之外所有的路径都做301跳转,现在这样的配置估计只是/abc这个路径进行跳转了
把/abc改成/就好了
非常的感谢!!!
ubuntu19.10 伪装后可以用BBR吗
bbr系列都可以用,不能用锐速
非常感谢。我搭的V2Ray没开流量伪装时,我这边网络环境能用,朋友那边用不了。开流量伪装后就都能用了!
我的配置可能错了,在浏览器输入www.mydomain.com/path/to/v2ray的时候可以显示502,www.mydomain.com:442就不行了,没加nginx的配置还可以用,就是加了nginx的v2ray配置用不了,分析出错点可能的有三个:1 nginx 配置错。但每一行核对无误。2 v2ray服务端 配置错。核查每一行仍然正确。 3 客户端配置错。能找到的config都试了一遍,还是不能连接。v2rayW也试了。
请问接下来怎么办?
502说明v2ray没运行,另外直接输入域名和端口打不开,说明nginx配置错了
https://tlanyan.pp.ua/awesomepath,应该出现”Bad Request”
这里是不是输入别的awesomepath 也是 出现 Bad Request,如何确定路径正常,还有v2ray 怎么知道是配置好了 ?
谢谢啦
输入其他路径,应该是404 not found
nginx部分介绍的很全面详实啊,很受用,非常感谢。
爽了半年,终于被Ban ip了。上一次被Ban是用SS的年代。现在v2ray也沦陷了
没搞伪装站?
问一下我用的是virmach的1.25刀的,洛杉矶,系统centos7(好像是)我在国内跑测试(电信的宽带和移动的流量,结果基本一致)大概有300kb/s,打开网站更低,谷歌打开大概要5秒左右,油管打开就要等好久,我让我一个人在美国的同学测试,他的宽带是100m的换算过来是跑满的,想问一问具体说怎么了,因为运营商吗还是什么情况
国外的跑满不是很正常吗,他们又没有防火墙
昨天晚上真的是打开网站非常慢,主要是看不了视频,后来今天早上测试了就好了,刚刚好可以看4k视频,估计还是因为国际出口的问题吧…谢谢啦
晚高峰是会这样
linux新手用了一下午配置完了,感觉上网放心多了,可惜买的vps太垃圾,是pacificrack,速度不稳定。
感谢博主的无私分享!!!
大佬我用的是那个使用域名来伪装版本的脚本,一切都正常,就是用了锐速都觉得翻墙速度很慢,平均只有200kb,看看网页还行,youtube想看看高清视频就没办法了,请问有什么解决办法吗?
感谢您,按照您的两个教程,学习了科学。最后老出现 502 gateway error, 后来重新调试了新的端口,在 v2ray 和 nginx都重新设置了新的,终于成功了。感谢
走进科学。。。。。成功
恭喜
想知道,搞科研、外加逛quora和油管,不干坏事,不弄伪装,被封的概率多大?
不管你搞啥,不弄伪装就是容易挂
非常感谢文章,昨天搭建完成,v2ray能正常用,打开域名显示小说网站,但是今天打开域名提示502 bad gateway,v2能用,查看error log提示SSL_do_handshake() failed (SSL: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error)
求教怎么解决,谢谢
浏览器版本过低