如何将 SqlServer MongoDB Redis 等没有外网的数据库通过外网连接

参考链接 sqlserver等一些没有外网地址的数据库实例如何外网连接 

参考链接 Linux prerouting和postrouting的区别

由于腾讯云的 云数据库 SqlServer 等 并不提供 外网IP 也就是说,通常我们无法通过 外网直接访问数据库。 那么我们需要通过外网 直接访问 这些 数据库 就需要 通过 跳板机 或者 本地 使用端口映射来访问 。

通过跳板机来访问 需要两个 条件 :

  • 一台可以和云数据通信的服务器
  • 设置iptables 进行 端口转发

通过对于云服务器设置端口转发,将本服务器的端口数据直接转发到 云数据库上。

SqlServer 实验
服务器 10.105.243.140 外网IP 111.231.25.24
cdb SqlServer 10.66.201.92:1433

iptables -t nat -A PREROUTING -d 10.105.243.140  -p tcp --dport 1234 -j DNAT --to-destination 10.66.201.92:1433
iptables -t nat -A POSTROUTING -d 10.66.201.92 -p tcp --dport 1433 -j SNAT --to-source 10.105.243.140
echo 1 > /proc/sys/net/ipv4/ip_forward

上面命令是将访问云服务器 1234端口的数据转发到云数据库的1433端口,第一条做了目标地址转换 (任何访问140:1234 都将被转发到92:1433),第二条源地址转换(任何访问92:1433的源地址都将被替换成140) 待考证?

大佬的图
用大佬的图

MongoDB
服务器 10.105.243.140 外网IP 111.231.25.24
cdb SqlServer 10.66.203.190:27017

iptables -t nat -A PREROUTING -d 10.105.243.140  -p tcp --dport 27017 -j DNAT --to-destination 10.66.203.190:27017
iptables -t nat -A POSTROUTING -d 10.66.203.190 -p tcp --dport 27017 -j SNAT --to-source 10.105.243.140
echo 1 > /proc/sys/net/ipv4/ip_forward
规则设置-大佬的图
登录测试-还是大佬的