linux下简单好用的工具rinetd,实现端口映射/转发/重定向
成都网络公司-成都网站建设公司创新互联建站十余年经验成就非凡,专业从事成都网站建设、成都网站制作,成都网页设计,成都网页制作,软文平台,广告投放平台等。十余年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:13518219792,我们期待您的来电!
Linux下做地址NAT有很多种方法。比如haproxy、nginx的4层代理,linux自带的iptables等都能实现。haproxy、nginx就不说了,配置相对简单;iptables配置复杂,概念也比较多DNAT、SNAT、PREROUTING、POSTROUTING等等。其实,Linux下有一个叫rinetd的工具,安装简单,配置也不复杂。
1.下载安装
[root@centos-01 ~]# wget --no-check-certificate http://www.boutell.com/rinetd/http/rinetd.tar.gz //使用“不检查证书” 加入no-check-certificate 即可成功安装
[root@centos-01 ~]# tar zxvf rinetd.tar.gz
[root@centos-01 ~]# cd rinetd && sed -i 's/65536/65535/g' rinetd.c
[root@centos-01 ~]# mkdir /usr/man
[root@centos-01 ~]# make && make install
cc -DLINUX -g -c -o rinetd.o rinetd.c
rinetd.c:176:6: 警告:与内建函数‘log’类型冲突 [默认启用]
void log(int i, int coSe, int result);
^
cc -DLINUX -g -c -o match.o match.c
gcc rinetd.o match.o -o rinetd
[root@centos-01 ~]# install -m 700 rinetd /usr/sbin
[root@centos-01 ~]# install -m 644 rinetd.8 /usr/man/man8
2.编辑配置文件
[root@centos-01 ~]# vim /etc/rinetd.conf
0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 60022 192.168.0.103 60022
0.0.0.0 80 192.168.0.10 80
logfile /var/log/rinetd.log
说明(0.0.0.0表示本机绑定所有可用地址)
将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
将所有发往本机60022端口的请求转发到192.168.0.103的60022端口
将所有发往本机的80端口请求转发到192.168.0.10的80端口
命令格式是:
bindaddress bindport connectaddress connectport
绑定的地址 绑定的端口 连接的地址 连接的端口
或
[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址 源端口 目的地址 目的端口
3.启动与关闭程序
[root@centos-01 ~]# rinetd -c /etc/rinetd.conf
[root@centos-01 ~]# pkill rinetd
4.校验
[root@centos-01 ~]# netstat -tanulp|grep rinetd
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 27683/rinetd
tcp 0 0 0.0.0.0:60022 0.0.0.0:* LISTEN 27683/rinetd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27683/rinetd
需要注意:
1.rinetd.conf中绑定的本机端口必须没有被其它程序占用
2.运行rinetd的系统防火墙应该打开绑定的本机端口
因为我们的跳板机都是转发的数据库等其他的端口,运行了一段时间后发现rinetd服务就挂了,没办法就执行写个脚本检查pid号,如果挂了就重启。
[root@centos-01 ~]# vim /data/scripts/rinetd_check.sh
#!/bin/bash
#rinetd pid check
pid=`ps -ef |grep [r]inetd`
if [ $? -ne 0 ]
then
rinetd -c /etc/rinetd.conf
echo "Interrupt restart time:" `date`
else
echo rinetd pid is running...
echo date is : `date`
fi
#加入定时任务(每两个小时监测一次)
[root@centos-01 ~]# crontab -l
0 */2 * * * sh /data/scripts/rinetd_check.sh >> /data/logs/rinetd.log 2>&1
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。