LEDE下udpspeederV2和udp2raw的串联方法

Linux, 折腾 2019/03/06

一开始用的koolshare的改版梅林固件,其中udpspeederV2和udp2raw的串联很简单,因为某插件的启动脚本里已经增加了相关的判断命令。

换了LEDE以后,某插件不太智能,而且把udpspeederV2和udp2raw单独做成了插件,串联启动非常不方便。

于是就是一通乱折腾,过程不再啰嗦,直接说方法。

注:

本文主要写串联的一些折腾,如果只是单独启动udpspeeder或udp2raw,文章里的部分方法需修改,但大同小异

一、准备工作

服务端我是这样运行的

某插件:绑定8080端口

udpspeeder:监听本机8080端口,并绑定6226端口

udp2raw:监听本机6226端口,绑定6227端口

大概就是这样一张图

二、路由器端

udp2raw

udpspeeder

以上只是将udpspeeder和udp2raw两个插件成功启动了,并不能实现串联,还需要手动进行分离。

三、手动分离TCP和UDP

默认情况下,LEDE里的某插件是TCP、UDP混合转发,并没有进行分离,也就是同一个进程同时负责两种流量的转发

先看一下默认的核心命令

$$r-redir -c /koolshare/$$/$$.json -u -f /var/run/kool$$.pid

-u 参数即为开启UDP转发,在开启某插件的游戏模式后,UDP流量均会通过服务器进行转发。

如果不添加 -u 参数,则只转发TCP流量。还有一个 -U 参数,意为开启UDP转发同时关闭TCP转发。

所以要做的就是,开启两个进程,分别转发TCP和UDP,开始分离:

先终止所有$$r-redir进程

killall $$r-redir

重新开启一个进程,只负责TCP转发(不加 -u 参数)

$$r-redir -c /koolshare/$$/$$.json -f /var/run/kool$$.pid

重新开启一个进程,只负责UDP转发(添加 -U 参数)

$$r-redir -s 127.0.0.1 -p 8080 -c /koolshare/$$/$$.json -U -f /var/run/kool$$.pid

这里的 -p 8080 参数,如果在第二步的udpspeeder指定的本地监听端口和某插件一致,则可以不填。否则需要指定 -p 参数

四、测试

五、写脚本

总不能每次都手动执行命令进行分离吧,写个脚本。

下载:

https://file.bugxia.com/s/HSEXgTMezsTZfwC/download

丢到LEDE任意目录,赋予755权限

如果要实现脚本自启动,方法有很多,但是为了省去各种判断

我选择修改某插件的脚本,在其start_$$_redir函数后,加入我的脚本

某插件日志



40条评论

    • Bug侠 评论于 回复

      @zhuozi1212
      不支持,udpspeeder是加速UDP的,udp2raw是UDP伪装TCP用的,两者均和ws协议没什么关系 :汗:

      • zhuozi1212 评论于 回复

        @Bug侠
        为什么我单单连接udp2raw,都无法连接,就算跟v2一起也无法连接
        梅林里面一直处于udp加速未运行

        • Bug侠 评论于 回复

          @zhuozi1212
          嗯……如果显示udp加速未运行,建议在udp2raw服务器端检查其日志,看看梅林到底有没有连上

          • zhuozi1212 评论于 回复

            @Bug侠
            那么v2和udp2raw能使用不同服务器吗?

            • Bug侠 评论于 回复

              @zhuozi1212
              理论是可以的,不过除非是v2和udp2raw两台服务器之间本身延迟很低,比如内网两台机器,否则就失去加速的意义了

          • zhuozi1212 评论于 回复

            @Bug侠
            udp2raw的日志默认在哪里?

            • Bug侠 评论于 回复

              @zhuozi1212
              这个看你怎么用的,直接运行就会输出日志

          • zhuozi1212 评论于 回复

            @Bug侠
            我看到了日志,但是发现梅林那边怎么操作,服务端依旧没有任何反应,包括日志内容
            我就想问一下,现在那个udp2raw还能用吗?

            • Bug侠 评论于 回复

              @zhuozi1212
              如果没有任何输出,那估计还是客户端这边的问题。
              udp2raw一直都是正常使用的,见:https://github.com/wangyu-/udp2raw-tunnel

          • zhuozi1212 评论于 回复

            @Bug侠
            那udp2raw需要搭配科学上网吗?
            或者v2支持吗?

            • Bug侠 评论于 回复

              @zhuozi1212
              udp2raw的作用是TCP伪装为UDP流量,所以理论上,只要是TCP的流量,它都可以加速,这里不仅仅限于$$\$$R\V2等
              ———–
              梅林的v2也是支持udp2raw的,见:
              https://github.com/hq450/fancyss/issues/750

          • zhuozi1212 评论于 回复

            @Bug侠
            其实我已经几乎看完wangyu他的方法,但是梅林固件依旧我行我素,完全牛皮灯笼,怎么都治不好,开了游戏模式还是显示udp加速未运行,模式是v2 ws,但是kcptun却能用,udp加速里面没有一个能用

            • Bug侠 评论于 回复

              @zhuozi1212
              结合我上面贴的issues链接的内容,是不是梅林的v2+udp2raw的启动脚本有些bug,导致启动不了……

              • zhuozi1212 评论于 回复

                @Bug侠
                udpspeederv2现在还能用吗?
                udp2raw在日志里面看到了连接,但是udpspeederv2的日志没有变化

          • zhuozi1212 评论于 回复

            @Bug侠
            好,这个超级重要,我就是找不到开关,手动开关又不代理,谢谢

      • zhuozi1212 评论于 回复

        @Bug侠
        udpspeeder现在还能用吗?

  • fehead 评论于 回复

    其实用LEDE的$$客户端的访问控制就能实现指定主机、协议和端口走不同的流量

    • Bug侠 评论于 回复

      @fehead
      是的,LEDE可以很方便的控制,不过这篇文章主要写如何把$$\udp2raw\udpspeeder这三者串起来用

      • fehead 评论于 回复

        @Bug侠
        koolshare版LEDE已经提供了更加方便的tinyfecvpn+udp2raw的插件游戏加速器(sgame),可灵活搭配$$或V2的兼容模式,也可不搭配出国旅游工具单独使用,配置方便,UDP和TCP协议通过访问控制分流,全图形化界面,不用担心操作失误。

        • Bug侠 评论于 回复

          @fehead
          感谢告知,学习了,写这篇文章的时候不知道有这么方便的插件…… :汗:

      • fehead 评论于 回复

        @Bug侠
        tinyfecvpn就是udpspeeder的更高级版本,具有udpspeeder的所有功能,使用方法基本一致,同一作者开发。

  • Cruz 评论于 回复

    你好,我开启了某插件游戏模式,默认打开 LEDE 软路由的 UPNP,无公网 IP,AP 连接 XBOX 显示 NAT3 严格,GTA5 不能正常在线联机,请问如何解决?想付费请教,如果愿意协助的话请邮件回复我联系方式,感谢!

    • Bug侠 评论于 回复

      @Cruz
      不用付费,我也是瞎捣鼓,不过这里面牵扯的问题太多,需要一步一步的分析。
      我这里没有XBox,所以只能理论上帮你整理一下思路。我这边开启PC和PS4的游戏模式后,NAT类型在PC端通过检测软件检测到的是Fullcone,PS4端开启前后都显示的是NAT3,但是开启后能顺畅的联机。建议你逐个排查,比如同时再PC端测试一下游戏模式。

      • Cruz 评论于 回复

        @Bug侠
        游戏模式下,XBOX 丢包率 100%,NAT 严格;
        大陆白名单下,丢包率17%,NAT 中等,可以进入线上玩了;
        拿了一台老 PC Win7 用户NAT 测试工具显示依然是 Port Restricted Cone,不管是连AP还是连光猫自带的 wifi,目前初步猜测跟不是公网 IP 有很大关系,你觉得呢?

        • Bug侠 评论于 回复

          @Cruz
          根据你说的这个情况,我大概分析一下:
          1.XBox游戏模式下能不能上网呢?XBox有自带的浏览器吧?因为游戏模式是TCP+UDP全部交由$$服务器转发,所以如果开启游戏模式,XBOX连谷歌之类的网页(TCP)都打不开,那说明转发还是有问题。
          2.结合我分析的第一点,同时在PC下试试开启游戏模式后,网页能否打开。
          3.我这边的网络也不是公网IP(陕西电信),不开启游戏模式,NAT类型是Fullcone,开启后也是Fullcone,开不开启均可以正常联机(PC&PS4),所以我也没法怀疑是公网IP的问题。

  • needfor 评论于 回复

    阿侠,按照你的方法,终于成功了!感谢你!

    另外,我又发现一个 udpspeeder 作者 新的加速软件: tinyfecvpn, 这个可以和udp2raw 一起用,LEDE固件里也有相关的插件。效果貌似不错,这个号称除了能加速udp, 连tcp也能加速。

    我小白,研究了几天,一直成功不了。你能看一下,出个教程吗? 你这么厉害,肯定分分钟就搞定了。

    期待

  • needfor 评论于 回复

    阿侠! “某插件:绑定8080端口“ 这个在LEDE上面如何操作啊?我用的是$$

    • Bug侠 评论于 回复

      @needfor
      就是插件里设置的$$服务器端口

      • needfor 评论于 回复

        @Bug侠
        懂了,多谢阿侠!今天我再试试

  • needfor 评论于 回复

    还想请假,我看大神用的是$$R, 但我用的是$$, 你的这个分离脚本 管用吗? 还是说需要再修改一下?改成$$的分离?

    • Bug侠 评论于 回复

      @needfor
      $$R的转发程序是$$r-redir,$$则是$$-redir,理论上可行的。具体没测试~一直用的都是$$R

      • needfor 评论于 回复

        @Bug侠
        阿侠!又是我! 2个问题:

        1. 我用的最新的 koolshare 固件2.3, 然后最新版koolss, 还需要添加你的那个脚本吗? 我昨天看了看koolss里的原装的脚本,貌似有什么$$-redir -u什么的。

        2. 如果还要添加脚本的话,start_$$_redir函数后,之前自带的内容是需要先删掉吗?然后再添加 /koolshare/ss/udp.sh?
        还是说是自带的start_$$_redir函数那一堆不用删,在函数的最后加上你的脚本运行命令?

        方便的话,能传一个修改后的$$脚本的样本吗? 或者截个图也行!

        多谢了!

        • Bug侠 评论于 回复

          @needfor
          1.最新版的kool$$也是一样,它没有提供udpspeeder\udp2raw插件单独运行或串联的方法,需要自己手动分离。
          2.添加脚本的话,start_$$_redir函数之前自带的内容是【需要保留】的,只要在这个函数的尾部执行分离脚本即可。
          3.我测试了一下,$$和$$R的参数用法是一样的,需要把我的脚本里8、12、16行的【$$r-redir】替换为【$$-redir】就可以了。

          • needfor 评论于 回复

            @Bug侠
            感谢阿侠!!这下彻底明白了!晚上回家就试,等我的好消息吧!

  • needfor 评论于 回复

    大神厉害!感谢分享这么有用的文章!

  • 大大的坏蛋 评论于 回复

    6666,大佬可以教教我怎么使用udpspeed和udpdraw吗

    • Bug侠 评论于 回复

      @大大的坏蛋
      呃……我也是瞎捣鼓的

  • 妙文屋 评论于 回复

    如此好文章一定要留下名啊

  • 评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)关闭回复