12.5.2 工作模式与转发机制对比(NAT/DR/TUN)

本节聚焦LVS三种工作模式的核心机制与适用场景,对比转发路径、网络要求与运维要点,并给出可执行示例、安装与排错思路,便于在Keepalived集成时做出合理选择。

工作模式概述#

LVS通过调度器(Director)将客户端请求转发至后端Real Server,三种模式的差异主要体现在数据包的目的/源地址是否改写、回包路径是否经过调度器、对网络拓扑与服务器配置的要求。

文章图片

安装与基础命令

# CentOS/RHEL
yum -y install ipvsadm keepalived

# Debian/Ubuntu
apt-get update && apt-get -y install ipvsadm keepalived

# 查看LVS规则与统计
ipvsadm -Ln --stats

NAT模式(LVS-NAT)#

转发机制
- 入站:客户端 → 调度器(DNAT改写目标地址为RS)
- 出站:RS → 调度器(SNAT改写源地址为VIP) → 客户端
- 双向流量都经过调度器

sequenceDiagram
  participant C as Client
  participant D as Director
  participant R as RealServer
  C->>D: 请求VIP
  D->>R: DNAT到RS
  R->>D: 回包经Director
  D->>C: SNAT回客户端

示例:NAT模式最小可用配置
- 目标:VIP 10.0.0.100,RS为 10.0.0.11/12,调度器 10.0.0.10

# 调度器:开启转发
sysctl -w net.ipv4.ip_forward=1
# 调度器:创建LVS服务(TCP/80)
ipvsadm -A -t 10.0.0.100:80 -s rr
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.11:80 -m
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.12:80 -m

# 解释:
# -A 新建虚拟服务;-t TCP;-s rr 轮询算法
# -a 添加RS;-m NAT模式(masq)
# RS:网关指向调度器(必须)
ip route add default via 10.0.0.10

优点/缺点/适用场景
- 优点:部署简单、RS无需公网IP
- 缺点:双向转发瓶颈、调度器压力大
- 适用:中小规模、改造成本低

常见排错

# 调度器不转发
sysctl net.ipv4.ip_forward
# RS回包丢失(网关错误)
ip route | head
# LVS规则是否生效
ipvsadm -Ln --stats

DR模式(LVS-DR)#

转发机制
- 入站:客户端 → 调度器(改写目标MAC转发,IP不变) → RS
- 出站:RS → 客户端(直接回包)

sequenceDiagram
  participant C as Client
  participant D as Director
  participant R as RealServer
  C->>D: 请求VIP
  D->>R: 改写MAC转发
  R->>C: 直接回包

关键要求
- VIP需配置在调度器与所有RS上(RS为隐藏/别名)
- ARP抑制:避免RS响应VIP ARP
- 调度器与RS同一二层网络

示例:DR模式最小可用配置

# 调度器:创建LVS服务(DR模式)
ipvsadm -A -t 10.0.0.100:80 -s rr
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.11:80 -g
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.12:80 -g

# -g 表示DR模式(gatewaying)
# RS:配置VIP到lo并抑制ARP(以eth0为例)
ip addr add 10.0.0.100/32 dev lo

cat >/etc/sysctl.d/lvs_dr.conf <<'EOF'
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p /etc/sysctl.d/lvs_dr.conf

优点/缺点/适用场景
- 优点:调度器仅处理入站,高性能
- 缺点:同二层要求、ARP配置复杂
- 适用:数据中心内网、高并发Web/缓存

常见排错

# ARP冲突检查
arp -an | grep 10.0.0.100
# RS是否配置VIP
ip addr show lo | grep 10.0.0.100
# 调度器收包但RS不回包
tcpdump -i eth0 host 10.0.0.100

TUN模式(LVS-TUN)#

转发机制
- 入站:客户端 → 调度器(IP隧道封装) → RS(解封装处理)
- 出站:RS → 客户端(直接回包)

sequenceDiagram
  participant C as Client
  participant D as Director
  participant R as RealServer
  C->>D: 请求VIP
  D->>R: IPIP封装转发
  R->>C: 直接回包

关键要求
- RS支持IPIP隧道
- RS可跨三层网络,不要求同二层

示例:TUN模式最小可用配置

# 调度器:创建TUN服务
ipvsadm -A -t 10.0.0.100:80 -s rr
ipvsadm -a -t 10.0.0.100:80 -r 10.0.1.11:80 -i
ipvsadm -a -t 10.0.0.100:80 -r 10.0.2.12:80 -i

# -i 表示TUN模式(IPIP)
# RS:加载ipip并配置VIP
modprobe ipip
ip addr add 10.0.0.100/32 dev tunl0
ip link set tunl0 up

优点/缺点/适用场景
- 优点:性能接近DR,可跨网段
- 缺点:配置复杂,隧道有开销
- 适用:跨网段/异地高性能集群

常见排错

# ipip模块是否加载
lsmod | grep ipip
# 隧道接口状态
ip link show tunl0
# 抓包验证封装
tcpdump -i eth0 proto 4

模式对比总结#

  • 性能:DR ≈ TUN > NAT
  • 部署复杂度:NAT < DR < TUN
  • 网络要求:NAT(最宽松) / DR(同二层) / TUN(需隧道)
  • 回包路径:NAT经调度器;DR/TUN直接回客户端
  • 扩展性:DR/TUN更适合大规模集群

选型建议#

  • 快速落地、规模较小:优先NAT
  • 同机房高并发服务:优先DR
  • 跨网段/多机房:优先TUN

实战练习#

  1. 使用NAT模式部署2台RS的HTTP服务,访问VIP验证轮询效果,记录ipvsadm -Ln --stats结果。
  2. 将模式切换为DR,完成ARP抑制配置,使用tcpdump验证回包不经过调度器。
  3. 在跨网段环境构建TUN模式,检查proto 4封装流量并截图保存。