React Native设备使用移动数据能否连接NAS部署的MySQL服务器
结论
设备在移动数据网络下完全可以正常连接NAS部署的MySQL服务、调用部署的API完成数据传输。你现在切换移动数据后连接中断,本质是网络可达性的问题,不是功能上做不到。
原因说明
- 连接和NAS同网段的WiFi时,手机和NAS处于同一个私有局域网内,双方可以通过内网IP直接互访,不管是MySQL默认的3306端口还是API服务占用的端口,路由链路是通的,所以运行正常。
- 切换到移动数据后,手机接入的是运营商的公网网络,和你家里的局域网是完全隔离的两个网络域,没有做特殊配置的情况下,外网设备根本无法定位到你内网里的NAS地址,自然会出现API请求失败、MySQL连接断开的情况。
实现方案
绝对不推荐直接在路由器上做裸端口映射把MySQL、API端口暴露到公网,这类默认端口很容易被全网扫描爆破,大概率会出现数据库被拖库、NAS被入侵的问题,优先选下面几个更稳妥的方案:
- 用NAS自带的官方穿透服务
主流消费级NAS基本都自带官方的外网访问服务(比如群晖QuickConnect、威联通myQNAPcloud、绿联UGOS的远程访问),开启后会分配一个固定的外网访问域名,你把React Native应用里原来写的内网访问IP换成这个域名,不管手机连什么网络都能正常访问服务,配置门槛最低,官方自带基础的安全防护。 - 用虚拟组网工具
在NAS和手机端都安装Tailscale、ZeroTier这类组网工具,登录同一个账号组建虚拟局域网,不管手机处于什么网络环境,都能和NAS保持在同一个虚拟内网里,直接用工具分配的虚拟内网IP就能访问服务,所有流量端到端加密,安全性很高。 - 公网IP+安全加固方案
如果能向运营商申请到公网IPv4或者IPv6地址,可以在路由器上配置端口转发规则,把NAS上对应服务的端口映射到公网,但是必须做好安全配置:给MySQL设置复杂度足够的强密码、给数据库账号配置最小权限、API接口加上token鉴权、修改服务默认端口、开启NAS防火墙拦截异常扫描请求。
额外提醒:不管是内网还是外网访问,都不要在React Native客户端代码里直接写MySQL的连接地址、账号密码,所有数据库操作都要封装在API层,客户端只和API接口交互,由后端API服务对接MySQL,避免客户端反编译后泄露数据库凭证。
内容的提问来源于stack exchange,提问作者d.chan
相关产品推荐
相关产品推荐

