编者按:

近期由于公司开启定制项目规划,对于每个项目都会开启一个测试服务器,实施方会用到测试服务器的ssh端口、mysql端口、web端口,为了节省资源(公网IP、服务器资源复用),基于rinted工具搭建一个端口转发的服务器。下面的流程图将更好的表达本文即将实现的功能!

1、源码安装rinted:

下载和解压源码包:

cd /usr/local/src && wget https://boutell.com/rinetd/http/rinetd.tar.gz && tar xf rinetd.tar.gz && cd rinetd
 

修改编译配置:

sed -i 's/65536/65535/g' rinetd.c# 修改端口范围,否则会报错
 

编译安装:

mkdir -p /usr/man/man8 && make && make install
 

编辑配置文件:/etc/rinetd.conf

#自定义mysql端口:3001/3100
#自定义ssh端口:2001/2500
#自定义web端口:801/899
#端口转发:[Source Address] [Source Port] [Destination Address] [Destination Port]
0.0.0.0 8080 10.124.162.114 8080
0.0.0.0 443 10.124.162.114 8080
0.0.0.0 3001 10.124.162.114 33080
#端口映射: bindaddress bindport connectaddress connectport logfile /var/log/rinetd.log
 

启动与关闭:

#启动
/usr/sbin/rinetd -c /etc/rinetd.conf
#关闭
pkill rinetd
 

启动脚本:/home/shell/rinetd  使用方法:sh /home/shell/rinetd start|stop|restart|reload

#!/bin/bash
#
# Startup script for Rinetd - this script starts and stops the rinetd daemon
#
# chkconfig: - 85 15
# description: Rinetd is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
# processname: rinetd
# config: /etc/rinetd.conf
# pidfile: /var/lock/subsys/rinetd
# Source function library.
. /etc/rc.d/init.d/functions # Source networking configuration.
. /etc/sysconfig/network # Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0 rinetd="/usr/sbin/rinetd"
prog=$(basename $rinetd) RINETD_CONF_FILE="/etc/rinetd.conf" #[ -f /etc/sysconfig/rinetd ] && . /etc/sysconfig/rinetd lockfile=/var/lock/subsys/rinetd start() {
[ -x $rinetd ] || exit 5
[ -f $RINETD_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $rinetd -c $RINETD_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
} stop() {
echo -n $"Stopping $prog: "
#killproc $rinetd -HUP
daemon pkill $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
} restart() {
stop
sleep 1
start
} reload() {
echo -n $"Reloading $prog: "
killproc $rinetd -HUP
RETVAL=$?
echo
} rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
} case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
status)
rh_status
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload}"
exit 2
esac

 

 

最新文章

  1. [CareerCup] 2.5 Add Two Numbers 两个数字相加
  2. MySQL 配置文件中忘配置default-character-set引发的乱码问题
  3. iOS socket TCP UDP
  4. typeof instanceof 之间的区别总结
  5. poj - 3683 - Priest John's Busiest Day(2-SAT)
  6. 10款无需编程的App DIY开发工具
  7. HW6.30
  8. DevExpress控件-- Gridcontrol合并表头
  9. hdu 1078 FatMouse and Cheese 记忆化dp
  10. iOS完美版的UIScrollView无缝循环:你值得一看
  11. Python报错:SyntaxError: Non-ASCII character '\xe5' in file 1.py on line 6, but no encoding declared...
  12. 使用mybatis assembly插件打成tar包,在linux系统中运行服务
  13. oracle rowid 研究
  14. loadrunner11 测试restful
  15. 虹软人脸识别在 linux中so文件加载不到的问题
  16. 【opencv】imread 赋值 深拷贝浅拷贝
  17. 禁止别人用QQ号搜索到你,同时告诉你如何破解
  18. PhoneGap 获得设备属性Demo
  19. 斯坦福CS229机器学习课程笔记 part2:分类和逻辑回归 Classificatiion and logistic regression
  20. c++ string.c_str()小结

热门文章

  1. c++字符串string的操作
  2. docker+springboot+elasticsearch+kibana+elasticsearch-head整合(详细说明 ,看这一篇就够了)
  3. EF 下如何更新数据表数据
  4. 谷歌浏览器把网页打印成pdf
  5. Django路由详解
  6. [LOJ6356]四色灯
  7. 字符数组 & 字符串
  8. Docker安装管理界面portainer
  9. ssm框架出现的常见问题
  10. sql 索引笔记2