一、私有网络地址
云上设计第一件事:选网段。阿里云/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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。