红联Linux门户
Linux帮助

Linux下rinetd快速实现端口转发

发布时间:2016-11-04 10:07:41来源:今日头条作者:橙子的Linux运维经验
rinetd功能:
rinetd工具用来实现快速配置和修改端口转发。其实功能与iptables的转发功能类似,只是在配置上面简洁方便。
 
搭建环境:
公司内部老是有一些同事需要访问云服务器上面的一些特定服务,例如mysql3306,redis之类的。但是我又不能直接将这些端口对外开放,并且每台服务器都配置就感觉非常的麻烦,不便于管理。
于是我就将这些服务器的端口全部对跳板机开放,然后公司内网同事通过专线访问跳板机不同端口来实现访问不同服务器不同业务的需求。这样我也只需要在跳板机上面配置一下,方便管理。
用什么方法呢?最开始我是打算使用iptables来实现端口转发,举个栗子:访问跳板机1.1.1.1的8000端口,自动转发到云服务器2.2.2.2的3306端口上面去。这样能实现让公司同事访问的需求,我2.2.2.2的3306端口也只需要单独对跳板机服务器开放,保证安全性。
后来我发现配置起来较为复杂,最后我打算使用rinetd工具来实现快速配置和修改端口转发。感觉配置起来方便,一看就一目了然。
下面的例子为访问跳板机IP:192.168.1.250 的11115端口,自动转发到云服务器的123.123.123.123 3306端口
 
需求:
1、跳板机内网IP:192.168.1.250
2、跳板机有固定外网IP(没有也可以,只是有的话就可以在云服务器iptables上写好只允许跳板机访问)
3、在云服务器iptables上写好不想对开放(只想对公司内部开放)的特定端口只允许跳板机访问
4、这里测试用的云服务器IP我用123.123.123.123(随机写的,不好写真实IP)
 
下面所有操作在跳板机上操作
下载软件:
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
安装软件:
tar xzvf rinetd.tar.gz
cd rinetd
make
make install
ps:执行make install时可能出现错误:缺少目录/usr/man/man8,此时执行 mkdir -p /usr/man/man8即可
 
创建配置文件:
vim /etc/rinetd.conf(这个文件不存在,需要手工创建)
0.0.0.0 11115 123.123.123.123 3306
ps:本机8000端口需要确认未被使用:netstat -antp | grep 11115 | grep -v grep
如果有多个IP/端口有这个需求,可以接着下面写,写好后重启这个服务。
Linux下rinetd快速实现端口转发
 
启动rinetd:
rinetd -c /etc/rinetd.conf
ps:需要确认进程中没有rinetd:ps ax | grep rinetd | grep -v grep,如果有的话,需要删除该进程:pkill rinetd
 
配置文件格式:
bindaddress bindport connectaddress connectport
绑定的地址 绑定的端口 转发的地址 转发的端口
0.0.0.0 11115 123.123.123.123 3306
将所有发往本机的11115端口的请求转发到123.123.123.123的80端口
以上命令在CentOS 6.5下测试通过。
 
测试:
配置好以后公司内部访问,测试链接,可以发现已经连接成功了。
Linux下rinetd快速实现端口转发
Linux下rinetd快速实现端口转发
从图中可以看到我这里很多云服务器上面的数据库都是使用这种方式访问的。这样的好处在于云服务器上面数据库所在的服务器,我只需要设置对跳板机开放(不对外全部开放),然后跳板机做端口转发。
当然,如果你自己的台式机所在网络是固定的外网IP,这边文章就对你没什么用了。你可以直接设置你的云服务器数据库所在服务器对你的固定IP开放即可了。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25714.html