4. 实例网络配置:VPC网络规划、私网连接设置、公网访问控制

网络配置这块,说实在的,是IoT企业版实例搭建里最容易出幺蛾子的环节。我见过太多项目,设备连不上、数据传不回来,最后排查一圈,发现都是网络规划没做好。今天咱们就把这块掰开揉碎了讲清楚。

4.1 VPC网络规划:打好地基

VPC(虚拟私有网络)说白了,就是你在阿里云上给自己圈了一块私有的地盘。设备、服务器、数据库都在这个地盘里跑,跟外网是隔离的。我个人习惯,在创建IoT企业版实例之前,先把VPC规划好。

核心原则:

  • 网段别冲突:你公司内网如果是192.168.0.0/16,那云上VPC就别再用这个段了,否则以后做私网连接时IP会打架。我建议用10.0.0.0/8或者172.16.0.0/12这些大段。
  • 子网要够用:一个VPC下至少分两个交换机(子网),一个给IoT实例用,一个给后端业务用。比如:
    • 交换机A:10.0.1.0/24(IoT实例专用)
    • 交换机B:10.0.2.0/24(业务服务器专用)
  • 可用区冗余:别把所有鸡蛋放一个篮子里。我建议至少选两个可用区,比如杭州可用区G和H,各放一个交换机。这样即使一个可用区挂了,设备还能通过另一个区继续通信。

我的经验:有一次客户把IoT实例和数据库放在同一个交换机里,结果设备量一上来,广播风暴直接把网络打瘫了。从那以后,我坚持把不同用途的资源放在不同子网,中间用安全组或ACL做隔离。

4.2 私网连接设置:让设备走内网

私网连接(PrivateLink)是啥?就是让你的设备通过阿里云的内网访问IoT实例,不经过公网。这样做的好处很明显:延迟低、带宽高、还安全。

配置步骤:

  1. 创建终端节点服务:在IoT实例所在的VPC里,创建一个终端节点服务。这个服务会暴露一个内网IP,供其他VPC或本地IDC通过私网访问。
  2. 创建终端节点:在设备所在的VPC里,创建一个终端节点,指向刚才的服务。这样两个VPC就通过内网打通了。
  3. 添加安全组规则:在终端节点服务的安全组里,放行设备VPC的CIDR。比如设备VPC是10.0.0.0/16,那就加一条入方向规则,允许这个段访问443端口(MQTT over TLS)。

小技巧:如果你有多个VPC需要连接同一个IoT实例,别每个VPC都建一个终端节点服务。我习惯用一个共享的终端节点服务,然后在服务侧添加白名单,只允许授权的VPC连接。这样管理起来清爽多了。

代码示例:用阿里云CLI创建终端节点服务

# 创建终端节点服务
aliyun privatelink CreateVpcEndpointService \
  --RegionId cn-hangzhou \
  --ServiceResourceType slb \
  --ServiceResourceId lb-2ze7g5h8j9k0l1m2n3o4

# 创建终端节点
aliyun privatelink CreateVpcEndpoint \
  --RegionId cn-hangzhou \
  --ServiceId epsrv-2ze7g5h8j9k0l1m2n3o4 \
  --VpcId vpc-2ze7g5h8j9k0l1m2n3o4 \
  --SecurityGroupId sg-2ze7g5h8j9k0l1m2n3o4

注意:私网连接会产生费用,按小时计费。如果只是测试环境,记得用完就删掉,别白白烧钱。我曾经有个客户,测试环境跑了三个月没关,账单出来吓一跳。

4.3 公网访问控制:该放就放,该堵就堵

有些场景下,设备必须通过公网访问IoT实例,比如设备部署在海外、或者没有专线。这时候公网访问控制就很重要了。

控制策略:

  • IP白名单:只允许特定IP或IP段访问。比如你的设备出口IP是120.55.0.0/16,那就只放行这个段。其他IP一律拒绝。
  • 端口限制:IoT企业版实例默认开放443端口(MQTT over TLS)和1883端口(MQTT over TCP)。我建议只开443,因为TLS加密更安全。1883是明文传输,容易被中间人攻击。
  • HTTPS证书:强制使用TLS 1.2以上版本。有些老设备只支持TLS 1.0,那就要升级固件了。我在项目里遇到过,一批设备因为TLS版本太低连不上,最后只能逐个升级。

配置示例:在IoT实例的安全组里设置公网访问规则

# 允许特定IP访问443端口
aliyun ecs AuthorizeSecurityGroup \
  --RegionId cn-hangzhou \
  --SecurityGroupId sg-2ze7g5h8j9k0l1m2n3o4 \
  --IpProtocol tcp \
  --PortRange 443/443 \
  --SourceCidrIp 120.55.0.0/16 \
  --Policy accept

# 拒绝所有其他公网访问
aliyun ecs AuthorizeSecurityGroup \
  --RegionId cn-hangzhou \
  --SecurityGroupId sg-2ze7g5h8j9k0l1m2n3o4 \
  --IpProtocol tcp \
  --PortRange 443/443 \
  --SourceCidrIp 0.0.0.0/0 \
  --Policy drop

避坑指南:我曾经遇到一个案例,客户把公网访问全放开了,结果被黑客扫描到1883端口,直接暴力破解了设备密码。嗯,从那以后我坚持:公网访问能不开就不开,非要开的话,必须加白名单和TLS加密。

4.4 混合网络方案:私网为主,公网为辅

实际项目中,我推荐用混合方案。大部分设备走私网连接,少数无法走私网的设备(比如海外设备)走公网。这样既保证了核心业务的稳定性,又兼顾了边缘场景的灵活性。

架构示意:

设备类型 连接方式 延迟 安全性 成本
本地IDC设备 私网连接(专线/VPN) <5ms
同区域云上设备 私网连接(VPC对等) <2ms
海外/公网设备 公网(TLS加密) 50-200ms

我的建议:如果你有超过1000台设备需要公网接入,可以考虑用阿里云的全球加速(GA)服务。它能把公网流量优化到内网级别,延迟能降低30%以上。不过成本会高一些,适合对延迟敏感的场景。

好了,网络配置这块就讲这么多。记住一个原则:能走内网就别走公网,能加密就别明文。下一章咱们聊聊设备认证和权限管理,那又是另一个坑多的地方。