Linux下简单好用的工具rinetd,实现端口映射/转发/重定向

官网地址http://www.boutell.com/rinetd

软件下载

1
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz

解压安装

1
2
3
4
tar zxvf rinetd.tar.gz
cd rinetd
make
make install

注意:执行make install时可能出现错误:

缺少目录/usr/man/man8

此时执行 mkdir /usr/man/man8后再执行make install即可

编辑配置

1
2
3
4
5
6
vi /etc/rinetd.conf

# 内容
0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 2222 192.168.0.103 3389
1.2.3.4 80 192.168.0.10 80

说明一下(0.0.0.0表示本机绑定所有可用地址)
将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
将所有发往本机2222端口的请求转发到192.168.0.103的3389端口
将所有发往1.2.3.4的80端口请求转发到192.168.0.10的80端口

命令格式是
bindaddress bindport connectaddress connectport
绑定的地址 绑定的端口 连接的地址 连接的端口

[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址 源端口 目的地址 目的端口

启动程序

1
2
3
4
rinetd -c /etc/rinetd.conf  ##启动转发

# 附加:
pkill rinetd ##关闭进程

把命令rinetd -c /etc/rinetd.conf加到/etc/rc.local里面就可以开机自动运行

查看状态

1
2
3
netstat -antp | grep 8080 | grep -v grep

netstat -antp | grep rinetd | grep -v grep

需要注意

  1. rinetd.conf中绑定的本机端口必须没有被其它程序占用

  2. 运行rinetd的系统防火墙应该打开绑定的本机端口(或者直接关闭防火墙?)

    例如:

    1
    2
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1111 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT