v2ray / v2ray-core

A platform for building proxies to bypass network restrictions.
https://www.v2ray.com/
MIT License
45.44k stars 8.95k forks source link

v2ray配置tls后不能使用443、80等端口,换作其他端口时可正常使用 #492

Closed Fengzhiying2017 closed 7 years ago

Fengzhiying2017 commented 7 years ago

提交 Issue 之前请先阅读 Issue 指引,然后回答下面的问题,谢谢。 Please read the instruction and answer the following questions before submitting your issue. Thank you.

1) 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明) What version of V2Ray are you using (If you deploy different version on server and client, please explicitly point out)? 服务端2.33,客户端2.33.1 2) 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。 What's your scenario of using V2Ray? E.g., Watching YouTube videos in Chrome via Socks/VMess proxy. 使用ss和vmess进行科学上网 3) 你看到的不正常的现象是什么? What did you see? 配置为443、80等端口时客户端不能打开页面,换作其他端口时就正常 4) 你期待看到的正确表现是怎样的? What's your expectation? 既然使用tls最好使用443端口访问 5) 请附上你的配置文件(提交 Issue 前请隐藏服务器端IP地址)。 Please attach your configuration file (Mask IP addresses before submit this issue).

Server Configuration File(服务器端配置文件):

{ "log" : { "access": "/var/log/v2ray/access.log", "error": "/var/log/v2ray/error.log", "loglevel": "warning" }, "inbound": { "port": 443, "protocol": "vmess", "settings": { "clients": [ { "id": "xxxxxx", "level": 1, "alterId": 64 } ] }, "streamSettings": { "network": "tcp", "security": "tls", "tlsSettings": { "serverName": "www.abcd.com", "certificates": [ { "certificateFile": "/etc/letsencrypt/live/www.abcd.com/fullchain.pem", "keyFile": "/etc/letsencrypt/live/www.abcd.com/privkey.pem" } ] } } }, "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" } ] } } }

Client Configuration File(客户端配置文件):

{ "log": { "access": "", "error": "", "loglevel": "" }, "inbound": { "port": 1082, "listen": "127.0.0.1", "protocol": "socks", "settings": { "auth": "noauth", "udp": true, "ip": "127.0.0.1" } }, "outbound": { "tag": "agentout", "protocol": "vmess", "settings": { "vnext": [ { "address": "www.abcd.com", "port": 443, "users": [ { "id": "xxxxxx", "alterId": 64, "security": "aes-128-gcm" } ] } ] }, "streamSettings": { "network": "tcp", "security": "tls" }, "mux": { "enabled": true } }, "outboundDetour": [ { "protocol": "freedom", "settings": {}, "tag": "direct" }, { "protocol": "blackhole", "settings": { "response": { "type": "http" } }, "tag": "blockout" } ], "dns": { "servers": [ "8.8.8.8", "8.8.4.4", "localhost" ] }, "routing": { "strategy": "rules", "settings": { "domainStrategy": "IPIfNonMatch", "rules": [ { "type": "field", "outboundTag": "direct", "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" ] }, { "type": "chinasites", "outboundTag": "direct" }, { "type": "chinaip", "outboundTag": "direct" } ] } } }

6) 请附上出错时软件输出的日志。在 Linux 中,日志通常在 /var/log/v2ray/error.log 文件中。 Please attach the log file, especially the bottom lines if the file is large. Log file is usually /var/log/v2ray/error.log on Linux.

Server Log File(服务器端日志):

Client Log File(客户端日志):

补充:客户端使用的v2rayN,试过使用v2rayN自动生成服务端和客户端配置,也是一样的情况,换作其他端口就可以,443、80就不行,VPS上除了安装SS、v2ray外,还装了lnmp、wordpress博客,博客可以正常通过https://访问

yingziwu commented 7 years ago

端口号小于1023,程序需要以root权限运行2017年7月23日 下午6:41,Fengzhiying2017 notifications@github.com写道:提交 Issue 之前请先阅读 Issue 指引,然后回答下面的问题,谢谢。 Please read the instruction and answer the following questions before submitting your issue. Thank you.

你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明) What version of V2Ray are you using (If you deploy different version on server and client, please explicitly point out)? 服务端2.33.1,客户端2.33

你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。 What's your scenario of using V2Ray? E.g., Watching YouTube videos in Chrome via Socks/VMess proxy. 使用ss和vmess进行科学上网

你看到的不正常的现象是什么? What did you see? 配置为443、80等端口时客户端不能打开页面,换作其他端口时就正常

你期待看到的正确表现是怎样的? What's your expectation? 既然使用tls最好使用443端口

请附上你的配置文件(提交 Issue 前请隐藏服务器端IP地址)。 Please attach your configuration file (Mask IP addresses before submit this issue). Server Configuration File(服务器端配置文件): { "log" : { "access": "/var/log/v2ray/access.log", "error": "/var/log/v2ray/error.log", "loglevel": "warning" }, "inbound": { "port": 443, "protocol": "vmess", "settings": { "clients": [ { "id": "xxxxxx", "level": 1, "alterId": 64 } ] }, "streamSettings": { "network": "tcp", "security": "tls", "tlsSettings": { "serverName": "www.abcd.com", "certificates": [ { "certificateFile": "/etc/letsencrypt/live/www.abcd.com/fullchain.pem", "keyFile": "/etc/letsencrypt/live/www.abcd.com/privkey.pem" } ] } } }, "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" } ] } } } Client Configuration File(客户端配置文件): { "log": { "access": "", "error": "", "loglevel": "" }, "inbound": { "port": 1082, "listen": "127.0.0.1", "protocol": "socks", "settings": { "auth": "noauth", "udp": true, "ip": "127.0.0.1" } }, "outbound": { "tag": "agentout", "protocol": "vmess", "settings": { "vnext": [ { "address": "www.abcd.com", "port": 443, "users": [ { "id": "xxxxxx", "alterId": 64, "security": "aes-128-gcm" } ] } ] }, "streamSettings": { "network": "tcp", "security": "tls" }, "mux": { "enabled": true } }, "outboundDetour": [ { "protocol": "freedom", "settings": {}, "tag": "direct" }, { "protocol": "blackhole", "settings": { "response": { "type": "http" } }, "tag": "blockout" } ], "dns": { "servers": [ "8.8.8.8", "8.8.4.4", "localhost" ] }, "routing": { "strategy": "rules", "settings": { "domainStrategy": "IPIfNonMatch", "rules": [ { "type": "field", "outboundTag": "direct", "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" ] }, { "type": "chinasites", "outboundTag": "direct" }, { "type": "chinaip", "outboundTag": "direct" } ] } } }

请附上出错时软件输出的日志。在 Linux 中,日志通常在 /var/log/v2ray/error.log 文件中。 Please attach the log file, especially the bottom lines if the file is large. Log file is usually /var/log/v2ray/error.log on Linux. Server Log File(服务器端日志): 无 Client Log File(客户端日志): 无

补充:客户端使用的v2rayN,试过使用v2rayN自动生成服务端和客户端配置,也是一样的情况,换作其他端口就可以,443、80就不行,VPS上除了安装SS、v2ray外,还装了lnmp、wordpress博客,博客可以正常通过https://访问

—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or mute the thread.

husy8 commented 7 years ago

VPS上除了安装SS、v2ray外,还装了lnmp、wordpress博客,博客可以正常通过https://访问

lnmp占用的不是80/443端口?

Fengzhiying2017 commented 7 years ago

OK,现在我已基本确定问题原因与楼上wtlusvm童鞋说的一样,关闭lnmp后nginx释放443端口后,v2ray设为443端口可以连接(电脑、手机均可),但这时装在vps上的网站就打不开了;而另一台没有安装lnmp的vps申请证书将v2ray设为443端口时电脑端(v2rayN)可以连接,而手机上的shadowrocket连接不上,看了shadowrocket的调试日志,显示证书验证失败(后经检查是因为手机填的IP而不是申请证书的域名,改为域名就可以了)。

不过这里还是有一个悖论:服务端如果配置了真实的网页并配置好https://,客户端通过v2ray代理时是无法直接访问服务器443端口的,可以改为其他的端口访问,但通过其他的端口传输TLS,是不是会被直接识别为VPN流量?如果服务端没有配置真实网页,只是把域名绑定IP后申请证书,这样客户端在访问时虽然看起来像正常的https://访问,但其实证书绑定的域名是没有真实网页内容的,这样会不会还是没有起到伪装的效果? 可能采用websocket转发通过nginx分流是实现伪装的好方法? 当然以上我的配置方法可能有不对的地方,各位可以自行测试一下。

husy8 commented 7 years ago

可能采用 websocket 转发通过 nginx 分流是实现伪装的好方法?

是的,一般都是这样进行伪装的。

Fengzhiying2017 commented 7 years ago

还有几个问题: 1、配置websocket通过nginx分流时,需要额外配置tls相关信息吗?可不可以同时配置http混淆?如这样 "streamSettings": { "network": "ws", "security": "tls", //目前是写的auto不是tls,能正常通过443连接,貌似写tls反而不行 //或者下面这段不要,nginx会根据配置文件调用证书? "tlsSettings": { "serverName": "www.abcd.com", "certificates": [ { "certificateFile": "/etc/letsencrypt/live/www.abcd.com/fullchain.pem", "keyFile": "/etc/letsencrypt/live/www.abcd.com/privkey.pem" } ] }, //或者上面这段不要,nginx会根据配置文件调用证书? "wsSettings": { "connectionReuse": true, "path": "/v2ray/" } 是否可行?

2、当用tcp配置http混淆时在宽带运营商处的上网记录是访问网页,根据配置的网址随机显示;如果websocket不能配置混淆,是不是上网记录只能是证书绑定的域名?

3、理论上采用ws通过nginx分流方案与正常的https访问是一致的,也就是这样可能伪装度最高,如果多个客户端都用443端口转发,会不会导致性能下降影响速度?能否通过配置不同的内部监控端口和ws路径自动内部分流到v2ray的不同端口?

oing9179 commented 7 years ago

@Fengzhiying2017 Reply #6

  1. 服务器端的 v2ray 不需要配置 TLS,你需要把 HTTPS 解密工作交给 Nginx,也就是配置 Nginx 使用 SSL 证书,服务器端v2ray只需要接受明文 WebSocket 连接即可。 但客户端需要进行简单的设置,参考 这里
  2. 是的。
  3. 可行,需要修改 Nginx 配置,具体配置方法请自行研究。
Fengzhiying2017 commented 7 years ago

谢谢楼上,明白了,第三个问题也已经搞定,在nginx里加一条路径并分配不同端口,v2ray里设置一个分项连接就可以了。 另外发现ssr也是支持类似伪装的,只不过服务器前端是ssr来监控,访问时如果是ssr的请求则转给ssr服务端处理,如果是其他的转发给nginx,实现ssr与网站共存,初步研究了一下,貌似不能实现ssr与v2ray都访问443端口,通过二次转发达到ssr与v2ray及网站在同一台vps上共存

DarienRaymond commented 7 years ago

没必要让 ssr 和 v2ray 共存

HuLian21 commented 7 years ago

还是有一定必要的,比如我这里就有一个使用者连windows下的SSR都需要我帮忙设置开机自启,更不要说使用V2RAY,去设置各种规则了,最可怕的是使用环境只给了最常用的几个端口,在保证连接速率的情况下(亚洲好的服务器也挺贵),也就只能采用SSR+V2RAY同时用443/80的端口了

rickyryan commented 4 years ago

"inbounds": [ { "port": 63758, "protocol": "vmess", "settings": { "clients": [ { 我将这里的port修改以后,重启服务器。客户端连不上。 我该怎么样正确的修改这个port呢?

yuehanwali commented 4 years ago

谢谢楼上,明白了,第三个问题也已经搞定,在nginx里加一条路径并分配不同端口,v2ray里设置一个分项连接就可以了。另外 发现ssr也是支持类似伪装的,只不过服务器前端是ssr来监控,访问时如果是ssr的请求则转给ssr服务端处理,如果是其他的转发给nginx,实现ssr与网站共存,初步研究了一下,貌似无法实现ssr与v2ray都访问443端口,通过二次转发达到ssr与v2ray及网站在同一台vps上共存

你好,我也碰到了这个问题。我建立了一个wordpress网站,然后v2ray想用tls上网,显示端口冲突,要么网站不能上,要么不能FQ。能看一下你的设置吗

Spider-DT commented 3 years ago

谢谢楼上,明白了,第三个问题也已经搞定,在nginx里加一条路径并分配不同端口,v2ray里设置一个分项连接就可以了。另外 发现ssr也是支持类似伪装的,只不过服务器前端是ssr来监控,访问时如果是ssr的请求则转给ssr服务端处理,如果是其他的转发给nginx,实现ssr与网站共存,初步研究了一下,貌似无法实现ssr与v2ray都访问443端口,通过二次转发达到ssr与v2ray及网站在同一台vps上共存

你好,我也碰到了这个问题。我建立了一个wordpress网站,然后v2ray想用tls上网,显示端口冲突,要么网站不能上,要么不能FQ。能看一下你的设置吗

楼主找到解决办法了吗?我也是网站走的443端口,V2RAY只能光屁股跑了,太危险了

Spider-DT commented 3 years ago

@Fengzhiying2017 Reply #6

  1. 服务器端的 v2ray 不需要配置 TLS,你需要把 HTTPS 解密工作交给 Nginx,也就是配置 Nginx 使用 SSL 证书,服务器端v2ray只需要接受明文 WebSocket 连接即可。 但客户端需要进行简单的设置,参考 这里
  2. 是的。
  3. 可行,需要修改 Nginx 配置,具体配置方法请自行研究。

你好,最近在研究v2RAY和网页在同一 VPS 上的设置方法。正如前面讨论的网页占用443端口后, V2RAy无法设置TLS,但似乎可以实现websockets分流。 已经配置web服务器使用SSL证书(我用的是Apache2),并在web服务器配置文件中写入混淆地址,在V2ray客户端json也修改了,V2ray服务器设置ws协议,但还是无法联网