rinetd移植到openwrt实现
Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/rinetd.conf中指定的地址/端口对。尽管rinetd使用非闭锁I/O运行作为一个单一过程,它可能重定向很多连接而不对这台机器增加额外的负担。
这里主要记录我把Rinetd移植到OpenWRT过程。前提是你已经有了OpenWRT的开发环境。我的开发环境的是ubuntu,OpenWRT版本是15.05 。
1、下载Rinetd软件包,Rinetd可以从https://boutell.com/rinetd/ 下载,或者在linux下直接通过wget http://www.boutell.com/rinetd/http/rinetd.tar.gz命令下载。
2、创建OpenWRT下Rinetd软件开发包目录。假设默认在OpenWRT根目录,进入package目录,创建Rinetd文件夹,在Rinetd目录下创建files和src文件夹。files目录用于存放Rinetd的配置文件和开机自启动脚本,src目录将存放的是Rinetd的C源代码。
3、将第1步中下载的Rinetd源码包解压到package/Rinetd/src/目录下,解压命令:tar -xvf rinetd.tar.gz 。
4、修改package/Rinetd/src/目录下Makefile如下:
include $(TOPDIR)/rules.mk all: rinetd rinetd: rinetd.c match.c $(CC) $(CFLAGS) -DLINUX -g $(LDFLAGS) $(OBJS) rinetd.c match.c -o rinetd
5、增加package/Rinetd/Makefile文件如下:
include $(TOPDIR)/rules.mk PKG_NAME:=rinetd PKG_RELEASE:=1.0.1 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=application CATEGORY:=rinetd application DEPENDS:= +libpthread TITLE:=Rinetd app endef define Package/Rinetd/description rinetd test programmer endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/etc/ $(INSTALL_DATA) ./files/rinetd.conf $(1)/etc/ $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/rinetd $(1)/usr/bin/ endef $(eval $(call BuildPackage,$(PKG_NAME)))
6、增加package/Rinetd/files/rinetd.conf配置文件如下(可以根据自己需求修改,参数意义参考Rinetd的说明):
0.0.0.0 2020 138.128.214.232 3389 0.0.0.0 2021 23.83.228.130 3389
7、增加package/Rinetd/files/rinetd.init开机自启动脚本,内容如下:
#!/bin/sh /etc/rc.common #Copyright (C) Silence_Wu START=90 RUN_D=/var/run RINETD_PID=$RUN_D/rinetd.pid start() { echo -n "rinetd run..." /usr/bin/rinetd -c /etc/rinetd.conf & echo "..." } stop() { echo -n "rinetd stop..." echo "." if [ -f $RINETD_PID ];then kill -9 `cat $RINETD_PID` > /dev/null 2>&1 rm -rf $RINETD_PID > /dev/null 2>&1 fi } restart() { stop sleep 5 start } reload() { restart }
7、编译rinetd软件ipk包,执行make menuconfig选中Rinetd应用包,执行命令:make package/Rinetd/compile V=s 即可编译OpenWRT下的Rinetd安装包。
至此,Rinetd到OpenWRT下的移植全部完成,作为记录,方便以后温习。

浙公网安备 33010602011771号