linux通过rinetd工具进行端口映射/转发/重定向

现在线上有个需求,访问某源的地址,需要通过一个固定的出口出去才行。那么这里想到的转发的几种方式:
1.iptables对端口做转发,这种需要开启内核转发。配置几条iptables规则就好。
2.rinetd对端口做转发,转发规则类似于反响代理,或者nat 而且配置比较简单。配置出错也不会导致网络访问问题。
下面就来介绍rinetd的端口转发
参考官网地址: https://www.boutell.com/rinetd/
下面直接是上干货

# tar -zxvf rinetd.tar.gz -C /usr/local
# cd rinetd 
[root@localhost rinetd]# make
cc -DLINUX -g   -c -o rinetd.o rinetd.c
rinetd.c:176: warning: conflicting types for built-in function ‘log’
cc -DLINUX -g   -c -o match.o match.c
gcc rinetd.o match.o -o rinetd
[root@localhost rinetd]# make install
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8
install: cannot create regular file `/usr/man/man8': No such file or directory
make: *** [install] Error 1
[root@localhost rinetd]# mkdir -p /usr/man/
[root@localhost rinetd]# make clean
[root@localhost rinetd]# make 
cc -DLINUX -g   -c -o rinetd.o rinetd.c
rinetd.c:176: warning: conflicting types for built-in function ‘log’
cc -DLINUX -g   -c -o match.o match.c
gcc rinetd.o match.o -o rinetd
[root@localhost rinetd]# make install
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8
[root@localhost rinetd]#
#成功后会提示文件路径
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8

程序路径/usr/sbin/rinetd
建立配置文件/etc/rinetd.conf,内容格式:源IP 源端口 要跳转的IP 要跳转的端口;在每一单独的行中指定每个要转发的端口。源地址和目的地址都可以是主机名或IP 地址,IP 地址0.0.0.0 将rinetd 绑定到任何可用的本地IP地址上:
例如将所有发往本机81端口的请求转发到某地址的80端口


[root@localhost rinetd]# vim /etc/rinetd.conf
allow *.*.*.*                //设置允许访问的ip地址信息
0.0.0.0 81 目标IP 80                //设置端口转发
logfile /var/log/rinetd.log        //设置打印的log

#启动程序并将rinetd加入开机启动

[root@localhost rinetd]# /usr/sbin/rinetd 
或者
[root@localhost rinetd]# rinetd -c /etc/rinetd.conf 
[root@localhost rinetd]# netstat -antulp|grep -i rinetd
tcp        0      0 0.0.0.0:81                0.0.0.0:*                   LISTEN      5849/rinetd         
[root@localhost rinetd]# killall -9 rinetd  或者pkill -9 rinetd
[root@localhost rinetd]# netstat -antulp|grep -i rinetd
[root@localhost rinetd]# rinetd 
[root@localhost rinetd]# netstat -antulp|grep -i rinetd
tcp        0      0 0.0.0.0:81                0.0.0.0:*  
                 LISTEN      5861/rinetd
                 
                 
                 
启动程序
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 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT


#至此就可以进行访问测试了!所有访问本机81端口的请求,都会转发到 目标IP 的 80端口


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章