linux下用rinetd做端口转发

时间:2022-08-06 15:53:43

原文转自:http://blog.chinaunix.net/uid-345389-id-2131648.html

经常遇到端口转发的情况,用iptable是经常的,不过每次都需要查手册。看到菜包子的文章,感觉还不错,测试感觉很好用。

端口转发映射的程序叫rinetd,并没有发现版本之说,只有一个下载地址。直接manke编译安装即可。

[root@fan3838 tmp]# tar xvfz rinetd.tar.gz 
rinetd/
rinetd/getopt.h
rinetd/rinetd.c
rinetd/CHANGES
rinetd/rinetd.8
rinetd/Makefile
rinetd/README
rinetd/index.html
rinetd/rinetd.ncb
rinetd/match.c
rinetd/match.h
rinetd/rinetd.opt
rinetd/rinetd.dsw
rinetd/rinetd.dsp
rinetd/getopt.c
rinetd/rinetd.plg
rinetd/.CHANGES.swp
rinetd/rinetd.exe
[root@
fan3838 tmp]# cd rinetd
[root@
fan3838 rinetd]# make
cc -DLINUX -g -c -o rinetd.o rinetd.c
rinetd.c:176: 警告:与内建函数 ‘log’ 类型冲突
rinetd.c: In function ‘readConfiguration’:
rinetd.c:544: 警告:由于数据类型范围限制,比较结果永远为假
rinetd.c:567: 警告:由于数据类型范围限制,比较结果永远为假
rinetd.c: In function ‘log’:
rinetd.c:1395: 警告:‘log’ 的地址总是等价为 ‘true’
cc -DLINUX -g -c -o match.o match.c
gcc rinetd.o match.o -o rinetd
[root@
fan3838 rinetd]# make install
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8

安装完毕只有一个二进制文件一个帮助文件,通过man帮助可以知道其需要一个/etc/rinetd.conf配置文件,这个文件的内容和格式要求如下:

地址 端口 地址 端口

测试了一个简单的例子,172.16.86.113的113端口映射到172.16.81.88的80端口,配置文件如下

[root@fan3838 etc]# cat /etc/rinetd.conf 
172.16.86.113 113 172.16.81.88 80
allow *.*.*.*
logfile /var/log/rinetd.log

这样的话只要在任意浏览器访问:http://172.16.86.113:113就和访问http://172.16.81.88同样的效果。

启动很简单,执行rinetd即可。