现在的人们对数据的安全看的越来越重视了,一台特殊功能的服务器,往往除了常规的安全处理方式外,还会有类似限制客户端ip的要求。如阿里云的rds服务,虽然这个服务的数据很安全,但是使用起来确实很烦心。它限制客户端ip,但是在中国这样的网络环境中,普通用户使用的都是静态ip。每次修改白名单都很麻烦。
因此小沃的解决方法是,让那台服务器做反向代理。以前小沃有教过大家如果是http或是https请求,可以使用nginx作为反向代理服务器。
但是如果是类似阿里云rds这样的mysql连接这样的请求,又该怎么办呢?
小沃现在就教教大家直接对tcp连接进行反向代理。
假设有一台公网ip为123.57.232.227的服务器,它能连接到27.92.58.43的rds。
因此我们想配置123.57.232.227的5306端口反向代理到27.92.58.43的3306端口,下面是配置方法
1.修改接收到的数据包的目的地址
将5306端口接收到的数据包目的地址修改为27.92.58.43:3306
iptables -t nat -A PREROUTING -p tcp --dport 5306 -j DNAT --to-destination 27.92.58.43:3306
2.修改数据包的源地址
iptables -t nat -A POSTROUTING -p tcp -d 27.92.58.43 --dport 3306 -j MASQUERADE
或是
iptables -t nat -A POSTROUTING -p tcp -d 27.92.58.43 --dport 3306 -j SNAT --to-source 123.57.232.227
这两种方式的不同之处在于使用MASQUERADE动态指定数据包的源地址或是SNAT手动指定数据包的源地址。
3.设置转发数据包为允许状态
iptables -A FORWARD -d 27.92.58.43/32 -p tcp --dport 3306 -j ACCEPT
完成上述步骤后,如果您访问123.57.232.227:5306,数据包将被转发到27.92.58.43:3306,并且对于27.92.58.43这台服务器,他会认为是123.57.232.227连接它的,这样就破解了ip地址绑定。
文章作者:沃航科技