云上网络架构设计与排障指南

一、私有网络地址

云上设计第一件事:选网段。阿里云/AWS/腾讯云都支持三个私有网段:

网段 可用 IP 数
10.0.0.0/8 ~1677 万
172.16.0.0/12 ~104 万
192.168.0.0/16 ~6.5 万

我自己的习惯是:生产用 10 段,非生产用 192.168 段。网段即环境,一眼就能看出是哪个环境,省得每次还要去查。

二、VPC 及子网设计

生产和非生产必须在不同 VPC,别想着放一个 VPC 里用子网隔离。安全组、路由表、NAT 网关这些都是 VPC 级别的,共用一个 VPC,迟早会有配置遗漏,到时候也很乱。

2.1 网络区域划分

通常按安全等级分为三个区域:

区域 缩写 包含资源
非信任区 DMZ ECS、公网 SLB 等暴露面服务
容器区 DCZ K8s 集群 Worker 节点、Pod 网段
信任区 TZ MySQL、Redis、RDS 等数据层

三个区域之间通过安全组和 ACL 做访问控制,数据层(TZ)只对容器区(DCZ)开放指定端口。

2.2 子网规划示例

非生产环境 VPC(192.168.0.0/16)

子网 CIDR 用途
DMZ 子网 192.168.1.0/24 ECS / 公网入口
DCZ 子网 192.168.2.0/24 开发/测试 K8s 集群
TZ 子网 192.168.3.0/24 RDS / Redis 实例

生产环境 VPC(10.0.0.0/16)

子网 CIDR 用途
DMZ 子网 10.0.1.0/24 ECS / 公网入口
DCZ 子网 10.0.2.0/24 生产 K8s 集群
TZ 子网 10.0.3.0/24 生产 RDS / Redis

三、安全组、ACL、VPC 对等连接

安全组 网络 ACL VPC 对等连接
作用对象 实例(ECS/RDS) 子网 VPC 与 VPC
典型用途 DMZ 允许公网访问 80/443,TZ 仅允许 DCZ 访问 3306 禁止某外部网段进入 DMZ 子网 打通不同 VPC 的内网通信
状态 有状态(回包自动放行) 无状态(需配回包规则) 路由级联

配置要点:

  • 安全组:TZ 的 RDS 安全组,入站仅允许 DCZ 子网的 3306 端口
  • ACL:DMZ 子网 ACL 做一层粗粒度过滤,安全组做细粒度控制,两层叠加
  • 对等连接:跨 VPC 通信时,双方路由表各加一条,安全组也要放通对端网段

四、一条请求从用户到 Pod 经历了什么

下面是一条生产链路,把每一层拆开来看。

用户
  ⬇️
CDN                    ← 静态资源缓存
  ⬇️
WAF / DDoS 高防        ← 清洗恶意流量
  ⬇️
公网 ELB               ← 负载均衡
  ⬇️
Nginx(两台)          ← 反向代理 / SSL 卸载
  ⬇️
内网 ELB               ← K8s Gateway 入口
  ⬇️
K8s Service
  ⬇️
Pod

CDN

缓存静态资源(图片、CSS、JS),减轻源站压力。如果 CDN 回源链路出问题,运气好能看到 418 之类的状态码,运气不好就是白屏。

WAF/高防

流量清洗层。SQL 注入、XSS、文件包含、命令注入——这些攻击在到达业务层之前就被拦了。需要注意 WAF 回源到 ELB 时要配白名单,只允许 WAF 出口 IP 访问。

公网 ELB

做流量分发。后端 Nginx 和 ELB 如果不在同一网段,需要相互加白名单,别问我怎么知道的。

Nginx

四层/七层转发、限流、SSL 卸载,都在这一层。一般部署两台做高可用。

内网 ELB + K8s

内网 ELB 把流量分到 K8s Service,再转到 Pod。Pod 的 IP 是动态的,所以前面挂一层 Service 做负载。

五、常用排障命令

看连通性

# 能不能通、延迟多少
ping x.x.x.x

# 本机公网 IP
curl cip.cc
curl myip.ipip.net
curl ifconfig.me

# DNS 解析
nslookup example.com
dig example.com

看路由

# 路由表
ip route
route -n

# 到目标的路径
traceroute x.x.x.x
mtr x.x.x.x           # 动态版,持续看延迟变化

# 加/删静态路由
ip route add 10.10.210.0/24 dev wg0
ip route del 10.10.210.0/24 dev wg0

看端口

# 端口是否开放
telnet x.x.x.x 80
nc -zv x.x.x.x 3306

# 本机监听端口
netstat -tlnp
ss -tlnp

# 端口扫描
nmap -p 1-65535 x.x.x.x

看防火墙

# NAT 表规则
iptables -t nat -L -n -v

# Filter 表规则
iptables -L -n

# 删除规则
iptables -t nat -D POSTROUTING 8

抓包

# 抓所有网口进出某 IP
tcpdump -i any -s0 -nvv 'host x.x.x.x'

# 抓具体接口 TCP 包
tcpdump -i eth0 tcp -nvv 'host x.x.x.x'

# 抓 ICMP 包
tcpdump -i any icmp and host x.x.x.x -w /tmp/capture.pcap

# 后台跑
nohup tcpdump -i any -s0 -nvv 'host x.x.x.x' \
  -w /tmp/capture.pcap > /tmp/tcpdump.log 2>&1 &

参数说明:

  • -i any:抓所有网口,包含 lo
  • -s0:抓完整包,不截断
  • -nvv:不反查 DNS,输出更详细

六、网络工具速查

工具 场景
ping 通不通、延迟高不高
dig / nslookup DNS 解析有没有问题
traceroute / mtr 路由路径、哪一跳慢了
curl 测试 HTTP 接口
tcpdump 抓包看实际报文
telnet / nc 端口能不能连上
nmap 扫端口、发现服务
ip / ifconfig 网卡配置
iptables / nftables 防火墙规则
route / ip route 路由表
wireshark 图形化分析 pcap 包

作者:舞鹤Roc
链接:https://www.jianshu.com/p/2b6be73b8337
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容