网络设备全景
这一课你将能做到
- 一句话说清交换机、路由器、防火墙、负载均衡器各自的转发依据
- 看懂一台服务器的「网卡—网关—出口」路径上每台设备做了什么
- 在云上找到这四类设备的对应物(子网 / 路由表 / 安全组 / SLB)
为什么要学
设备是概念的载体。你以后排障说的每一句话——「查下 MAC 表」「放行下五元组」「看下健康检查」——都对应某台设备的某个模块。云没有消灭设备,只是把它们变成了控制台里的表单。这一课给你设备视角的全景图,并直接映射到本站的 Nginx + K8s + 云上部署场景。另外,「画出你熟悉的公司网络拓扑」几乎是网络岗必考的面试题,答题素材就来自这一课。
先建立图像
PC ── 交换机(L2:按MAC转发) ── 路由器(L3:按IP选路) ── Internet
│
防火墙(L4:按五元组放行 / 拒绝)
│
负载均衡(L4/L7:按策略分发到多台后端)
│
┌────────┼────────┐
web1 web2 web3
四类设备四个关键字:MAC、IP、五元组、分发策略。记住这张图,后面所有排障命令都是在问这四类设备中的某一台。
跟着做
步骤 1:看本机的「路由器视角」
ip route # 内核路由表,等价于路由器的选路依据
ip route get 8.8.8.8 # 模拟查表:这个包从哪个口、哪个网关走
tracepath -n 你的网关IP # 看逐跳
步骤 2:看交换机视角——ARP 与 MAC 表
ip neigh # 本机 ARP 缓存:IP ↔ MAC
真交换机上对应 show mac address-table(学到的 MAC 在哪个口);云上没有直接对应物,被虚拟化封装了,但排查 Pod 间二层问题时,CNI 网桥的转发表就是它的等价物。
步骤 3:看防火墙视角——五元组规则
sudo iptables -L INPUT -n --line-numbers # 本机防火墙规则(顺序即优先级)
# 云上等价物:安全组 / 网络 ACL
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 放行 443
步骤 4:搭一个最小七层负载均衡(Nginx)
upstream backend {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
python3 -m http.server 8081 & python3 -m http.server 8082 &
curl -s localhost | head -3 # 多跑几次,轮流命中两个后端
生产上连续 502 时,先在这个最小实验里复现分发与摘除行为,排除云上变量再查生产配置。
云上对应:NLB(四层,按 IP+端口转发)、SLB/ALB(七层,按 HTTP 规则分流),健康检查配置位置也在各自控制台里。
步骤 5:传统设备 ↔ 云上四件套对照
| 传统设备 | 云上形态 | 你在哪配 |
|---|---|---|
| 交换机 | VPC 子网 / VSwitch | 控制台网络页 |
| 路由器 | VPC 路由表 | 路由表条目 |
| 防火墙 | 安全组 / 网络 ACL | 实例或子网规则 |
| 负载均衡 | SLB / ALB / NLB | 负载均衡控制台 |
讲清楚要点
- 设备分工一句话:交换机看 MAC、路由器看 IP、防火墙看五元组(源 / 目 IP + 端口 + 协议)、负载均衡看转发策略(四层元组或七层内容)。
- 转发本质:路由器 = 查表转发 + TTL 减一 + 重写 MAC;交换机 = 学源 MAC 建表 + 未知单播泛洪。
- 防火墙默认策略决定风格:默认拒绝 + 显式放行(白名单)是企业唯一正解,黑名单永远追着攻击者跑。
- 负载均衡健康检查决定可用性:健康检查配置错了,后端再健康也会被摘除——「服务正常但不通」的一半案例出在这。
- 设备在融合:三层交换、带防火墙模块的路由器、联动 WAF 的 ALB 都是常态;概念分工不变,形态在合体。
- 选型看转发指标不看品牌:交换机看背板带宽与包转发率,路由器看 pps,负载均衡看并发连接数与新建速率(CPS);会话保持、健康检查、SSL 卸载是选 LB 的必问三项。
你可能会懵的地方
-
交换机和路由器到底差在哪? 工作层次与转发依据:二层按 MAC 在同网段内投递,三层按 IP 跨网段选路。家用「路由器」其实是路由器 + 交换机 + AP + NAT 四合一。
-
安全组和防火墙规则一样吗? 逻辑一样(五元组 + 动作),实现是分布式的(云上每块网卡都套着)。差别:安全组大多有状态(回包自动放行),网络 ACL 无状态(进出都要配)。
-
为什么负载均衡必须有健康检查? 不做健康检查就是把流量往坏节点送。K8s 的 readinessProbe 是同一思想在容器层的复刻,探活失败就摘出 Service 后端。
-
NAT 网关和负载均衡是一回事吗? 不是。NAT 改地址,方向是「内 → 外」;LB 分发流量,方向是「外 → 内多后端」。两者常部署在相邻位置但功能独立。
-
WAF 和防火墙什么关系? 传统防火墙看 L4 五元组,WAF 看 L7 内容(SQL 注入、XSS 特征),通常串在 LB 后面,是应用层的门。
错法对照
| 错法 | 问题 | 正解 |
|---|---|---|
| 二层互通的两台机器配不同网段 | ARP 不通,包出不了本网段 | 同广播域同网段,跨段走路由 |
| 只放行业务端口,漏放健康检查源 | 后端被全部摘除 | 明确探测源 IP 并放行 |
| 有状态安全组还手动写回包规则 | 冗余且易漏 | 只写进站,回包自动 |
| 拿交换机直接连两个网段 | 跨网段仍不通 | 必须有三层设备或三层接口 |
| LB 不配超时 | 长连接被频繁掐断 | 按业务设 idle timeout(如 WebSocket 需要更长) |
| 接入交换机拿来当核心用 | 上联瓶颈 + 无冗余 | 核心要求双机与高背板,接入下放到楼层 |
| 汇聚层用普通千兆电口直连 | 带宽与传输距离都受限 | 汇聚以上一律光纤上联 |
卡点急救
- iptables 规则改乱:先
iptables-save备份再动;云机优先用安全组,少在系统里硬写。 - Nginx upstream 502:
ss -tlnp | grep 808x先确认后端监听,再看 Nginx error.log 里的 connect() failed 是 refused(没起)还是 timeout(不通)。 - 云上放行了还不通:检查方向(入 / 出)、规则优先级,以及实例自身 firewalld/ufw 是否叠加拦截。
面试常问
-
二层交换和三层交换的区别? 二层按 MAC 同 VLAN 转发;三层交换机集成路由模块,VLAN 间路由一次查表硬件转发,比传统路由器快,常做汇聚与核心。
-
负载均衡算法有哪些? 轮询 / 加权轮询 / 最少连接 / 源 IP 哈希 / 一致性哈希。会话保持用源 IP 哈希或 Cookie 插入;缓存类场景用一致性哈希减少失效。
-
描述一次请求经过的设备链。 客户端 → ISP → 防火墙(五元组放行)→ LB(卸 TLS、按规则分流)→ 后端集群;回程对称。能说清每一跳改写了什么(MAC 每跳重写、IP 端到端不变、NAT 点在哪)即过关。
自测三问
- 交换机的 MAC 地址表是怎么学出来的?
- 健康检查的判定标准由谁定义,配错了会怎样?
- 安全组和网络 ACL 的「有状态 / 无状态」差别是什么?
小结一句话
四类设备的分工就是四个关键字:MAC、IP、五元组、分发策略——云只是给它们换了身马甲。
延伸
- Nginx 官方文档:HTTP 负载均衡
- 下一课:路由协议——静态路由、OSPF 与 BGP。