现工作中 遇到这样一个场景 ,出于安全性考虑要将 阿里云数据库 阻止 除阿里云服务器A,B,C,公司内部网络之外的数据库连接。阿里云数据库直接支持设置白名单,白名单之外的ip 全部会被拒绝。那现在遇到的问题是由于业务问题公司内部也要进行查询和操作,而公司网络的Ip 不固定。所以不能简单的通过把公司的Ip 加入白名单来处理。
解决方案:
假设数据库用的外网地址 www.aaaaaa.com,3433
A,B 为正式服务器 ,C为测试服务器。c的ip bbb.bbb.bbb.bbb
将 A,B,C 的ip 都加入数据访问白名单。
先用host 得到 数据库 外网地址ip ccc.ccc.ccc.ccc。
我们要准备通过 测试服务器 来中转我们的请求。
在C 服务器上配置好balance 启动
./balance -b bbb.bbb.bbb.bbb 3433 ccc.ccc.ccc.ccc
那此时 我们的数据库连接 就可以通过 bbb:bbb:bbb:bbb,3433 来连接数据库并进行访问了。但是这样做又有什么意义呢?所有的连接也都可以直接通过 C服务器 请求到数据库。 于是我们再继续在C 服务器上 进行iptables 设置。只支持公司内ip
首先阻止一切 连接
iptables -I INPUT -p tcp –dport 3433 - j DROP
再让信任的ip通过即可
iptables -I INPUT -s fff.fff.fff.fff -p tcp –dport 3433 -j ACCEPT
其中fff.fff.fff.fff 为 信任ip. 关于iptables学习推荐我转载的一篇
这样就大功告成,但是不完美。因为我们公司的内部的ip经常变换。变换之后就要重新添加。
这是不完美的地方。