云数据库通过外网连接

linux系统

1.准备环境

云服务器  193.112.1.43(公)172.16.0.23(内)

云数据库pgsql   内网 172.16.32.98:5432                   同一私有网络,默认内网互通

2.云服务器上做如下转发

iptables -t nat -A PREROUTING -d 172.16.0.23 -p tcp --dport 5432(服务器端口) -j DNAT --to-destination 172.16.32.98:5432       #目的地址转换

iptables -t nat -A POSTROUTING -d 172.16.32.98 -p tcp --dport 5432(数据库端口) -j SNAT --to-source 172.16.0.23                  #源地址转换

echo 1 > /proc/sys/net/ipv4/ip_forward                      #开启转发(临时生效)

需修改sysctl.conf:net.ipv4.ip_forward = 1  执行sysctl -p马上生效  (永久生效)

3.测试通过云服务器的外网IP加端口可以正常访问。

windwos系统

1.准备环境

云服务器 193.112.224.83(公)172.16.32.87(内)

云数据库pgsql   内网 172.16.32.98:5432                   同一私有网络,默认内网互通

2.云服务器上做如下转发

netsh interface portproxy add v4tov4 listenport=5432(服务器端口)connectaddress=172.16.32.98 connectport=5432(数据库端口)

相关参数说明:

  • listenport 必需。指定要监听的端口
  • listenaddress 需要监听的计算机ip,未指定则默认值为本机
  • connectport 需要转发的端口,未指定则默认值为本地计算机上的listenport
  • connectaddress 需要转发的计算机ip,未指定则默认值为本机
  • protocol 指定的协议,暂仅支持TCP

查看规则是否存在

netsh interface portproxy show all

删除规则

netsh interface portproxy delete v4tov4 listenport=5432

3.测试通过云服务器的外网IP加端口可以正常访问。