Kcptun: windows客服端连不上,安卓客户端确可以连上

Created on 16 Aug 2016  ·  23Comments  ·  Source: xtaci/kcptun

Before firing issue, make sure you figured out the following common questions.

PLEASE DO SEARCH FIRST.

  1. Are you using the latest release?
    Yes, 20160816
  2. Which OS do you use?
    Server CentOS x64 Client Windows 10/8 x64
  3. Which end for this issue related to, client or server?
    Client
  4. Are you using the same version for both client & server
    Yes
  5. Did you correctly set the _-target value, -t value target server address (default: "127.0.0.1:12948")_ on the server side?
    Yes 127.0.0.1:8081
  6. Can telnet target port successful?
    Nope
  7. -nocomp, -datashard, -parityshard, -key, -crypt _must be the same_ on both side.
    Yes
  8. Does your _firewall allows UDP_ communications? (including your ISP Cable-Modem)
    Yes

楼主你好!我配置好以后windows客户端有stream open和steam close的显示但是会出现如下错误:
2016/08/16 11:18:14 [ERR] yamux: Failed to read header: broken pipe
2016/08/16 11:18:14 [ERR] yamux: keepalive failed: i/o deadline reached
服务器上看不到任何连接的信息(stream open和steam close都没有,只有初始化的信息)。

此外,windows下telnet 服务器554端口显示无法打开连接,相同网络下Android终端telnet服务器554端口显示connection refused。但是使用与windows客户端相同的配置参数,在相同的网络下安卓版kcptun和安卓版shadowsocks配合能够正常使用。电脑上shadowsocks客户端填上安卓版kcptun的ip和端口也能正常使用。同时,windows下shadowsocks直连服务器也正常使用。更换554端口值也不行。

服务器参数:./server_linux_amd64 -l :554 -t 127.0.0.1:8081 -key 密码 -mtu 1350 -crypt aes -nocomp -dscp 46 -sndwnd 1024 -rcvwnd 1024 -mode fast2
客服端参数:client_windows_amd64.exe -l :8989 -r 服务器ip:554 -key 密码 -mode fast2 -mtu 1350 -sndwnd 64 -rcvwnd 128 -conn 2 -dscp 46 -nocomp -crypt aes
服务器shadowsocks端口:8081
客服端shadowsocks:ip填127.0.0.1,端口填8989

All 23 comments

参数没有问题,自己排查windows防火墙, 8081监听IP等。

telnet不通端口好像不影响连接是吧?因为Android上面telnet不通却能正常连上。

自己排查防火墙,IP地址,绑定地址等。

我的windows没有安装杀毒软件,把自带的防火墙关了也不行。

I don't know .

看来得放弃了。

换个端口

服务器上的端口也换过了(从554换成其他较大的端口),还是不行。这两天在公司和家里反复实验,还是不成功。以前在家里路由器客户端kcptun成功过,后来再试又不行了。公司和家里安卓上面的kcptun一直都是秒连。真不知道什么原因导致windows无法向服务器发包。快绝望了!

那你只能使出重装系统这个大招了。

@hbxntsxw 试试把kcptun客户端放到windows高级防火墙里面的允许通信列表试试,当然也有可能是你的电脑网卡的MAC地址被光猫的防火墙给封掉了……

@hbxntsxw 把kcp服务器端口设置成10000以上的高位端口试试,关掉客户端的conn参数,在服务器和客户端两边关掉kcp的加密,模式换到normal(对于绝大多数情况normal真的够了),再换个window的ss客户端试试,我的ss客户端是shadowsocks-qt5,然后再试试

尝试重置winsock或者其他网络相关设置。

谢谢大家的回答,今天晚上回来发现竟然可以用了。不知道为什么,昨天倒是升级了最新的windows 10预览版系统。

我用的客户端环境是ArchLinux AMD64,
kcptun_client -r "1.1.1.1:995" -mode fast2 -mtu 1400 -sndwnd 256 -rcvwnd 1024 -dscp 46
我用nc查看995的端口是成功的

nc -vuz 1.1.1.1 995
Connection to 1.1.1.1 995 port [udp/pop3s] succeeded!

然后我用curl验证连通性,一直没有成功过,80/995/554/3389都试过了,443是SS在占用,就没试。
curl --socks5 127.0.0.1:12948 cip.cc
客户端有显示数据,服务器也有显示数据

2016/08/17 02:41:22 stream opened
2016/08/17 02:46:22 stream closed

我抓了包看了一下,一直有UDP的数据,就是通讯不成功,但是Android配置了后,下载是飞快。
另外我在WinXp的虚拟机下用客户端连接,也没有成功。

玄学?看下是不是client的监听端口被占用了

@xtaci @testcaoy7 @bubbless
今天再确认了一下,终于发现原因了!是参数排列顺序的原因:
客户端能连接的参数是这样的:client_windows_amd64.exe -l :1081 -r 服务器ip:554 -key 密码 -mtu 1350 -crypt aes -nocomp -dscp 46 -sndwnd 64 -rcvwnd 128 -mode fast2
不能连接的参数是这样的:client_windows_amd64.exe -l :1081 -r 服务器ip:554 -key 密码 -mode fast2 -mtu 1350 -sndwnd 64 -rcvwnd 128 -dscp 46 -nocomp -crypt aes
这真是奇怪了!

PS:不好意思,经过最终确认,是我密码写错了,把0写成了o,耽误大家时间了。跟参数排列顺序无关。谢谢大家!

What the fuck?

@xtaci 大神!不好意思,经过最终确认,是我密码写错了,把0写成了o,耽误大家时间了。跟参数排列顺序无关。谢谢大家!

@xtaci 我密码是用的默认的,就算参数用一个 -mode fast2 依旧无法使用。

@wxyzh 监听端口被占用客户端是无法启动的。

贴一下配置求楼上们指导:
服务端:
./server_linux_amd64 -l :20086 -t 127.0.0.1:8388 -key test1 -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode normal
尝试过将服务端IP换成外网IP,不可行。。。

客户端:
./client_darwin_amd64 -l :9999 -r server_ip:20086 -key test1 -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode normal

本地 telnet server_ip 20086 不通,Connection refused,用 nc -vuz server_ip 20086 可连接(Connection to server_ip port 20086 succeeded!)

试了 mode 换成 fast2 也不好使。。。
另外贴一下错误信息:

2016/08/25 14:37:58 conn: 1
2016/08/25 14:38:11 stream opened
2016/08/25 14:38:58 [ERR] yamux: keepalive failed: i/o deadline reached
2016/08/25 14:38:58 [ERR] yamux: Failed to read header: broken pipe

单用 ss 好用,用 finalspeed/xsocks 也好使,求指导

_PS: 弄好了,原因是服务器 ufw 只打开了 20086 的 UDP,把 TCP 也打开就好了_

@xtaci @hbxntsxw @se77en
经别人点播才发现真正的原因,就像原理图上写的一样,
kcptun原理图
client_linux_amd64 所监听的是UDP端口,需要再把UDP转换成TCP的数据(client不就是干这个的么?),反正我直接使用client监听的端口是无法工作。

直接使用kcptun client监听端口,无法工作

client_linux_amd64 -r "1.2.3.4:3306" -l ":1080" -mtu 1400 -sndwnd 256 -rcvwnd 1024 -mode fast -key naive -autoexpire 60 -crypt salsa20 -dscp 46
我是直接用1080端口去通讯 curl --socks5 127.0.0.1:1080 cip.cc
本地UDP无法打开

把Shadowsocks的服务器地址和端口修改成kcptun client的监听端口

{
    "server":"127.0.0.1",
    "server_port":1080,
    "local_address": "127.0.0.1",
    "local_port":8080,
    "password":"passwd",
    "timeout":300,
    "method":"chacha20",
    "fast_open": false,
    "workers": 1
}

现在8080端口就是socks5, curl --socks5 127.0.0.1:8080 cip.cc

服务器端是kcptun和shadowsocks结合,客户端也是kcptun和shadowsocks结合

我前面一直以为kcptun client就完成了encrypted udp to tcp的工作,貌似不是啊,导致我很久的时间没能在PC上体验1080P的快感。希望能再README上做一下说明,谢谢。

我今天遇到类似的问题,不过正好相反,windows端可以正常访问kcptun,快的一笔,但是安卓端却完全无法访问,请问一下大佬们是什么原因………

其实我原来一直用得好好的,不过搬瓦工不知道怎么回事ip被墙了,所以一直吃灰到现在,今天我突然想起来不是还有IPv6地址么,于是用ipv6地址试了试,发现没被墙,所以我感慨重新配了一次ss和kcptun,不过这下发现电脑端可以访问,手机端无法访问,请教一下怎么回事?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

channingbox picture channingbox  ·  8Comments

flyer5200 picture flyer5200  ·  5Comments

raszzh picture raszzh  ·  5Comments

reycn picture reycn  ·  5Comments

ghost picture ghost  ·  7Comments