欢迎加入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客户端下载。
非常感谢文章。
不带伪装的v2已经配置好了,能正常使用。
但是通过443 nginx转发到v2会报错无法使用。客户端V2rayN
错误信息:
2020/06/07 21:35:57 [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://www.xxx.xyz/user/accountsettings): 502 Bad Gateway > websocket: bad handshake] > v2ray.com/core/common/retry: all retry attempts failed
nginx配置
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xxx.xyz;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name xxx.xyz;
root /usr/share/nginx/html;
ssl_certificate “/etc/letsencrypt/live/www.xxx.xyz/fullchain.pem”;
ssl_certificate_key “/etc/letsencrypt/live/www.xxx.xyz/privkey.pem”;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
location / {
}
location /user/accountsettings {
proxy_redirect off;
proxy_pass http://127.0.0.1:40800;
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;
}
v2配置
{
“inbounds”: [{
“port”: 40800,
“protocol”: “vmess”,
“settings”: {
“clients”: [
{
“id”: “xxx”,
“level”: 1,
“alterId”: 0
}
]
},
“streamSettings”: {
“networtrk”: “ws”,
“wsSettings”: {
“path”: “/user/accountsettings”
}
}
}],
“outbounds”: [{
“protocol”: “freedom”,
“settings”: {}
},{
“protocol”: “blackhole”,
“settings”: {},
“tag”: “blocked”
}],
“routing”: {
“rules”: [
{
“type”: “field”,
“ip”: [“geoip:private”],
“outboundTag”: “blocked”
}
]
}
}
v2里去掉了listen测试了直接连接是可以使用的,我认为问题要么是我的v2rayN的配置填写错误,要么是nginx的转发有问题。
nginx正常,访问根目录是欢迎页,https访问path是502
麻烦博主帮忙看一下
(不知道评论是否成功提交,可能重复提交了)
因为用的ws协议,所以nginx转发配置里 proxy_set_header Upgrade $http_upgrade 是必须的,取消注释然后重启nginx试试
访问带链接的域名一直提示502bad gateway,setenforce 0已经设置过了,还有什么其他可能原因么?
v2没有正常运行,或者转发端口错了
感谢大神分享,请教个问题,配置Nginx后没有出现nginx的欢迎页,是配置出错了吗
看nginx的具体配置
给力,稳定运行半年
大佬,我今天被墙了,vultr可以ping通,ssh可以登录,服务器可以ping通谷歌和百度,但是修改了端口还是没法用,想问一下可能是什么问题
评论错地方了,sorry,没有用到伪装,只有一件v2ray脚本
防火墙没开
您好,我的v2ray已经搭建好了,现在我想用python爬取墙外的一些数据但是不想开全局模式。请问有没有设置python走代理的方法,谢谢
搜一下proxifier
您好,我现在搭建成功了,是通过国内阿里服务器做中转,也就是 客户端->阿里云->国外服务器 这样的流程,阿里云这边是用v2ray的Dokodemo door做端口转发。现在电脑使用现在是没问题,但是手机会出现ssl证书报错,您知道怎么解决吗?
配置错误或者电脑时间不对
我现在已经找出错误原因,但是不知道怎么解决。
中转服务器v2ray配置如下:
{
“inbounds”: [{
“port”: 1026,
“listen”: “0.0.0.0”,
“protocol”: “dokodemo-door”,
“settings”: {
“address”: “xxxxx.cn”,
“port”: 443,
“network”: “tcp,udp”
},
“tag”: “”,
“sniffing”: {
“enabled”: true,
“destOverride”: [
“http”,
“tls”
]
}
}],
“outbounds”: [{
“protocol”: “freedom”,
“settings”: {}
},{
“protocol”: “blackhole”,
“settings”: {},
“tag”: “blocked”
}],
“routing”: {
“rules”: [
{
“type”: “field”,
“ip”: [“geoip:private”],
“outboundTag”: “blocked”
}
]
}
}
问题出在dokodemo-door的listen上,这里监听的是ip+端口,但是这样的话数据传回来是带有国外服务器的证书,导致ssl错误。这点上该怎么解决?
不是这个问题,否则电脑也用不了
好像就是这个问题,我使用的的v2rayN客户端,在允许不安全连接模式下可以使用,关闭后电脑也用不了。而且我在浏览器里输入xx.xx.xx.xx:1026会报错The plain HTTP request was sent to HTTPS port。但是如果加上https://就可以访问境外服务器的伪装网站,只不过是会报证书错误。
那是证书问题,和中转没关系
那中转服务器怎么使用证书?
四层转发不需要证书,七层转发才需要
我搭建的好像就要证书0.0老哥你知道怎么处理这种证书错误吗
本来就是要证书啊
可以加你qq吗,您能帮指导下吗,给你看个截图你就懂了,在这里不好解释
发到我邮箱吧
找到问题所在了,在客户端中,把伪装域名填写为国外服务器上的域名就好了
怎么我在你这里下的完全跟你界面上不一样啊
你用的什么客户端?
这样多个用户,要在nginx 里面配置不同的location ?
嗯,这种方式可行,不过v2那边也要配置多个path,或者nginx层面用rewrite
nginx完整的配置方便发一下吗?不知道哪里配置的有问题,访问path一直404。。。
重启nginx试试
还是不行,我贴下我的配置还请老哥帮我看下(域名我用XXX隐藏了),真是麻烦了:)
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name http://www.XXXX.com XXXX.com; # 改成你的域名
rewrite ^(.*) https://$server_name$1 permanent;
root /usr/share/nginx/html;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl http2;
server_name http://www.XXXX.com XXXX.com;
charset utf-8;
# 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;
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 /etc/letsencrypt/live/XXXX.com/fullchain.pem; # 改成你的证书地址
ssl_certificate_key /etc/letsencrypt/live/XXXX.com/privkey.pem; # 改成证书密钥文件地址
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /usr/share/nginx/html;
location / {
index index.html;
}
location /goodgoodstudy { # 与 V2Ray 配置中的 path 保持一致
proxy_redirect off;
proxy_pass http://127.0.0.1:18008; # 假设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配置没问题,访问域名正常,加上path才404?可能是你后端v2的问题
是的,加上path就404了,直接访问域名,打开centos的欢迎页,这个应该是对的,html下的index就是centos。v2ray配置贴给你看下:
{
“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”: “/goodgoodstudy”
}
},
“listen”: “127.0.0.1”
}
],
“outbounds”: [
{
“protocol”: “freedom”,
“settings”: {}
},
{
“protocol”: “blackhole”,
“settings”: {},
“tag”: “blocked”
}
],
“routing”: {
“rules”: [
{
“type”: “field”,
“ip”: [
“geoip:private”
],
“outboundTag”: “blocked”
}
]
}
}
v2监听的12345,但是你nginx转发到了18008啊,这两个对不上
直接访问域名打开centos欢迎页,加path就是404,我贴下v2ray的配置:
{
“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”: “/goodgoodstudy”
}
},
“listen”: “127.0.0.1”
}
],
“outbounds”: [
{
“protocol”: “freedom”,
“settings”: {}
},
{
“protocol”: “blackhole”,
“settings”: {},
“tag”: “blocked”
}
],
“routing”: {
“rules”: [
{
“type”: “field”,
“ip”: [
“geoip:private”
],
“outboundTag”: “blocked”
}
]
}
}
端口对的,12345是我贴出来随便写的
netstat -nltp,有啥输出?
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9530/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 711/sshd
tcp 0 0 127.0.0.1:18008 0.0.0.0:* LISTEN 9542/v2ray
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 848/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 9530/nginx: master
tcp6 0 0 :::22 :::* LISTEN 711/sshd
看起来没问题
不一定必须要400,这样就可以用了,只是网速真的巨慢,小水管还是不用尝试这种方式了
这个用了tls加密,配置不好的vps会比较慢
大神,我按你的教程配置好了,最后测试网页返回也是显示“Bad Request”,但是ios小火箭和windows客户端配置完无法科学上网,v2rayN\W试过都不行,在VPS上PING可以PING通Google、YouTube,请问这是什么原因啊。
可能是客户端时间和服务器相差太大
昨天按照教程设置了伪装,今天443端口就被封掉了
换个端口试试
有个问题一直不理解:当我访问谷歌的时候,系统是怎么知道我的流量要走v2ray的。比如我访问https://tlanyan.pp.ua/awesomepath,流量确实也被v2ray接收了,但是我最终的目的是谷歌,系统是怎么知道当我访问www.google.com时候就要走v2ray,访问www.baidu.com的时候就不走v2ray的,我看整个流程并没有在哪里配这样的一个映射关系,还是说wss很智能,只要把这一套搭建起来了,它就能自动识别哪些是要翻的哪些是正常的。
这是因为v2ray客户端开启了pac模式,pac列表里指出了哪些域名和ip要走代理,哪些是直接连接。如果你用全局模式,不管国内还是国外的网站,全部走代理
感谢作者的分享,一定花费了比较多的个人时间吧,真心感谢。
有一个问题需要咨询一下。我的v2ray 伪装已经做好了
在mac上使用 的v2rayX 没有任何问题。
手机上使用 shadowrocket 配置好伪装过的参数,wifi没有任何问题,但是4G 就是访问不了。
如果换成不伪装的tpc访问 4G和wifi都没有问题。这是什么原因引起的?
可能是移动限制了域名访问,nginx额外多监听一个端口,用那个端口试试
我在客户端的端口填443或80,是不通的,填12345就没问题。
反过来查文件配置发现 “inbounds”:和”listen”内容的差异,网上的教程都是在“inbounds”里有配置协议,
纯v2ray下载,客户端的端口用443或80可以使用。
而安装v2-ui后,相同的配置协议在“listen”,就要用12345端口
没用过v2-ui,不过要想伪装能用,v2ray和nginx都要设置好,至于listen在哪里,只要符合要求就可以
文章对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端口输出。
请问是否有解决的方法,谢谢
为啥不能伪装到443或者80端口?用nginx转发一下不就可以了?
为什么我配置好以后翻不了呢…
看看电脑时间对不对
昨天配置好的,手机能用,电脑也能用,但是放到另外一台电脑就不行,天呐,这是咋回事啊。
启动服务(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)
大概率是电脑时间不对
您说的真对!谢谢您!
我电脑时间是对的为啥还会有这个问题捏?
节点挂了或者配置参数错误
应该是节点挂了。。
不过为啥我还是可以测试服务器的ping?
而且为什么蓝灯也挂了。。我还以为是我自己的问题。。
我是小白别打我。。
ping和节点挂了不冲突,电脑死机键盘灯还能亮呢
配置好了。但网速跟没伪装之前的差不多。还是很慢。楼主,怎么办?谢谢你!
换个客户端试试
配置成功,能正常使用,用的gcp,响应在50-80ms之间,但是访问网站很慢,不知道什么鬼
说明丢包率高
大佬,为什么我装完了之后,Google自己的ip,还是vps的地址呢?我已经用cf中转了,但是我发现域名提示521啥的,然后访问路径一样提示,不知道为啥,而且翻墙的速度超快。
还是想一劳永逸的,所以想办法隐藏真实ip
用全局模式
就是全局模式的,主要是访问域名会报错,这个不正常的吧,不会显示那小说网站或者那个页面了。
测试的时候不要开启代理
这样后手机上网会不会受服务器宽带的限制?
不管用不用伪装,都受服务器带宽限制
站长,v2ray+websocket+tls 手动配置比较复杂,买域名搞证书搭网站弄转发,配置文件复杂的一比。搭简化的trojan要简单的多,搭个80网站就行了,https它自己搞定,配置文件也简单的一笔,可以一试。
另外用caddy比ngx要简单一个数量级
caddy是简单,但是trojan也要域名和证书才可以的,caddy只是配置简单帮你申请证书罢了
trojan理论上不需要搭建80网站,支持转发到其他网站和端口
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”了,配置好客户端以后,还是翻不了,帮忙看一下是怎么回事,谢谢!
客户端配置问题,伪装域名填错了
用V2RAY平台订阅服务器,是否安全呢
安全性取决于服务端
你好。我按照教程做完以后,访问路径显示502 Bad Gateway,然后执行 setenforce 0 之后好了。但就是连不上,然后查了一下发现服务器时间比电脑时间早了十分钟。但这个时间就是怎么也改不过来。在网上搜的 ntpdate 命令,执行之后显示“No server suitable for synchronization found”,按照网上的教程都做过了,都没用。
/(ㄒoㄒ)/~~
这个有什么办法吗?
用date命令设置时间,或者查一下CentOS 8同步时间命令(CentOS 7中的ntpdate已经不能用了)
博主,我mac发现个神奇的事,之前老是翻不过去,还有个原因是客户端的问题,同样的配置在v2rayU上翻不过去,在V2rayX上没问题.博主有碰到过类似问题吗,我是真服了.
还有个问题,就是能否配置局域网下其他设备也能翻墙,比如游戏机,连电脑网络,怎么走v2ray
这个我还真没遇到过,不过我一直用的是v2rayX。
最简单的办法是在路由器上配置v2ray,不过这个过程也不简单:要买能安装插件的路由器(华硕),然后安装插件和配置,弄好后局域网内所有的设备自动能上外网了
哎,这个玩意每隔一天左右,就失效了翻不过去,.大概是经过了一天,服务器时间和本机时间相差过大,
然后用百度上的方法,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
centos8没有ntp
我是CentOS 7, ntpdate 任何服务器都是“No server suitable for sync found”
我的两个Vultr都可以
就是那一个不行(那个服务器比较便宜,不知道是不是因为贪小便宜的原因?)
你好作者,请问这样的方式搭建v2,是否可以通过在config中添加多个配置(或在监听的端口那里填上多个端口),来实现多用户/多端口?谢谢
可以的,多端口的话记得防火墙要放行
nginx可以了,访问域名下的awesomepath,页面502 bad gateway.路径和监听端口我看了都是统一的,没有转发成功是什么问题
可能是selinux问题,禁用后再试试:
setenforce 0
好像我setenforce 0之后,再访问域名下的awesomepath是Bad Request,这证明是设置成功了吗,然后本地开代理,翻不过去啊
是bad request了,客户端开了代理,翻不过去啊
说明客户端配置错了,或者客户端时间和服务器不一致
我看了日志,好像客户端有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
看你下面的评论,有可能是系统时间导致的是吧,这个是什么原因怎么解决呢
我好了,文章还是没读仔细,是我客户端那个端口写错了,应该是443,我写成了配置文件里的端口了我晕
我算是明白了,当在/etc/v2ray/config.json文件里添加”streamSettings”配置之前,在我本机电脑telnet ip 端口号,这个是能连通的,然后加了以上配置,重启了v2ray后,telnet不通了,这是什么原因,就因为加了这个配置,v2ray在该端口下的服务没跑起来吧
不对哦,tcp网络的可以正常翻过去,加上了streamSettigns配置后,客户端改成ws,翻不过去了,nginx,v2ray都是正常的呀
要么服务端配置错了,要么你客户端配置出错
我看了下服务端时间Wed Feb 26 03:20:43 UTC 2020
我现在的时间是11.20,相差了7个多小时吧,感觉应该是这个问题
这个如何修改呀博主,还有,时区要改吗,要考虑时差吗这些
用一键脚本吧,安装完能用再慢慢研究