wangyu- / udp2raw

A Tunnel which Turns UDP Traffic into Encrypted UDP/FakeTCP/ICMP Traffic by using Raw Socket,helps you Bypass UDP FireWalls(or Unstable UDP Environment)
MIT License
7.31k stars 1.17k forks source link

huge packet, data_len > 1800,dropped报错 #186

Open lcpp1123 opened 6 years ago

lcpp1123 commented 6 years ago

openvpn+UDP兄弟串联之前一切正常,换了新VPS后没有备份就重新自建了。 openvpn直连正常,单套UDPspeeder正常。 单套UDP2raw时客户端报错

[[2018-06-28 04:06:21][INFO]new packet from 127.0.0.1:26125,conv_id=20eebfec
[2018-06-28 04:06:56][INFO]state back to client_idle from  client_ready bc of client-->server direction timeout
[2018-06-28 04:06:57][INFO]using port 52939
[2018-06-28 04:06:57][INFO]state changed from client_idle to client_tcp_handshake
[2018-06-28 04:06:57][INFO](re)sent tcp syn
[2018-06-28 04:06:57][INFO]state changed from client_tcp_handshake to client_handshake1
[2018-06-28 04:06:57][INFO](re)sent handshake1
[2018-06-28 04:06:57][INFO]changed state from to client_handshake1 to client_handshake2,my_id is 45649976,oppsite id is ce4ef966
[2018-06-28 04:06:57][INFO](re)sent handshake2
[2018-06-28 04:06:58][INFO]changed state from to client_handshake2 to client_ready
[2018-06-28 04:07:07][INFO]new packet from 127.0.0.1:43742,conv_id=3e473338
[2018-06-28 04:07:08][WARN]huge packet, data_len > 1800,dropped
[2018-06-28 04:07:15][WARN]huge packet, data_len > 1800,dropped
[2018-06-28 04:07:20][INFO]state back to client_idle from  client_ready bc of client-->server direction timeout
[2018-06-28 04:07:21][INFO]using port 59202
[2018-06-28 04:07:21][INFO]state changed from client_idle to client_tcp_handshake
[2018-06-28 04:07:21][INFO](re)sent tcp syn
[2018-06-28 04:07:21][INFO]state changed from client_tcp_handshake to client_handshake1
[2018-06-28 04:07:21][INFO](re)sent handshake1
[2018-06-28 04:07:21][INFO]changed state from to client_handshake1 to client_handshake2,my_id is 1477fa2a,oppsite id is fc7aeb13
[2018-06-28 04:07:21][INFO](re)sent handshake2
[2018-06-28 04:07:21][INFO]changed state from to client_handshake2 to client_ready
[2018-06-28 04:07:24][WARN]huge packet, data_len > 1800,dropped

openvpn版本 OpenVPN 2.4.0 x86_64-pc-linux-gnu

openvpn报错

 TLS: Initial packet from [AF_INET]127.0.0.1:16605, sid=aade2995 b069b9fe
 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
 TLS Error: TLS handshake failed
 SIGUSR1[soft,tls-error] received, client-instance restarting

命令: server ./udp2raw/udp2raw_amd64 -s -l0.0.0.0:443 -r127.0.0.1:4096 -a -k "passwd" --raw-mode faketcp

cilne ./udp2raw/udp2raw_amd64 -c -l0.0.0.0:4098 -r*.*.*.*:443 -a -k "passwd" --raw-mode faketcp

按照你给的例子 添加了

fragment 1200       ##### very important    you can turn it up a bit. but, the lower the safer
mssfix 1200         ##### very important
sndbuf 2000000      ##### important
rcvbuf 2000000      ##### important

还是一样报错了

[2018-06-28 04:32:58][WARN]huge packet, data_len > 1800,dropped

TLS: Initial packet from [AF_INET]127.0.0.1:25525, sid=2696a37f 0e37cb36
TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS handshake failed
Jun 28 13:33:51 debian ovpn-server[1398]: 127.0.0.1:25525 SIGUSR1[soft,tls-error] received, client-instance restarting

openvpn的默认设置是没有超过限制的。 看到所有的设置,是因为openvpn的MTU要手工设置吗? 麻烦请问一下是修改哪个参数。或者提供参考一个目前比较稳定的openvpn版本。 谢谢!

wangyu- commented 6 years ago

client和server两边都加上

fragment 1200 
mssfix 1200 

或者在udp2raw和openvpn中间加一个UDPspeeder。

lcpp1123 commented 6 years ago

按照你给的例子 添加了

fragment 1200       ##### very important    you can turn it up a bit. but, the lower the safer
mssfix 1200         ##### very important
sndbuf 2000000      ##### important
rcvbuf 2000000      ##### important

还是一样报错了

[2018-06-28 04:32:58][WARN]huge packet, data_len > 1800,dropped

TLS: Initial packet from [AF_INET]127.0.0.1:25525, sid=2696a37f 0e37cb36
TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS handshake failed
Jun 28 13:33:51 debian ovpn-server[1398]: 127.0.0.1:25525 SIGUSR1[soft,tls-error] received, client-instance restarting

不添加参数 直接UDPseppder+UDP2raw串联

server 命令

./udpspeeder/speederv2_amd64 -s -l 0.0.0.0:4096 -r 127.0.0.1:1443   -k "passwd" --mode 0 -f2:4 --timeout 0
./udp2raw/udp2raw_amd64 -s -l0.0.0.0:443 -r127.0.0.1:4096 -a -k "passwd" --raw-mode faketcp

cline 命令

 ./udp2raw/udp2raw_amd64 -c -l0.0.0.0:4098 -r*.*.*.*:443 -a -k "passwd" --raw-mode faketcp
./udpspeeder/speederv2_amd64 -c -l0.0.0.0:4099 -r127.0.0.1:4098   -k "passwd" --mode 0 -f2:4 --timeout 0

客户端报错

[2018-06-28 04:49:48][INFO]new packet from 127.0.0.1:63991,conv_id=f6e97573
[2018-06-28 04:49:51][WARN]huge packet, data_len > 1800,dropped
[2018-06-28 04:49:51][WARN]huge packet, data_len > 1800,dropped
[2018-06-28 04:50:17][INFO]state back to client_idle from  client_ready bc of server-->client direction timeout
[2018-06-28 04:50:18][INFO]using port 55435
[2018-06-28 04:50:18][INFO]state changed from client_idle to client_tcp_handshake
[2018-06-28 04:50:18][INFO](re)sent tcp syn
[2018-06-28 04:50:18][INFO]state changed from client_tcp_handshake to client_handshake1
[2018-06-28 04:50:18][INFO](re)sent handshake1
[2018-06-28 04:50:18][INFO]changed state from to client_handshake1 to client_handshake2,my_id is d23940e6,oppsite id is b0d4d8f3
[2018-06-28 04:50:18][INFO](re)sent handshake2
[2018-06-28 04:50:18][INFO]changed state from to client_handshake2 to client_ready

openvpn报错

Jun 28 13:49:50 debian ovpn-server[1645]: 127.0.0.1:42081 TLS: Initial packet from [AF_INET]127.0.0.1:42081, sid=8500c5a4 4f0c379a
Jun 28 13:50:51 debian ovpn-server[1645]: 127.0.0.1:42081 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Jun 28 13:50:51 debian ovpn-server[1645]: 127.0.0.1:42081 TLS Error: TLS handshake failed
Jun 28 13:50:51 debian ovpn-server[1645]: 127.0.0.1:42081 SIGUSR1[soft,tls-error] received, client-instance restarting

UDPspeeder版本

UDPspeeder V2
git version: 4d3b713b05    build date: Nov 24 2017 11:12:50

UDP2raw版本

udp2raw-tunnel
git version:2c67c319b7    build date:Feb 24 2018 18:07:42
repository: https://github.com/wangyu-/udp2raw-tunnel

没有使用最新版本 但是是我之前使用的没有问题的版本。 是够需要下载最新版?

wangyu- commented 6 years ago

没有使用最新版本 但是是我之前使用的没有问题的版本。 是够需要下载最新版?

不需要,你现在用的版本也可以

你试下清空iptables(用wiki中的方法),如果用了虚拟机,检查下是不是桥接。另外你自己回忆一下跟之前的配置有什么区别吧。

wangyu- commented 6 years ago

我提醒你一下,你一周内已经开了5个issue了。 不要让issue列表被你的issue刷屏,你近期如果还有问题,尽量发到你的现有ISSUE中。

https://github.com/wangyu-/UDPspeeder/wiki/发Issue前请看

lcpp1123 commented 6 years ago

非常非常抱歉...有点急了。 为了方便测试,server和cline都是使用的VPS 目前尝试的情况下,就是直连和单套UDPspeeder正常。套上udp2raw就通讯异常,出现了异常大包。 可以提供一些其他排查问题的思路吗? 比如使用哪些什么小程序确认udp2raw是联通的? 或者不知道作者大大是否有时间帮我看下环境情况?可以把环境发给你.

wangyu- commented 6 years ago

可以提供一些其他排查问题的思路吗?

我觉得你没看我给你的链接,里面有基本的追查思路。

https://github.com/wangyu-/UDPspeeder/wiki/发Issue前请看

比如使用哪些什么小程序确认udp2raw是联通的?

ncat/udpping

或者不知道作者大大是否有时间帮我看下环境情况?可以把环境发给你.

我最近没时间帮人追查环境问题了。

建议你看看wiki。 还有翻一下以前的issue,有很多以前的类似ISSUE。

lcpp1123 commented 6 years ago

突然一次单套UDP2raw拨号成功了.成功后的报错是:

[2018-06-28 14:38:48][WARN]huge packet,data len=1419 (>=1375).strongly suggested to set a smaller mtu at upper level,to get rid of this warn
 [2018-06-28 14:38:49][WARN]huge packet,data len=1419 (>=1375).strongly suggested to set a smaller mtu at upper level,to get rid of this warn
 [2018-06-28 14:38:49][WARN]huge packet,data len=1419 (>=1375).strongly suggested to set a smaller mtu at upper level,to get rid of this warn
 [2018-06-28 14:38:51][WARN]huge packet,data len=1419 (>=1375).strongly suggested to set a smaller mtu at upper level,to get rid of this warn
 [2018-06-28 14:38:51][WARN]huge packet,data len=1419 (>=1375).strongly suggested to set a smaller mtu at upper level,to get rid of this warn
 [2018-06-28 14:38:52][WARN]huge packet,data len=1419 (>=1375).strongly suggested to set a smaller mtu at upper level,to get rid of this warn

这样的话就基本判断就是MTU的问题吧? openvpn设置MTU的方法就是 fragment 1200 mssfix 1200 我再尝试尝试吧.

lcpp1123 commented 6 years ago

使用了--log-level 5如下报错

root@vultr:~#  ./udp2raw/udp2raw_amd64 -c -l0.0.0.0:4098 -r*.*.*.*:2443 -a -k "passwd" --raw-mode faketcp --log-level 5
[2018-06-28 05:53:11][INFO]argc=11 ./udp2raw/udp2raw_amd64 -c -l0.0.0.0:4098 -r*.*.*.*:2443 -a -k passwd --raw-mode faketcp --log-level 5 
[2018-06-28 05:53:11][DEBUG]parsing key option
[2018-06-28 05:53:11][DEBUG]option_index: 6
[2018-06-28 05:53:11][DEBUG]option_index: 2
[2018-06-28 05:53:11][INFO]important variables: log_level=5:DEBUG raw_mode=faketcp cipher_mode=aes128cbc auth_mode=md5 key=passwd local_ip=0.0.0.0 local_port=4098 remote_ip=*.*.*.* remote_port=2443 source_ip=0.0.0.0 source_port=0 socket_buf_size=1048576 
[2018-06-28 05:53:11][WARN]you can run udp2raw with non-root account for better security. check README.md in repo for more info.
[2018-06-28 05:53:11][INFO]const_id:6eac3a30
[2018-06-28 05:53:11][INFO]run_command iptables -N udp2rawDwrW_6eac3a30_C0
[2018-06-28 05:53:11][INFO]run_command iptables -F udp2rawDwrW_6eac3a30_C0
[2018-06-28 05:53:11][INFO]run_command iptables -I udp2rawDwrW_6eac3a30_C0 -j DROP
[2018-06-28 05:53:11][INFO]run_command iptables -I INPUT -s *.*.*.*/32 -p tcp -m tcp --sport 2443 -j udp2rawDwrW_6eac3a30_C0
[2018-06-28 05:53:11][WARN]auto added iptables rules
[2018-06-28 05:53:11][INFO]get_src_adress called
[2018-06-28 05:53:11][DEBUG]created new udp_fd 6
[2018-06-28 05:53:11][INFO]source ip = 149.*.*.135
[2018-06-28 05:53:11][DEBUG]send_raw : from 87e71c95 0  to 3943661b 2443
[2018-06-28 05:53:11][DEBUG]created new udp_fd 10
[2018-06-28 05:53:11][INFO]using port 21186
[2018-06-28 05:53:11][DEBUG]error remove fiter
[2018-06-28 05:53:11][INFO]state changed from client_idle to client_tcp_handshake
[2018-06-28 05:53:11][INFO](re)sent tcp syn
[2018-06-28 05:53:11][INFO]state changed from client_tcp_handshake to client_handshake1
[2018-06-28 05:53:11][INFO](re)sent handshake1
[2018-06-28 05:53:12][DEBUG]auth_verify failed
[2018-06-28 05:53:12][DEBUG]decrypt_fail in recv bare
[2018-06-28 05:53:12][DEBUG]recv_bare failed!
[2018-06-28 05:53:12][INFO]changed state from to client_handshake1 to client_handshake2,my_id is d378d656,oppsite id is 3f36912f
[2018-06-28 05:53:12][INFO](re)sent handshake2
[2018-06-28 05:53:12][DEBUG]auth_verify failed
[2018-06-28 05:53:12][DEBUG]recv_safer failed!
[2018-06-28 05:53:12][INFO]changed state from to client_handshake2 to client_ready
[2018-06-28 05:53:12][DEBUG]heartbeat sent <3f36912f,d378d656>
[2018-06-28 05:53:12][DEBUG][hb]heart beat received,oppsite_roller=0
[2018-06-28 05:53:12][DEBUG]auth_verify failed
[2018-06-28 05:53:12][DEBUG]recv_safer failed!
[2018-06-28 05:53:12][DEBUG]auth_verify failed
[2018-06-28 05:53:12][DEBUG]recv_safer failed!
[2018-06-28 05:53:13][DEBUG][hb]heart beat received,oppsite_roller=1
[2018-06-28 05:53:13][DEBUG]heartbeat sent <3f36912f,d378d656>
[2018-06-28 05:53:13][DEBUG]len%16!=0
[2018-06-28 05:53:13][DEBUG]cipher_decrypt failed 
[2018-06-28 05:53:13][DEBUG]recv_safer failed!
[2018-06-28 05:53:13][DEBUG]auth_verify failed
[2018-06-28 05:53:13][DEBUG]recv_safer failed!
[2018-06-28 05:53:13][DEBUG]auth_verify failed
[2018-06-28 05:53:13][DEBUG]recv_safer failed!
[2018-06-28 05:53:13][DEBUG][hb]heart beat received,oppsite_roller=2
[2018-06-28 05:53:13][DEBUG]heartbeat sent <3f36912f,d378d656>
[2018-06-28 05:53:14][DEBUG]len%16!=0
[2018-06-28 05:53:14][DEBUG]cipher_decrypt failed 
[2018-06-28 05:53:14][DEBUG]recv_safer failed!
[2018-06-28 05:53:14][DEBUG]auth_verify failed
[2018-06-28 05:53:14][DEBUG]recv_safer failed!

请问这些是什么情况?

lcpp1123 commented 6 years ago

非常抱歉不是专业人员。 发现作者的程序思路正好可以解决我的问题,所以就倒腾了。 太多小白问题抱歉! 使用了nc,发现通讯断断续续,时常会断开。 UDP2raw会报错 rst==1,cnt=1 请问是什么原因? 是否和上面的报错有关?

lcpp1123 commented 6 years ago

大概讲一下情况。目前试过了最近的三个版本,单纯的UDP2raw会出现偶尔的丢包,使用的nc UDP模式。具体原因不是很清楚,小白不太懂实际2raw的运行逻辑。然后就是客户端会一直和server握手确认,往往这种时候nc发的数据就丢了,不确定是否为正常情况。UDPspeeder单纯的NC两边都没有问题。串联两兄弟以后,NC 还是出现丢包情况。就是数据接收不到,两边正常应该是可以相互打字通讯的,但是现在我的会丢。因为无法排除是不是VPS网络的原因。目前改使用OPENVPN+UDPspeeder。使用其他的机器再做实践了,谢谢。

lcpp1123 commented 6 years ago

还有个说明。我的问题肯定是VPS设置方便的问题。只是实在懒的去找问题了。抱歉。

wangyu- commented 6 years ago

可能是你的新VPS不能正常支持RAW socket,因为你之前的VPS正常,这个搞了很久也没搞好。

如果VPS本身没问题,可能是你机器上添加了什么iptables规则,影响了udp2raw工作。不知道你试没试过完全清空iptables:

https://github.com/wangyu-/tinyfecVPN/wiki/清空iptables的方法

我觉得实在不行你还是用原来的VPS吧。

lcpp1123 commented 6 years ago

嗯 谢谢作者!由于是想用的游戏加速,目前新的VPS的延迟提升了50%以上,所以再摸索摸索吧。iptables规则清空很早已经尝试过。其实现在的情况大概描述就是udp2raw最开始的握手连接没问题。当出现数据有新的连接出现后,UDP2raw会再次进行握手连接。 就是出现 changed state from to client_handshake2 to client_ready 的信息。

RAW socket这是什么不太清楚,怎么测试是否支持?需要联系VPS提供商?

wangyu- commented 6 years ago

目前已知 GigsGigsCloud的VPS RAW socket有问题,你用的是GigsGigsCloud吗?

RAW socket这是什么不太清楚,怎么测试是否支持?需要联系VPS提供商?

除非自己写测试程序,没有直接的办法能测试。 如果确实不支持,联系VPS提供商应该也没用,只能换VPS。

其实现在的情况大概描述就是udp2raw最开始的握手连接没问题。当出现数据有新的连接出现后,UDP2raw会再次进行握手连接。

之前ISSUE里也见过这样的问题。 要么是清iptables解决了,要么是换VPS解决了。

lcpp1123 commented 6 years ago

使用的kdatacenter服务器,韩国VPS。我也试了其他的vultr的小机器,确实都是正常的,所以是vps的问题,基本确定了。先让VPS服务商把VPS再重新装机一次试试吧。谢谢啦。

wangyu- commented 6 years ago

先让VPS服务商把VPS再重新装机一次试试吧

重新装机应该是无效的。

swvincent8498 commented 1 year ago

我也出现这个问题,刚开始服务端的openvpn端口改为8089,就出现这个问题。后来试了用openvpn的默认端口1194就恢复正常了。