v2ray / v2ray-core

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

issue #1263解决了一半被关闭了,希望剩下的一部分问题也能得到指点 #1265

Closed dalifooder closed 6 years ago

dalifooder commented 6 years ago

前期提要:https://github.com/v2ray/v2ray-core/issues/1263 两个使用场景,其中a场景已经得到帮助顺利解决,但是b场景依然无法达成。搜索了issue历史也没有看到和我这个问题类似的解决方案,还希望有明白人来指点一下。

b使用场景log更新: 当使用OpenVPN客户端尝试连接v2ray客户端的socks端口时,客户端log报错为:“failed to parse UDP request > Proxy|Socks: discarding fragmented payload.”,v2ray服务器端仍然没有log显示。 v2ray客户端详细log:


2018/09/13 12:34:06 [Info] [4069484067] Proxy|Socks: client UDP connection from udp:192.168.1.42:50337
2018/09/13 12:34:06 [Info] [4069484067] Proxy|Socks: failed to parse UDP request > Proxy|Socks: discarding fragmented payload.
2018/09/13 12:34:09 [Info] [4069484067] Proxy|Socks: failed to parse UDP request > Proxy|Socks: discarding fragmented payload.
2018/09/13 12:34:14 [Info] [4069484067] Proxy|Socks: failed to parse UDP request > Proxy|Socks: discarding fragmented payload.
2018/09/13 12:34:22 [Info] [4069484067] Proxy|Socks: failed to parse UDP request > Proxy|Socks: discarding fragmented payload.
2018/09/13 12:34:37 [Info] [4069484067] Proxy|Socks: failed to parse UDP request > Proxy|Socks: discarding fragmented payload.
2018/09/13 12:34:54 [Info] App|Proxyman|Inbound: connection ends > EOF

OpenVPN客户端log:

Thu Sep 13 09:38:47 2018 SIGUSR1[soft,tls-error] received, process restarting
Thu Sep 13 09:38:47 2018 MANAGEMENT: >STATE:1536856727,RECONNECTING,tls-error,,,,,
Thu Sep 13 09:38:47 2018 Restart pause, 300 second(s)
Thu Sep 13 09:43:47 2018 TCP/UDP: Preserving recently used remote address: [AF_INET]192.168.1.41:1112
Thu Sep 13 09:43:47 2018 Socket Buffers: R=[65536->65536] S=[65536->65536]
Thu Sep 13 09:43:47 2018 UDP link local: (not bound)
Thu Sep 13 09:43:47 2018 UDP link remote: [AF_INET]192.168.1,41:1112
Thu Sep 13 09:43:47 2018 MANAGEMENT: >STATE:1536857027,WAIT,,,,,,
Thu Sep 13 09:44:47 2018 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Thu Sep 13 09:44:47 2018 TLS Error: TLS handshake failed
VictoriaRaymond commented 6 years ago

你大概需要在OpenVPN里配置一下MTU,比如这样:https://www.sonassi.com/help/troubleshooting/setting-correct-mtu-for-openvpn

dalifooder commented 6 years ago

@VictoriaRaymond 按照给的链接配置后情况依旧,也尝试把MTU改得极小,报错情况没有变化。 另外,链接里面说的意思是“MTU设置不合适会导致浏览网页时无法正常加载网页元素”,我现在是VPN还没有成功连上,从V2ray的log来看,好像是V客户端直接丢掉了OpenVPN的握手包,按说socks和vmess协议都是支持转发UDP数据报文的呀,为何会直接丢弃呢?

dalifooder commented 6 years ago

报错log更新: 把OpenVPN的协议由UDP改成TCP之后,V的客户端报错信息变为“failed to read request > Proxy|Socks: unknown Socks version: 0”,同样,V的服务端仍然无显示。 也查过issue历史,大家出现“unknown socks version”这个错误基本都是错把代理协议配置成HTTP出现“Unknown socks version 67”错误,像我这样的“version 0”好像没人提出来过。 客户端详细log:

2018/09/14 11:43:37 [Info] [3545591402] App|Proxyman|Inbound: connection ends > Proxy|Socks: failed to read request > Proxy|Socks: unknown Socks version: 0
2018/09/14 11:43:43 [Info] [3953976142] App|Proxyman|Inbound: connection ends > Proxy|Socks: failed to read request > Proxy|Socks: unknown Socks version: 0
2018/09/14 11:43:50 [Info] [718833424] App|Proxyman|Inbound: connection ends > Proxy|Socks: failed to read request > Proxy|Socks: unknown Socks version: 0
2018/09/14 11:43:56 [Info] [3975483253] App|Proxyman|Inbound: connection ends > Proxy|Socks: failed to read request > Proxy|Socks: unknown Socks version: 0
2018/09/14 11:44:02 [Info] [3168815817] App|Proxyman|Inbound: connection ends > Proxy|Socks: failed to read request > Proxy|Socks: unknown Socks version: 0
2018/09/14 11:44:13 [Info] [3050894854] App|Proxyman|Inbound: connection ends > Proxy|Socks: failed to read request > Proxy|Socks: unknown Socks version: 0
VictoriaRaymond commented 6 years ago

fragment是socks协议的一个特性,即被代理的UDP数据包超过了MTU大小,就分成多个数据包发送。这个特性在很多socks服务器工具中都是不支持的,V2Ray也一样。改小OpenVPN的MTU作用是让OpenVPN通知其上游的链路,不要发送那么大的数据包,如果OpenVPN有直接禁用fragment的设置也是可以的。

version: 0的问题不详,应该不是socks协议,但我也不清楚哪个协议的开头是0

dalifooder commented 6 years ago

所以这个问题没有解决的头绪了吗? 以前用任意门协议直接做端口映射是可以正常连上VPN的,现在我想达到隐藏OpenVPN服务端口的目的,又想利用V的Vmess协议建立的通道,还有什么其他的思路吗?

VictoriaRaymond commented 6 years ago

你用任意门的时候就不用vmess了?

dalifooder commented 6 years ago

用了的,但是以前直接端口映射不是需要VPN的服务端口对外开放吗?现在只在本地侦听后,任意门协议映射不到这个端口了呀,所以我才想到建立 socks ==>vmess===vmess==>freedom到本地端口 这样的链路。但是现在socks转发VPN的流量暂时由无法解决的问题,所以你有适合这种需求的新的链路建立办法吗?

VictoriaRaymond commented 6 years ago

你也可以 dokodemo <-> vmess <-> vmess <-> freedom 的

dalifooder commented 6 years ago

用任意门协议,那address字段怎么写?难道直接写“127.0.0.1”?

dalifooder commented 6 years ago

测试了一下,刚开始直接写“127.0.0.1”,发现还是连接失败,查看log发现路由走的是“direct”,把路由里面的“127.0.0.0/8”删掉之后,居然真的连上了?!哈哈哈 但是现在连是连上了,但是OpenVPN的连接log里面有一个报错: “NOTE: unable to redirect default gateway -- Cannot read current default gateway from system” 现在情况是能ping通10.8.0.1这个地址,但是无法上网,我再查查看,有新情况及时更新。

dalifooder commented 6 years ago

更新: VPN服务器推送的配置默认网关信息一直无法自动配置成功,在手动给TAP0网卡配置网关后可以正常上网了。以前使用任意门协议address直接写VPS的外网IP时是没有这个情况的,也不知道是啥原因。 现在总之是能连上了,之后再写个bat让它配置一次默认网关就OK了,这个解决办法虽然不完美,但是可以接受。 经过这几天的讨论,现在终于解决了这个问题,很开心,谢谢你的帮助👍