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端口将不起作用;