rinetd移植到openwrt实现

Rinetd是为在一个UnixLinux操作系统中为重定向传输控制协议(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下的移植全部完成,作为记录,方便以后温习。

posted @ 2017-09-05 15:28  ~Silence~  阅读(765)  评论(0)    收藏  举报