Linux 下使用rinetd实现端口转发

754 阅读1分钟

Linux 下使用rinetd工具实现端口转发

下载rinetd部署包

wget http://www.rinetd.com/download/rinetd.tar.gz

解压rinetd部署包

tar xvf rinetd.tar.gz

编译安装

cd rinetd
make && make install
[root@localhost rinetd]# make && make install
cc -DLINUX -g   -c -o rinetd.o rinetd.c
rinetd.c:177:6: warning: conflicting types for built-in function ‘log’ [enabled by default]
 void log(int i, int coSe, int result);
      ^
cc -DLINUX -g   -c -o match.o match.c
gcc  rinetd.o match.o -o rinetd -lpthread
install -m 700 rinetd /usr/sbin
echo > /etc/rinetd.conf

配置详情

解释:将192.168.1.120的88端口重定向到192.168.1.21的80端口

echo "192.168.1.120 88 192.168.1.21 80" > /etc/rinetd.conf

启动rinetd服务

不指定-c 选项配置文件的情况下,Rinetd 使用默认的配置文件 /etc/rinetd.conf

rinetd 或 rinetd -c /etc/rinetd.conf 

停止rinetd服务

pkill rinetd

开启日志记录

vim /etc/rinetd.conf

在 /etc/rinetd.conf 配置文件中追加logfile 配置

192.168.1.120 88 192.168.1.21 80
​
logfile /var/log/rinetd.log

备注:rinetd 在生产环境要谨慎使用

在生产环境上使用,高并发场景下rinetd性能差(rinetd 没有使用epoll,而是用了select),低并发场景或者测试环境下可以使用。

优点:简单易用。

Windows 下使用自带netsh实现端口转发

管理员权限启动powershell,执行如下命令:

netsh interface portproxy add v4tov4 listenaddress=192.168.1.92 listenport=88 connectaddress=192.168.1.21 connectport=80
listenaddress=192.168.1.92  #监听的IP地址
listenport=88               #监听的端口
nnectaddress=192.168.1.21   #重定向到的IP
onnectport=80               #重定向到的端口

备注:必须使用管理员权限,否则执行命令将无效;只对TCP端口进行转发,对于UDP端口将不起作用;