Openwrt编译udpxy流程和相关设置解析

/ 0评 / 23

前言

前一篇文章写了在Openwrt下编译udp2raw的方式,由于udp2raw不在Openwrt官方package list当中,所以在github当中找到了一个第三方的适配Openwrt编译的Makefile,所以才能完整的编译

而udpxy本身就在Openwrt的官方package list当中,只是其版本才是2016年1.0-23.10版本,如果你直接在openwrt当中安装udpxy那么版本会比较老,最新版本的udpxy已经更新到1.0-23.12,其中有不少的特性更新和加强,所以手动编译udpxy相比udp2raw会比较简单,因为官方版本的Openwrt package list已经提供了官方的Makefile,直接修改其中对应的github repo的版本号和commit id即可实现最新版本的udpxy编译。

编译过程

1、编译环境准备

参考文章《udp2raw解决运营商封锁大量UDP流量问题》的第三节下载编译工具包

2、udpxy源码准备

udpxy本身就在Openwrt的官方package list中,所以定位到编译环境当中的opx64/package/,任意名称创建一个文件夹,这里以openwrt-udpxy为例,然后下载官方package list当中的udpxy的Makefile相关文件:

https://github.com/openwrt/packages/tree/master/net/udpxy

一个文件Makefile,一个files文件夹,全部放置于openwrt-udpxy文件夹当中即可。

然后修改Makefile当中对应的git repo信息,

PKG_SOURCE_VERSION行
PKG_SOURCE_VERSION:=612d2271b0d3ccb92f5e1c1c54aa3c0674af75cf12

PKG_VERSION行
PKG_VERSION:=2018-01-04-$(PKG_SOURCE_VERSION)

其中PKG_SOURCE_VERSION行是对应git repo的commit id,使用最新的id即代表使用最新的源代码版本,同时修改PKG_VERSION为对应的版本号,以便识别。

3、开始编译
定位到Openwrt的根目录,本例当中为opx64,开始编译

make package/openwrt-udpxy/compile V=s

不出意外编译完成,到目录opx64/bin/packages/x86_64/base/找到对应的udpxy的ipk到实际的Openwrt当中安装即可
如果出现错误,同样参考《udp2raw解决运营商封锁大量UDP流量问题》当中相关错误的部分即可。

配置解析

直接在使用环境当中输入udpxy即可看到官方帮助,摘录如下

udpxy 1.0-23.12 (prod) standard [Linux 4.14.105 x86_64]
usage: udpxy [-vTS] [-a listenaddr] -p port [-m mcast_ifc_addr] [-c clients] [-l logfile] [-B sizeK] [-n nice_incr]
    -v : enable verbose output [default = disabled]
    -S : enable client statistics [default = disabled]
    -T : do NOT run as a daemon [default = daemon if root]
    -a : (IPv4) address/interface to listen on [default = 0.0.0.0]
    -p : port to listen on
    -m : (IPv4) address/interface of (multicast) source [default = 0.0.0.0]
    -c : max clients to serve [default = 3, max = 5000]
    -l : log output to file [default = stderr]
    -B : buffer size (65536, 32Kb, 1Mb) for inbound (multicast) data [default = 2048 bytes]
    -R : maximum messages to store in buffer (-1 = all) [default = 1]
    -H : maximum time (sec) to hold data in buffer (-1 = unlimited) [default = 1]
    -n : nice value increment [default = 0]
    -M : periodically renew multicast subscription (skip if 0 sec) [default = 0 sec]
Examples:
  udpxy -p 4022 
    listen for HTTP requests on port 4022, all network interfaces
  udpxy -a lan0 -p 4022 -m lan1
    listen for HTTP requests on interface lan0, port 4022;
    subscribe to multicast groups on interface lan1

作者实际使用情况下,是如下的参数

/usr/bin/udpxy -T -S -a 192.168.1.1 -p 4022 -m pppoe-iptv -c 5 -l /var/log/udpxy -B 2097152 -R 10 -M 300

-T -S参数即字面意思,实际正常使用的时候都需要
-a 192.168.1.1 -p 4022:即udpxy监听地址和端口
-m pppoe-iptv:即接受的数据端口,实际上是iptv拨号的端口,>作者的环境是在Openwrt当中做iptv的拨号
-c:即允许多少个客户端连接到udpxy
-l:即log日志地址,方便debug
-B:即缓冲区大小,设置最大2097152
-R:即向组播组请求10个消息,并储存起来,在iptv当中即代表一次缓冲10s的数据
-M:每5分钟重新加入一次组播组,以免网络有些问题的时候丢失组播连接。

对应openwrt当中的配置文件如下,/etc/config/udpxy

config udpxy
        option respawn '0'
        option verbose '0'
        option status '1'
        option bind '192.168.1.1'
        option port '4022'
        option source 'pppoe-iptv'
        option max_clients '5'
        option log_file '/var/log/udpxy'
        option buffer_size '2097152'
        option buffer_messages '10'
        option mcsub_renew '300'
        option disabled '0'

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据