本节主要介绍通过云主机自带的iptables(防火墙)功能来做代理服务的转发,因为MySQL的用户比较多可以看到很多网友对这里也有一些需求所以这里以它为例,但通过本方式除MySQL外还可以实现很多服务(Redis\MongoDB\SQLServer)内外网的互通。 以MySQL为例本机介绍三个话题:
腾讯云的MySQL自带公网功能,在MySQL的实例基本信息中如以下截图,可以开启公网功能。官方建议这种情况只适用于临时测试和导入导出数据等场景下使用,切记不要用于生产环境使用。
在腾讯云的海外IDC部分机房比较小,没有足够的资源搭建代理转发是不提供外放访问方式的,这种情况在很多小IDC都会出现。所以如果用户强烈希望通过公网来方位自己的MySQL实例,这时通常官方会推荐您搭建公网代理的方式,就是在当地购买一台云主机,这云主机可以与MySQL实例进行内网通信,并通过云主机的公网IP进行端口映射转发到内网的MySQL实例。
以下为用户访问流程,用户在配置好云主机(cvm)转发功能后,就可以从公网直接访问内网的云MySQL。因为是公网访问所以这里一定注意安全。
这里使用了云主机的iptables命令的来实现nat转发功能。iptables功能非常强大,netfilter的开源项目其地址见(http://www.netfilter.org/projects/iptables/index.html)以下为iptables的数据访问流程图。
具体转发规则如下。(术语snat源地址转换,dnat目的地址转换)
# 临时打开nat转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 172.16.16.18 为主机公网对应的内网IP, 172.16.32.10 为内网MySQL的IP
iptables -t nat -A PREROUTING -d 172.16.16.18 -p tcp --dport 7788 -j DNAT --to-destination 172.16.32.10:3306
# 反过来写
iptables -t nat -A POSTROUTING -d 172.16.32.10 -p tcp --dport 3306 -j SNAT --to-source 172.16.16.18
注意,这里在通过其他IP访问代理服务器的MySQL时,输入的是7788映射端口,而非MySQL3306端口
# MASQUERADE,如果不想写snat这么长的规则,可以直接输入以下规则。
iptables -t nat -A POSTROUTING -j MASQUERADE
参考资料
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有