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函数后,加入我的脚本

某插件日志



17条评论

  • 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侠 评论于

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

  • 妙文屋 评论于

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

  • 评论(*号为必填项)关闭回复