V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
f2f2f
V2EX  ›  宽带症候群

Vultr 上的 kcptun 部署问题,似乎 udp 包直接被丢了

  •  
  •   f2f2f · 2017-11-13 21:57:04 +08:00 · 2423 次点击
    这是一个创建于 2566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    kcptun 服务器端没有任何建立连接的日志,连监听的端口都是 sleeping 状态。

    kcptun 配置应该是没问题的,之前在另外一个 vps 上正常的很。IP 也没被 Qiang,直连和酸酸都是可以的。

    感觉像是 udp 包被丢弃的问题,这样的话如何定位跟踪呢?
    14 条回复    2017-11-14 13:18:26 +08:00
    wangyucn
        1
    wangyucn  
       2017-11-13 23:34:40 +08:00
    两端 tcpdump 看一下,排除是自己的 iptables 造成的问题。如果抓包显示确实是一边发出去了另一边收不到,套上个 udp2raw 可以解决。
    XiaoxiaoPu
        2
    XiaoxiaoPu  
       2017-11-13 23:55:54 +08:00   ❤️ 3
    封 IP 是这样:
    >>>>>>>>>🝙🝙🝙>>>>>>>>>
    XXXXXXXXX🝙🝙🝙<<<<<<<<<

    丢 UDP 包是这样:
    >>>>>XXXX🝙🝙🝙....................
    ....................🝙🝙🝙....................

    抓包看一下断在哪就行了
    f2f2f
        3
    f2f2f  
    OP
       2017-11-14 00:25:39 +08:00
    @wangyucn 现在是本机有发出,kcptun 可以看到 stream opened 然后超时 closed。服务器端 kcptun 无任何日志,本机发出请求的时候,服务器端口也不是 connecting 而是 sleeping。lsof 看到 kcptun 并不在监听状态,但是也没报错

    现在不知道是 vultr 机房的问题还是哪里,电信应该是没封 udp 的,因为我另一个 vps 上非常正常,相同配置搬到 vultr 就不行了,很诡异
    wangyucn
        4
    wangyucn  
       2017-11-14 00:39:34 +08:00
    @f2f2f
    你看 kcptun 的 log 去猜,倒不如直接抓包看一下。tcpdump -i any udp and port 8855。8855 换成你 server 监听的端口。

    我用辽宁移动测试到 vultr 日本有段时间 udp 确实是不通的,到搬瓦工洛杉矶却没有问题。然而用北京联通到两个 VPS 一直都没有问题。所以连另一个 VPS 正常,并不能证明 udp 没被限制。
    f2f2f
        5
    f2f2f  
    OP
       2017-11-14 00:39:57 +08:00
    @wangyucn 刚刚 tcpdump 了一下,服务器有收到包,但是奇怪的是此时查询端口状态依旧是 sleeping
    wangyucn
        6
    wangyucn  
       2017-11-14 00:44:16 +08:00
    @f2f2f 把 VPS 的所有 iptables 先备份一下,然后清空 iptables 重试。
    另外用 netstat -nlp 检查一下 kcptun 是不是 bind 到了 0.0.0.0+你指定的端口。
    f2f2f
        7
    f2f2f  
    OP
       2017-11-14 00:47:24 +08:00
    @wangyucn 谢谢! iptables 清空过无效。而且刚初始化的系统直接装 proxy 的

    netstat 结果:
    udp6 0 0 :::443 :::* 8188/kcptun

    看样子在在监听 ipv6 ?但是我已经在 sysctl 里禁用 ipv6,config 也是写死的 127.0.0.1 了……
    wangyucn
        8
    wangyucn  
       2017-11-14 00:51:08 +08:00
    @f2f2f 清空后用 iptables-save 确认一下,确保输出是干干净净的。如果还是不行,再测试一下 udp 模式的 nc 通不通吧。
    wangyucn
        9
    wangyucn  
       2017-11-14 00:56:56 +08:00
    >udp6 0 0 :::443 :::* 8188/kcptun
    ipv6 的我看不懂,不确定这样是否表示也同时监听在了 ipv4 上。

    >config 也是写死的 127.0.0.1 了
    kcptun 的 config?为什是 127.0.0.1 不是 0.0.0.0?
    msg7086
        10
    msg7086  
       2017-11-14 07:16:54 +08:00
    如果你是双栈网络的话,监听 v6 会同时接受 v4 连接。
    禁用 ipv6 以后就不知道了……
    yjzll
        11
    yjzll  
       2017-11-14 09:00:01 +08:00
    参数问题,先不用所有参数,然后,一个一个加
    f2f2f
        12
    f2f2f  
    OP
       2017-11-14 09:04:05 +08:00
    @wangyucn github 上 issue 里有个类似情况的,给出的办法是 listen 项尝试分别用 0.0.0.0,127.0.0.1,server_ip 写死。但是我这边都不行。

    我再看看参数吧,奇怪是这套参数我另外一台一模一样都没动过,反而 vultr 却不行了……
    f2f2f
        13
    f2f2f  
    OP
       2017-11-14 10:22:25 +08:00
    @wangyucn iptables 里把 udp 443 (我用的端口)加了条白名单,然后把参数全都强制绑定 server ip。现在服务器端 kcptun 有连接了,但是 broken pipe。继续 tcpdump,发现服务器发出的 udp 非常少,基本 5 个传入的 udp 包才会有一个输出,而且就是那个输出了以后,我本机的 proxy 就提示 500 internal error 然后关闭连接了。这是不是意味着服务器端限制了什么?
    mrcn
        14
    mrcn  
       2017-11-14 13:18:26 +08:00 via Android
    跟 Vultr 无关。应该是配置 /程序的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2158 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:49 · PVG 08:49 · LAX 16:49 · JFK 19:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.