f2f2f

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

  •  
  •   f2f2f · Nov 13, 2017 · 2975 views
    This topic created in 3115 days ago, the information mentioned may be changed or developed.
    kcptun 服务器端没有任何建立连接的日志,连监听的端口都是 sleeping 状态。

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

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

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

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

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

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

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

    看样子在在监听 ipv6 ?但是我已经在 sysctl 里禁用 ipv6,config 也是写死的 127.0.0.1 了……
    wangyucn
        8
    wangyucn  
       Nov 14, 2017
    @f2f2f 清空后用 iptables-save 确认一下,确保输出是干干净净的。如果还是不行,再测试一下 udp 模式的 nc 通不通吧。
    wangyucn
        9
    wangyucn  
       Nov 14, 2017
    >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  
       Nov 14, 2017
    如果你是双栈网络的话,监听 v6 会同时接受 v4 连接。
    禁用 ipv6 以后就不知道了……
    yjzll
        11
    yjzll  
       Nov 14, 2017
    参数问题,先不用所有参数,然后,一个一个加
    f2f2f
        12
    f2f2f  
    OP
       Nov 14, 2017
    @wangyucn github 上 issue 里有个类似情况的,给出的办法是 listen 项尝试分别用 0.0.0.0,127.0.0.1,server_ip 写死。但是我这边都不行。

    我再看看参数吧,奇怪是这套参数我另外一台一模一样都没动过,反而 vultr 却不行了……
    f2f2f
        13
    f2f2f  
    OP
       Nov 14, 2017
    @wangyucn iptables 里把 udp 443 (我用的端口)加了条白名单,然后把参数全都强制绑定 server ip。现在服务器端 kcptun 有连接了,但是 broken pipe。继续 tcpdump,发现服务器发出的 udp 非常少,基本 5 个传入的 udp 包才会有一个输出,而且就是那个输出了以后,我本机的 proxy 就提示 500 internal error 然后关闭连接了。这是不是意味着服务器端限制了什么?
    mrcn
        14
    mrcn  
       Nov 14, 2017 via Android
    跟 Vultr 无关。应该是配置 /程序的问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   935 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 19:58 · PVG 03:58 · LAX 12:58 · JFK 15:58
    ♥ Do have faith in what you're doing.