linux下使用rinetd来实现端口转发

时间:2021-07-08 06:09:22

linux下使用rinetd来实现端口转发

windows下的端口转发一般用的是自带的nat和porttunnel、portmap

linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf ,pkill rinetd 关闭进程

工具主页: http://www.boutell.com/rinetd/ 
软件下载,解压安装

 

wget http://www.boutell.com/rinetd/http/rinetd.tar.gz tar zxvf rinetd.tar.gz make make install

 

把1.1.1.1的11端口映射到2.2.2.2的3389端口,配置文件如下

 

[root@localhost iso]# cat /etc/rinetd.conf 1.1.1.1 11 2.2.2.1 3389 1.1.1.1 12 2.2.2.2 3389 1.1.1.1 13 2.2.2.3 22 1.1.1.1 14 2.2.2.4 80 allow *.*.*.* logfile /var/log/rinetd.log

 

启动程序

 

pkill rinetd ##关闭进程 rinetd -c /etc/rinetd.conf ##启动转发

 

把这条命令加到/etc/rc.local里面就可以开机自动运行 
查看状态

 

netstat -antup

 

如果想用iptables实现的话,可以用一下命令。

 

WAN_IP=”202.106.0.20″ iptables -t nat -A PREROUTING -i eth0 -p tcp ?dport 2533 -j DNAT ?to 192.168.1.88:80 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.88 -p tcp ?sport 80 -j SNAT ?to $WAN_IP:2533

 

第一句定义一个变量 
第二句实现对端口为2533的请求转发到192.168.1.88的80端口 
第三句修改从etho输出的源地址为192.168.1.88,端口为80的数据包的源地址为本机的2533端口,以便对方收到 
数据包之后能正确返回。

=============================================================

rinetd 在生产环境要谨慎使用

阿里云的redis节点,但是默认阿里云不提供公网IP,所以我在一台阿里云的机器启动了rinetd,做端口的转发服务,开始一切正常,一段时间以后,随着并发力度加大。我们发现redis连不上了,提示Connection reset by peer

直接使用nginx的tcp proxy模块,问题解决,并且CPU使用率也不高