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

某插件日志