使用 rinetd 实现端口转发重定向

工具介绍

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

用于有效地将连接从一个 IP 地址 / 端口组合重定向到另一 IP 地址 / 端口组合。在操作虚拟服务器、防火墙等时很有用。

Rinetd 是单一过程的服务器,它处理任何数量的连接到在配置文件 etc/rinetd 中指定的地址 / 端口对。尽管 rinetd 使用非闭锁 I/O 运行作为一个单一过程,它可能重定向很多连接而不对这台机器增加额外的负担。

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

软件安装

方法一:压缩包

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

方法二:apt-get

apt-cache search rinetd
apt-get install rinetd -y

软件配置

配置文件格式:

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

在每一单独的行中指定每个要转发的端口。源地址和目的地址都可以是主机名或 IP 地址,IP 地址 0.0.0.0 将 rinetd 绑定到任何可用的本地 IP 地址上。

例如:

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 端口

启动程序

关闭进程

pkill rinetd

启动转发

rinetd -c /etc/rinetd.conf

开机启动

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

查看状态

netstat -antup

注意事项

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

  2. 运行 rinetd 的系统防火墙应该打开绑定的本机端口。

    例如:

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1111 -jACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -jACCEPT